summaryrefslogtreecommitdiff
path: root/manual/filesys.texi
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-05-29 22:47:03 +0000
committerUlrich Drepper <drepper@redhat.com>1999-05-29 22:47:03 +0000
commitfb97136391ea0e5a1774c830a7bf08ef004d9d66 (patch)
treede5f6686dae9fc777963177b6434708d201e0855 /manual/filesys.texi
parent0a1752b85ec638051a777cc4175e55011fbadeb5 (diff)
downloadglibc-fb97136391ea0e5a1774c830a7bf08ef004d9d66.tar.gz
Update.
1999-05-29 Ulrich Drepper <drepper@cygnus.com> * manual/filesys.texi: Extend (f)truncate documentation. * manual/llio.texi: Remove duplicate (f)truncate definition. 1999-05-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/stdio.texi (Formatted Output Functions): Mention semantics of snprintf in glibc 2.0. Reported by Ben Pfaff <pfaffben@msu.edu>. 1999-05-29 Ulrich Drepper <drepper@cygnus.com> * include/features.h (__GLIBC_MINOR__): Bump to 2.
Diffstat (limited to 'manual/filesys.texi')
-rw-r--r--manual/filesys.texi58
1 files changed, 55 insertions, 3 deletions
diff --git a/manual/filesys.texi b/manual/filesys.texi
index 5cd7db97fe..21d27f2cbf 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -2526,15 +2526,23 @@ Using these functions on anything other than a regular file gives
@emph{undefined} results. On many systems, such a call will appear to
succeed, without actually accomplishing anything.
+@comment unistd.h
+@comment X/Open
@deftypefun int truncate (const char *@var{filename}, off_t @var{length})
The @code{truncate} function changes the size of @var{filename} to
-@var{length}. If @var{length} is shorter than the previous length, data at
-the end will be lost.
+@var{length}. If @var{length} is shorter than the previous length, data
+at the end will be lost. The file must be writable by the user to
+perform this operation.
If @var{length} is longer, holes will be added to the end. However, some
systems do not support this feature and will leave the file unchanged.
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
+@code{truncate} function is in fact @code{truncate64} and the type
+@code{off_t} has 64 bits which makes it possible to handle files up to
+@math{2^63} bytes in length.
+
The return value is @math{0} for success, or @math{-1} for an error. In
addition to the usual file name errors, the following errors may occur:
@@ -2562,9 +2570,35 @@ The operation was interrupted by a signal.
@end deftypefun
+@comment unistd.h
+@comment Unix98
+@deftypefun int truncate64 (const char *@var{name}, off64_t @var{length})
+This function is similar to the @code{truncate} function. The
+difference is that the @var{length} argument is 64 bits wide even on 32
+bits machines which allows to handle file with a size up to @math{2^63}
+bytes.
+
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
+32 bits machine this function is actually available under the name
+@code{truncate} and so transparently replaces the 32 bits interface.
+@end deftypefun
+
+@comment unistd.h
+@comment POSIX
@deftypefun int ftruncate (int @var{fd}, off_t @var{length})
-This is like @code{truncate}, but it works on a file descriptor @var{fd}.
+This is like @code{truncate}, but it works on a file descriptor @var{fd}
+for an opened file instead of a file name to identify the object. The
+file must be opened for writing to successfully carry out the operation.
+
+The POSIX standard leaves it implementation defined what happens if the
+specified new @var{length} of the file is bigger than the original size.
+The @code{ftruncate} function might simply leave the file alone and do
+nothing or it can increase the size to the desired size. In this later
+case the extended area should be zero-filled. So using @code{ftruncate}
+is no reliable way to increase the file size but if it is possible it is
+probably the fastest way. The function also operates on POSIX shared
+memory segments if these are implemented by the system.
@code{ftruncate} is especially useful in combination with @code{mmap}.
Since the mapped region must have a fixed size one cannot enlarge the
@@ -2572,6 +2606,11 @@ file by writing something beyond the last mapped page. Instead one has
to enlarge the file itself and then remap the file with the new size.
The example below shows how this works.
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
+@code{ftruncate} function is in fact @code{ftruncate64} and the type
+@code{off_t} has 64 bits which makes it possible to handle files up to
+@math{2^63} bytes in length.
+
The return value is @math{0} for success, or @math{-1} for an error. The
following errors may occur:
@@ -2608,6 +2647,19 @@ The operation was interrupted by a signal.
@end deftypefun
+@comment unistd.h
+@comment Unix98
+@deftypefun int ftruncate64 (int @var{id}, off64_t @var{length})
+This function is similar to the @code{ftruncate} function. The
+difference is that the @var{length} argument is 64 bits wide even on 32
+bits machines which allows to handle file with a size up to @math{2^63}
+bytes.
+
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
+32 bits machine this function is actually available under the name
+@code{ftruncate} and so transparently replaces the 32 bits interface.
+@end deftypefun
+
As announced here is a little example how to use @code{ftruncate} in
combination with @code{mmap}: