]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/truncate.2
seteuid.2: ffix
[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.\"
3ca7341f 41.TH TRUNCATE 2 2009-02-28 "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
3ca7341f
MK
59.BR truncate ():
60_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
61.br
62.BR ftruncate ():
cc4615cc
MK
63_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE\ >=\ 200112L
64.ad b
fea681da
MK
65.SH DESCRIPTION
66The
310b7919 67.BR truncate ()
fea681da 68and
310b7919 69.BR ftruncate ()
fea681da
MK
70functions cause the regular file named by
71.I path
72or referenced by
73.I fd
74to be truncated to a size of precisely
75.I length
76bytes.
77.LP
c13182ef 78If the file previously was larger than this size, the extra data is lost.
fea681da 79If the file previously was shorter, it is extended, and
f81fb444 80the extended part reads as null bytes (\(aq\\0\(aq).
fea681da 81.LP
1e568304 82The file offset is not changed.
fea681da 83.LP
c13182ef 84If the size changed, then the st_ctime and st_mtime fields
310b7919
MK
85(respectively, time of last status change and
86time of last modification; see
87.BR stat (2))
c13182ef 88for the file are updated,
310b7919 89and the set-user-ID and set-group-ID permission bits may be cleared.
fea681da
MK
90.LP
91With
310b7919 92.BR ftruncate (),
fea681da 93the file must be open for writing; with
310b7919 94.BR truncate (),
fea681da
MK
95the file must be writable.
96.SH "RETURN VALUE"
c13182ef
MK
97On success, zero is returned.
98On error, \-1 is returned, and
fea681da
MK
99.I errno
100is set appropriately.
101.SH ERRORS
102For
e511ffb6 103.BR truncate ():
fea681da
MK
104.TP
105.B EACCES
106Search permission is denied for a component of the path prefix,
107or the named file is not writable by the user.
108(See also
ad7cc990 109.BR path_resolution (7).)
fea681da
MK
110.TP
111.B EFAULT
112.I Path
113points outside the process's allocated address space.
114.TP
115.B EFBIG
116The argument
117.I length
118is larger than the maximum file size. (XSI)
119.TP
120.B EINTR
121A signal was caught during execution.
122.TP
123.B EINVAL
124The argument
125.I length
126is negative or larger than the maximum file size.
127.TP
128.B EIO
129An I/O error occurred updating the inode.
130.TP
3ade1aa9
MK
131.B EINTR
132While blocked waiting to complete,
133the call was interrupted by a signal handler; see
134.BR fcntl (2)
135and
136.BR signal (7).
137.TP
fea681da
MK
138.B EISDIR
139The named file is a directory.
140.TP
141.B ELOOP
142Too many symbolic links were encountered in translating the pathname.
143.TP
144.B ENAMETOOLONG
145A component of a pathname exceeded 255 characters,
2d7195b8 146or an entire pathname exceeded 1023 characters.
fea681da
MK
147.TP
148.B ENOENT
149The named file does not exist.
150.TP
151.B ENOTDIR
152A component of the path prefix is not a directory.
153.TP
5b548b31 154.B EPERM
7a5097a1 155.\" This happens for at least MSDOS and VFAT file systems
5b548b31
MK
156.\" on kernel 2.6.13
157The underlying file system does not support extending
158a file beyond its current size.
159.TP
fea681da
MK
160.B EROFS
161The named file resides on a read-only file system.
162.TP
163.B ETXTBSY
164The file is a pure procedure (shared text) file that is being executed.
165.PP
166For
310b7919 167.BR ftruncate ()
fea681da
MK
168the same errors apply, but instead of things that can be wrong with
169.IR path ,
3ade1aa9 170we now have things that can be wrong with the file descriptor,
fea681da
MK
171.IR fd :
172.TP
173.B EBADF
fea681da
MK
174.I fd
175is not a valid descriptor.
176.TP
177.BR EBADF " or " EINVAL
fea681da
MK
178.I fd
179is not open for writing.
180.TP
181.B EINVAL
fea681da
MK
182.I fd
183does not reference a regular file.
184.SH "CONFORMING TO"
97c1eac8
MK
1854.4BSD, SVr4, POSIX.1-2001 (these calls first appeared in 4.2BSD).
186.\" POSIX.1-1996 has
187.\" .BR ftruncate ().
188.\" POSIX.1-2001 also has
189.\" .BR truncate (),
190.\" as an XSI extension.
191.\" .LP
192.\" SVr4 documents additional
193.\" .BR truncate ()
194.\" error conditions EMFILE, EMULTIHP, ENFILE, ENOLINK. SVr4 documents for
195.\" .BR ftruncate ()
196.\" an additional EAGAIN error condition.
fea681da
MK
197.SH NOTES
198The above description is for XSI-compliant systems.
199For non-XSI-compliant systems, the POSIX standard allows
d9bfdb9c 200two behaviors for
310b7919 201.BR ftruncate ()
fea681da
MK
202when
203.I length
204exceeds the file length
205(note that
310b7919 206.BR truncate ()
fea681da
MK
207is not specified at all in such an environment):
208either returning an error, or extending the file.
c13182ef
MK
209Like most Unix implementations, Linux follows the XSI requirement
210when dealing with native file systems.
24b74457 211However, some nonnative file systems do not permit
5b548b31 212.BR truncate ()
c13182ef 213and
5b548b31
MK
214.BR ftruncate ()
215to be used to extend a file beyond its current length:
216a notable example on Linux is VFAT.
fea681da
MK
217.\" At the very least: OSF/1, Solaris 7, and FreeBSD conform, mtk, Jan 2002
218.SH "SEE ALSO"
219.BR open (2),
ad7cc990
MK
220.BR stat (2),
221.BR path_resolution (7)