summaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/futimes.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/futimes.c
parenta1ede3a40249ea2efe54e182998bd8519e37a31e (diff)
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/futimes.c')
-rw-r--r--sysdeps/mach/hurd/futimes.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/sysdeps/mach/hurd/futimes.c b/sysdeps/mach/hurd/futimes.c
index cc2a68f641..1b521e3e51 100644
--- a/sysdeps/mach/hurd/futimes.c
+++ b/sysdeps/mach/hurd/futimes.c
@@ -22,29 +22,29 @@
#include <hurd.h>
#include <hurd/fd.h>
+#include "utime-helper.c"
+
/* Change the access time of FD to TVP[0] and
the modification time of FD to TVP[1]. */
int
__futimes (int fd, 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];
+ struct timespec atime, mtime;
error_t err;
- if (tvp == NULL)
+ utime_ts_from_tval (tvp, &atime, &mtime);
+
+ err = HURD_DPORT_USE (fd, __file_utimens (port, atime, mtime));
+
+ if (err == EMIG_BAD_ID || err == EOPNOTSUPP)
{
- /* 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;
+ time_value_t atim, mtim;
+
+ utime_tvalue_from_tval (tvp, &atim, &mtim);
+
+ err = HURD_DPORT_USE (fd, __file_utimes (port, atim, mtim));
}
- err = HURD_DPORT_USE (fd, __file_utimes (port, u[0].tvt, u[1].tvt));
return err ? __hurd_dfail (fd, err) : 0;
}
weak_alias (__futimes, futimes)