summaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/lutimes.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/lutimes.c
parenta1ede3a40249ea2efe54e182998bd8519e37a31e (diff)
downloadglibc-bbe762d1e596d7f5a1cd560a229387cb856916e0.tar.gz
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/lutimes.c')
-rw-r--r--sysdeps/mach/hurd/lutimes.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/sysdeps/mach/hurd/lutimes.c b/sysdeps/mach/hurd/lutimes.c
index e6b0f04172..23b00c1739 100644
--- a/sysdeps/mach/hurd/lutimes.c
+++ b/sysdeps/mach/hurd/lutimes.c
@@ -22,33 +22,22 @@
#include <hurd.h>
#include <fcntl.h>
+#include "utime-helper.c"
+
/* Change the access time of FILE to TVP[0] and
the modification time of FILE to TVP[1]. */
int
__lutimes (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, O_NOLINK, 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);