copyediting for Usenix manuals
[unix-history] / usr / src / lib / libc / sys / lseek.2
.\" Copyright (c) 1980, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" %sccs.include.redist.man%
.\"
.\" @(#)lseek.2 8.2 (Berkeley) %G%
.\"
.Dd
.Dt LSEEK 2
.Os BSD 4
.Sh NAME
.Nm lseek
.Nd reposition read/write file offset
.Sh SYNOPSIS
.Fd #include <unistd.h>
.Ft off_t
.Fn lseek "int fildes" "off_t offset" "int whence"
.Sh DESCRIPTION
The
.Fn lseek
function repositions the offset of the file descriptor
.Fa fildes
to the
argument
.Fa offset
according to the directive
.Fa whence.
The argument
.Fa fildes
must be an open
file descriptor.
.Fn Lseek
repositions the file pointer
.Fa fildes
as follows:
.Bl -item -offset indent
.It
If
.Fa whence
is
.Dv SEEK_SET ,
the offset is set to
.Fa offset
bytes.
.It
If
.Fa whence
is
.Dv SEEK_CUR ,
the offset is set to its current location plus
.Fa offset
bytes.
.It
If
.Fa whence
is
.Dv SEEK_END ,
the offset is set to the size of the
file plus
.Fa offset
bytes.
.El
.Pp
The
.Fn lseek
function 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 actualy written into the gap).
.Pp
Some devices are incapable of seeking. The value of the pointer
associated with such a device is undefined.
.Sh RETURN VALUES
Upon successful completion,
.Fn lseek
returns the resulting offset location as measured in bytes from the
begining of the file.
Otherwise,
a value of -1 is returned and
.Va errno
is set to indicate
the error.
.Sh ERRORS
.Fn Lseek
will fail and the file pointer will remain unchanged if:
.Bl -tag -width [EINVAL]
.It Bq Er EBADF
.Em Fildes
is not an open file descriptor.
.It Bq Er ESPIPE
.Em Fildes
is associated with a pipe, socket, or FIFO.
.It Bq Er EINVAL
.Fa Whence
is not a proper value.
.El
.Sh SEE ALSO
.Xr dup 2 ,
.Xr open 2
.Sh BUGS
This document's use of
.Fa whence
is incorrect English, but is maintained for historical reasons.
.Sh STANDARDS
The
.Fn lseek
function
conforms to IEEE Std 1003.1-1988
.Pq Dq Tn POSIX .