about summary refs log tree commit diff
path: root/sysdeps/mach/hurd/utimes.c
diff options
context:
space:
mode:
authorFlávio Cruz <flaviocruz@gmail.com>2018-03-05 23:25:00 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-03-05 23:30:50 +0100
commitbbe762d1e596d7f5a1cd560a229387cb856916e0 (patch)
treec1414f343ce2148395308ab455353484b833f761 /sysdeps/mach/hurd/utimes.c
parenta1ede3a40249ea2efe54e182998bd8519e37a31e (diff)
downloadglibc-bbe762d1e596d7f5a1cd560a229387cb856916e0.tar.gz
glibc-bbe762d1e596d7f5a1cd560a229387cb856916e0.tar.xz
glibc-bbe762d1e596d7f5a1cd560a229387cb856916e0.zip
hurd: Define and pass UTIME_NOW and UTIME_OMIT to new file_utimens RPC
	* sysdeps/mach/hurd/bits/stat.h [__USE_ATFILE] (UTIME_NOW,
	UTIME_OMIT): New macros.
	* sysdeps/mach/hurd/futimens.c (__futimens): Try to use __file_utimens
	before reverting to converting time spec to time value and calling
	__file_utimes.
	* sysdeps/mach/hurd/utime-helper.c: New file.
	* sysdeps/mach/hurd/futimes.c: Include "utime-helper.c".
	(__futimes): Try to use utime_ts_from_tval and __file_utimens before
	reverting to utime_tvalue_from_tval and __file_utimes.
	* sysdeps/mach/hurd/lutimes.c: Include "utime-helper.c".
	(__lutimes): Just call hurd_futimens after lookup.
	* sysdeps/mach/hurd/utimes.c: Likewise.
Diffstat (limited to 'sysdeps/mach/hurd/utimes.c')
-rw-r--r--sysdeps/mach/hurd/utimes.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/sysdeps/mach/hurd/utimes.c b/sysdeps/mach/hurd/utimes.c
index 2f7c8c228d..25e47539fe 100644
--- a/sysdeps/mach/hurd/utimes.c
+++ b/sysdeps/mach/hurd/utimes.c
@@ -20,33 +20,22 @@
 #include <stddef.h>
 #include <hurd.h>
 
+#include "utime-helper.c"
+
 /* Change the access time of FILE to TVP[0] and
    the modification time of FILE to TVP[1].  */
 int
 __utimes (const char *file, const struct timeval tvp[2])
 {
-  union tv
-  {
-    struct timeval tv;
-    time_value_t tvt;
-  };
-  const union tv *u = (const union tv *) tvp;
-  union tv nulltv[2];
   error_t err;
   file_t port;
 
-  if (tvp == NULL)
-    {
-      /* Setting the number of microseconds to `-1' tells the
-         underlying filesystems to use the current time.  */
-      nulltv[0].tvt.microseconds = nulltv[1].tvt.microseconds = -1;
-      u = nulltv;
-    }
-
   port = __file_name_lookup (file, 0, 0);
   if (port == MACH_PORT_NULL)
     return -1;
-  err = __file_utimes (port, u[0].tvt, u[1].tvt);
+
+  err = hurd_futimens (port, tvp);
+
   __mach_port_deallocate (__mach_task_self (), port);
   if (err)
     return __hurd_fail (err);