diff options
author | Roland McGrath <roland@hack.frob.com> | 2013-05-06 14:56:13 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2013-05-06 14:56:13 -0700 |
commit | c74058300c76d7afa316453c03e5776b3a9155a8 (patch) | |
tree | 5a349eea3a6f47fcaae863bc91bc2260fb22d886 | |
parent | 9ea3513c917e04ba6cb4a6ce0b9d455f566a1d3f (diff) | |
download | glibc-c74058300c76d7afa316453c03e5776b3a9155a8.tar glibc-c74058300c76d7afa316453c03e5776b3a9155a8.tar.gz glibc-c74058300c76d7afa316453c03e5776b3a9155a8.tar.bz2 glibc-c74058300c76d7afa316453c03e5776b3a9155a8.zip |
Clean up POSIX.1 implementation of truncate.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/posix/truncate.c | 17 |
2 files changed, 17 insertions, 7 deletions
@@ -1,3 +1,10 @@ +2013-05-06 Roland McGrath <roland@hack.frob.com> + + * sysdeps/posix/truncate.c (__truncate): Renamed from truncate. + Call __ names for open, ftruncate, and close. + For LENGTH==0 case, just use O_TRUNC rather than calling ftruncate. + (truncate): Define as weak alias. + 2013-05-06 Joseph Myers <joseph@codesourcery.com> * math/gen-libm-test.pl (parse_args): Initialize x before each diff --git a/sysdeps/posix/truncate.c b/sysdeps/posix/truncate.c index ae29be8106..7ef1400eb5 100644 --- a/sysdeps/posix/truncate.c +++ b/sysdeps/posix/truncate.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1995-2013 Free Software Foundation, Inc. +/* Truncate a file given by name. Generic POSIX.1 version. + Copyright (C) 1995-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,20 +23,22 @@ /* Truncate PATH to LENGTH bytes. */ int -truncate (path, length) - const char *path; - off_t length; +__truncate (const char *path, off_t length) { int fd, ret, save; - fd = open (path, O_WRONLY); + fd = __open (path, O_WRONLY | (length == 0 ? O_TRUNC : 0)); if (fd < 0) return -1; - ret = ftruncate (fd, length); + if (length == 0) + ret = 0; + else + ret = __ftruncate (fd, length); save = errno; - (void) close (fd); + (void) __close (fd); if (ret < 0) __set_errno (save); return ret; } +weak_alias (__truncate, truncate) |