truncate, ftruncate - truncate a file to a specified length
int truncate(const char *path, size_t length));
int ftruncate(int fd, size_t length));
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. With ftruncate, the file must be open for writing.
On success, zero is returned. On error, -1 is returned, and
errno is set appropriately.
ENOTDIR A component of the path prefix is not a directory.
EINVAL The pathname contains a character with the high-
order bit set.
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
EACCES The named file is not writable by the user.
ELOOP Too many symbolic links were encountered in
translating 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.
EFAULT Path points outside the process's allocated address
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.
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 ftruncate documents additional EAGAIN and
EINTR error conditions.
These calls should be generalized to allow ranges of bytes
in a file to be discarded.