easy way to determine if a stream or fd is seekable

Alexander Best arundel at freebsd.org
Sun Nov 20 14:21:32 UTC 2011


On Sun Nov 20 11, Alexander Best wrote:
> On Sun Nov 20 11, Alexander Best wrote:
> > On Sat Nov 19 11, Tim Kientzle wrote:
> > > 
> > > On Nov 18, 2011, at 12:31 PM, Alexander Best wrote:
> > > 
> > > > On Fri Nov 18 11, Tim Kientzle wrote:
> > > >> 

[snip]

> 
> so...any thoughts regarding this man page patch?

here's a revised patch.

cheers.
alex

> 
> cheers.
> alex
> 
> i was also wondering, wether the limits of lseek() - being, it cannot guarantee
> that s seek operation was actually successful - also apply to all of the
> libc functions in the fseek(3) man page, being:
> 
> fseek(), ftell(), rewind(), fgetpos(), fsetpos(), fseeko() and ftello().
> 
> if that is the case, a similar not should also be added to the fseek(3) man
> page, imo.
> 
> > 

[snip]

-------------- next part --------------
diff --git a/lib/libc/sys/lseek.2 b/lib/libc/sys/lseek.2
index 874c523..76102cd 100644
--- a/lib/libc/sys/lseek.2
+++ b/lib/libc/sys/lseek.2
@@ -28,7 +28,7 @@
 .\"     @(#)lseek.2	8.3 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\"
-.Dd April 5, 2007
+.Dd November 20, 2011
 .Dt LSEEK 2
 .Os
 .Sh NAME
@@ -113,10 +113,9 @@ 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).
-.Pp
-Some devices are incapable of seeking.
-The value of the pointer
-associated with such a device is undefined.
+However, the
+.Fn lseek
+system call does not, by itself, extend the size of a file.
 .Pp
 A
 .Qq hole
@@ -197,12 +196,28 @@ is associated with a pipe, socket, or FIFO.
 The
 .Fn lseek
 system call is expected to conform to
-.St -p1003.1-90 .
+.St -p1003.1-2008 .
+.Pp
+The
+.Dv SEEK_HOLE
+and
+.Dv SEEK_DATA
+directives, along with the
+.Er ENXIO
+error, are extensions to the specification.
 .Sh HISTORY
 The
 .Fn lseek
 function appeared in
 .At v7 .
+.Sh CAVEATS
+If the
+.Fn lseek
+system call is operating on a device, which is incapable of seeking,
+it will request the seek operation and complete successfully.
+The value of the pointer associated with such a device is undefined.
+Device types which can be incapable of seeking include,
+but are not limited to, tape drives.
 .Sh BUGS
 This document's use of
 .Fa whence


More information about the freebsd-hackers mailing list