]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/truncate.2
timeradd.3: Note that on some systems, <=, >=, == don't work for timercmp()
[thirdparty/man-pages.git] / man2 / truncate.2
CommitLineData
fea681da
MK
1.\" Copyright (c) 1983, 1991 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\" notice, this list of conditions and the following disclaimer in the
11.\" documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\" must display the following acknowledgement:
14.\" This product includes software developed by the University of
15.\" California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\" may be used to endorse or promote products derived from this software
18.\" without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\" @(#)truncate.2 6.9 (Berkeley) 3/10/91
33.\"
34.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
35.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
36.\" Modified 1998-12-21 by Andries Brouwer <aeb@cwi.nl>
c11b1abf 37.\" Modified 2002-01-07 by Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 38.\" Modified 2002-04-06 by Andries Brouwer <aeb@cwi.nl>
c11b1abf 39.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 40.\"
3ade1aa9 41.TH TRUNCATE 2 2008-07-04 "Linux" "Linux Programmer's Manual"
fea681da
MK
42.SH NAME
43truncate, ftruncate \- truncate a file to a specified length
44.SH SYNOPSIS
45.B #include <unistd.h>
46.br
47.B #include <sys/types.h>
48.sp
49.BI "int truncate(const char *" path ", off_t " length );
50.br
51.BI "int ftruncate(int " fd ", off_t " length );
cc4615cc
MK
52.sp
53.in -4n
54Feature Test Macro Requirements for glibc (see
55.BR feature_test_macros (7)):
56.in
57.ad l
58.sp
59.BR getdtablesize ():
60_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE\ >=\ 200112L
61.ad b
fea681da
MK
62.SH DESCRIPTION
63The
310b7919 64.BR truncate ()
fea681da 65and
310b7919 66.BR ftruncate ()
fea681da
MK
67functions cause the regular file named by
68.I path
69or referenced by
70.I fd
71to be truncated to a size of precisely
72.I length
73bytes.
74.LP
c13182ef 75If the file previously was larger than this size, the extra data is lost.
fea681da 76If the file previously was shorter, it is extended, and
f81fb444 77the extended part reads as null bytes (\(aq\\0\(aq).
fea681da 78.LP
1e568304 79The file offset is not changed.
fea681da 80.LP
c13182ef 81If the size changed, then the st_ctime and st_mtime fields
310b7919
MK
82(respectively, time of last status change and
83time of last modification; see
84.BR stat (2))
c13182ef 85for the file are updated,
310b7919 86and the set-user-ID and set-group-ID permission bits may be cleared.
fea681da
MK
87.LP
88With
310b7919 89.BR ftruncate (),
fea681da 90the file must be open for writing; with
310b7919 91.BR truncate (),
fea681da
MK
92the file must be writable.
93.SH "RETURN VALUE"
c13182ef
MK
94On success, zero is returned.
95On error, \-1 is returned, and
fea681da
MK
96.I errno
97is set appropriately.
98.SH ERRORS
99For
e511ffb6 100.BR truncate ():
fea681da
MK
101.TP
102.B EACCES
103Search permission is denied for a component of the path prefix,
104or the named file is not writable by the user.
105(See also
ad7cc990 106.BR path_resolution (7).)
fea681da
MK
107.TP
108.B EFAULT
109.I Path
110points outside the process's allocated address space.
111.TP
112.B EFBIG
113The argument
114.I length
115is larger than the maximum file size. (XSI)
116.TP
117.B EINTR
118A signal was caught during execution.
119.TP
120.B EINVAL
121The argument
122.I length
123is negative or larger than the maximum file size.
124.TP
125.B EIO
126An I/O error occurred updating the inode.
127.TP
3ade1aa9
MK
128.B EINTR
129While blocked waiting to complete,
130the call was interrupted by a signal handler; see
131.BR fcntl (2)
132and
133.BR signal (7).
134.TP
fea681da
MK
135.B EISDIR
136The named file is a directory.
137.TP
138.B ELOOP
139Too many symbolic links were encountered in translating the pathname.
140.TP
141.B ENAMETOOLONG
142A component of a pathname exceeded 255 characters,
2d7195b8 143or an entire pathname exceeded 1023 characters.
fea681da
MK
144.TP
145.B ENOENT
146The named file does not exist.
147.TP
148.B ENOTDIR
149A component of the path prefix is not a directory.
150.TP
5b548b31
MK
151.B EPERM
152.\" This happens for at leas MSDOS and VFAT fil systems
153.\" on kernel 2.6.13
154The underlying file system does not support extending
155a file beyond its current size.
156.TP
fea681da
MK
157.B EROFS
158The named file resides on a read-only file system.
159.TP
160.B ETXTBSY
161The file is a pure procedure (shared text) file that is being executed.
162.PP
163For
310b7919 164.BR ftruncate ()
fea681da
MK
165the same errors apply, but instead of things that can be wrong with
166.IR path ,
3ade1aa9 167we now have things that can be wrong with the file descriptor,
fea681da
MK
168.IR fd :
169.TP
170.B EBADF
fea681da
MK
171.I fd
172is not a valid descriptor.
173.TP
174.BR EBADF " or " EINVAL
fea681da
MK
175.I fd
176is not open for writing.
177.TP
178.B EINVAL
fea681da
MK
179.I fd
180does not reference a regular file.
181.SH "CONFORMING TO"
97c1eac8
MK
1824.4BSD, SVr4, POSIX.1-2001 (these calls first appeared in 4.2BSD).
183.\" POSIX.1-1996 has
184.\" .BR ftruncate ().
185.\" POSIX.1-2001 also has
186.\" .BR truncate (),
187.\" as an XSI extension.
188.\" .LP
189.\" SVr4 documents additional
190.\" .BR truncate ()
191.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
192.\" .BR ftruncate ()
193.\" an additional EAGAIN error condition.
fea681da
MK
194.SH NOTES
195The above description is for XSI-compliant systems.
196For non-XSI-compliant systems, the POSIX standard allows
d9bfdb9c 197two behaviors for
310b7919 198.BR ftruncate ()
fea681da
MK
199when
200.I length
201exceeds the file length
202(note that
310b7919 203.BR truncate ()
fea681da
MK
204is not specified at all in such an environment):
205either returning an error, or extending the file.
c13182ef
MK
206Like most Unix implementations, Linux follows the XSI requirement
207when dealing with native file systems.
5b548b31
MK
208However, some non-native file systems do not permit
209.BR truncate ()
c13182ef 210and
5b548b31
MK
211.BR ftruncate ()
212to be used to extend a file beyond its current length:
213a notable example on Linux is VFAT.
fea681da
MK
214.\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002
215.SH "SEE ALSO"
216.BR open (2),
ad7cc990
MK
217.BR stat (2),
218.BR path_resolution (7)