]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(utime_null): No need to call ftruncate if the file was
authorJim Meyering <jim@meyering.net>
Mon, 6 Jan 2003 12:58:35 +0000 (12:58 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 6 Jan 2003 12:58:35 +0000 (12:58 +0000)
nonempty.  Patch by Bruno Haible.
(utime_null): Use SAFE_READ_ERROR.

lib/utime.c

index 6ed14ef30d0ae5f17812b8bf30cd418516d3327a..f5507cbcd84ccb6250b76ff0bacb5dfec2a5da97 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2001-2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
@@ -58,14 +58,14 @@ utime_null (const char *file)
   fd = open (file, O_RDWR);
   if (fd < 0
       || fstat (fd, &sb) < 0
-      || safe_read (fd, &c, sizeof c) < 0
+      || safe_read (fd, &c, sizeof c) == SAFE_READ_ERROR
       || lseek (fd, (off_t) 0, SEEK_SET) < 0
       || full_write (fd, &c, sizeof c) != sizeof c
       /* Maybe do this -- it's necessary on SunOS4.1.3 with some combination
         of patches, but that system doesn't use this code: it has utimes.
         || fsync (fd) < 0
       */
-      || ftruncate (fd, st.st_size) < 0
+      || (st.st_size == 0 && ftruncate (fd, st.st_size) < 0)
       || close (fd) < 0)
     status = -1;
   return status;