diff options
Diffstat (limited to 'sysdeps/posix/truncate.c')
-rw-r--r-- | sysdeps/posix/truncate.c | 17 |
1 files changed, 10 insertions, 7 deletions
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) |