On Wed Feb 23 11, Garrett Cooper wrote:
> On Feb 22, 2011, at 9:51 AM, John Baldwin wrote:
>
> > On Tuesday, February 22, 2011 11:46:05 am Garrett Cooper wrote:
> >> (Please bottom post)
> >>
> >> On Tue, Feb 22, 2011 at 8:31 AM, Andrew Duane <[email protected]> wrote:
> >>> I thought seeking past EOF was valid; writing something creates a file
> > with a hole in it. I always assumed that was standard semantics.
> >>
> >> That's with SET_HOLE/SET_DATA though, correct? If so, outside of
> >> that functionality I would assume relatively standard POSIX semantics.
> >
> > Err, no, you can always seek past EOF and then call write(2) to extend a
> > file
> > (it does an implicit ftruncate(2)). SEEK_HOLE and SEEK_DATA are different,
> > they are just used to discover sparse regions within a file.
on the other hand POSIX says:
"The behavior of lseek() on devices which are incapable of seeking is
implementation-defined.
The value of the file offset associated with such a device is undefined."
...if we define /dev/{zero,null} as incapable of seeking the current
implementation should be ok.
> >
> > From the manpage:
> >
> > The lseek() system call allows the file offset to be set beyond the end
> > of the existing end-of-file of the file. If data is later written at
> > this point, subsequent reads of the data in the gap return bytes of
> > zeros
> > (until data is actually written into the gap).
>
> You're correct. Linux (Fedora 13) isn't POSIX compliant (this is from
> the official POSIX text):
>
> The lseek ( ) function shall allow the file offset to be set beyond the end
> of the existing data in the file. If data is later written at this point,
> subsequent reads of data in the gap shall return bytes with the value 0 until
> data is actually written into the gap.
>
> Thanks!
> -Garrett
--
a13x
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"