Open System Services System Calls Reference Manual (G06.25+, H06.03+)

System Functions (f - i) ftruncate(2)
NAME
ftruncate - Changes le length
LIBRARY
G-series native OSS processes: system library
H-series OSS processes: implicit libraries
SYNOPSIS
#include <sys/types.h>
int ftruncate(
int ledes,
off_t length);
PARAMETERS
filedes Species the descriptor of a le that must be open for writing.
length Species the new length of the le in bytes.
DESCRIPTION
The ftruncate() function changes the length of a le to the size, in bytes, specied by the length
parameter.
If the new length is less than the previous length, the ftruncate() function removes all data
beyond length bytes from the specied le. All le data between the new EOF (end-of-le) and
the previous EOF is discarded.
If the new length is greater than the previous length, zeros are added between the previous EOF
and the new EOF. If the new length would exceed the le size limit for the calling process, the
call to ftruncate() fails, and errno is set to [EINVAL].
Full blocks are returned to the leset so that they can be used again, and the le size is changed
to the value of the length parameter.
The ftruncate() function has no effect on FIFO special les. This function does not modify the
seek pointer of the le. If ftruncate( ) is called for a FIFO, the call fails, and errno is set to
[EINVAL].
Upon successful completion, the ftruncate() function marks the st_ctime and st_mtime elds of
the le for update. If the le is a regular le, the ftruncate( ) function clears the S_ISUID and
S_ISGID attributes of the le.
RETURN VALUES
Upon successful completion, the value 0 (zero) is returned. Otherwise, the value -1 is returned
and errno is set to indicate the error.
ERRORS
If any of these conditions occurs, the ftruncate( ) function sets errno to the corresponding value:
[EBADF] The ledes parameter does not specify a valid le descriptor open for writing.
[EFBIG] The new le size would exceed the processs le size limit or the maximum le
size.
[EINTR] The function was interrupted by a signal before any data arrived.
[EINVAL] One of these conditions occurred:
The le pointed to by the ledes parameter is not a regular le.
The value specied for the length parameter was less than 0 (zero).
527186-003 Hewlett-Packard Company 333