]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Include utimens.h.
authorJim Meyering <jim@meyering.net>
Sat, 9 Aug 2003 17:48:41 +0000 (17:48 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 9 Aug 2003 17:48:41 +0000 (17:48 +0000)
(copy_internal): Set file timestamps with utimens, not utime.

src/copy.c

index 7a3ae3396437686e7d7d7a9bc127eabc266f9da7..607e6984042c59c84c21e3bcabe1b7fc8f015032 100644 (file)
@@ -40,6 +40,7 @@
 #include "path-concat.h"
 #include "quote.h"
 #include "same.h"
+#include "utimens.h"
 #include "xreadlink.h"
 
 #define DO_CHOWN(Chown, File, New_uid, New_gid)                                \
@@ -1523,16 +1524,14 @@ copy_internal (const char *src_path, const char *dst_path,
 
   if (x->preserve_timestamps)
     {
-      struct utimbuf utb;
+      struct timespec timespec[2];
 
-      /* There's currently no interface to set file timestamps with
-        better than 1-second resolution, so discard any fractional
-        part of the source timestamp.  */
+      timespec[0].tv_sec = src_sb.st_atime;
+      timespec[0].tv_nsec = TIMESPEC_NS (src_sb.st_atim);
+      timespec[1].tv_sec = src_sb.st_mtime;
+      timespec[1].tv_nsec = TIMESPEC_NS (src_sb.st_mtim);
 
-      utb.actime = src_sb.st_atime;
-      utb.modtime = src_sb.st_mtime;
-
-      if (utime (dst_path, &utb))
+      if (utimens (dst_path, timespec))
        {
          error (0, errno, _("preserving times for %s"), quote (dst_path));
          if (x->require_preserve)