truncate,  ftruncate  -  truncate  a  file  to a specified
       length


SYNOPSIS

       #include <unistd.h>

       int truncate(const char *path, off_t length);
       int ftruncate(int fd, off_t length);


DESCRIPTION

       Truncate causes the file named by path or referenced by fd
       to  be  truncated to at most length bytes in size.  If the
       file previously was larger than this size, the extra  data
       is  lost.   If  the  file  previously  was  shorter, it is
       unspecified whether the  file  is  left  unchanged  or  is
       extended.  In  the  latter case the extended part reads as
       zero bytes.  With ftruncate, the file  must  be  open  for
       writing.


RETURN VALUE

       On  success,  zero is returned.  On error, -1 is returned,
       and errno is set appropriately.


ERRORS

       For truncate:

       ENOTDIR
              A component of the path prefix is not a  directory.

       ENAMETOOLONG
              A  component of a pathname exceeded 255 characters,
              or an entire path name exceeded 1023 characters.

       ENOENT The named file does not exist.

       EACCES Search permission is denied for a component of  the
              path prefix.

       EACCES The named file is not writable by the user.

       ELOOP  Too  many symbolic links were encountered in trans­
              lating the pathname.

       EISDIR The named file is a directory.

       EROFS  The named file resides on a read-only file  system.

       ETXTBSY
              The  file  is  a  pure procedure (shared text) file
              that is being executed.

       EIO    An I/O error occurred updating the inode.
              space.

       For ftruncate:

       EBADF  The fd is not a valid descriptor.

       EINVAL The fd references a socket, not a file.

       EINVAL The fd is not open for writing.


CONFORMING TO

       4.4BSD,  SVr4  (these function calls first appeared in BSD
       4.2).  SVr4 documents additional truncate error conditions
       EINTR,  EMFILE,  EMULTIHP,  ENAMETOOLONG, ENFILE, ENOLINK,
       ENOTDIR.  SVr4 documents for ftruncate  additional  EAGAIN
       and  EINTR  error conditions.  POSIX has ftruncate but not
       truncate.

       The POSIX standard does not define  what  happens  if  the
       file has fewer bytes than length.


BUGS

       These calls should be generalized to allow ranges of bytes
       in a file to be discarded.


SEE ALSO

       open(2)