X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Futimens.c;h=2df6fc71d11537811f6c0e286e657300e7b27dac;hb=da13c1c0e6980f4838090be9e775b4d5c35662b7;hp=ae006c6089c33462309b4dbf38c1f4742522e65c;hpb=04ea1375c55aa67df4e7fc61dbb534111767f3b6;p=libguestfs.git diff --git a/daemon/utimens.c b/daemon/utimens.c index ae006c6..2df6fc7 100644 --- a/daemon/utimens.c +++ b/daemon/utimens.c @@ -33,18 +33,8 @@ do_utimens (const char *path, int64_t atsecs, int64_t atnsecs, int64_t mtsecs, int64_t mtnsecs) { - int fd; int r; - CHROOT_IN; - fd = open (path, O_WRONLY | O_NOCTTY); - CHROOT_OUT; - - if (fd == -1) { - reply_with_perror ("open: %s", path); - return -1; - } - if (atnsecs == -1) atnsecs = UTIME_NOW; if (atnsecs == -2) @@ -60,15 +50,12 @@ do_utimens (const char *path, times[1].tv_sec = mtsecs; times[1].tv_nsec = mtnsecs; - r = futimens (fd, times); - if (r == -1) { - reply_with_perror ("futimens: %s", path); - close (fd); - return -1; - } + CHROOT_IN; + r = utimensat (-1, path, times, AT_SYMLINK_NOFOLLOW); + CHROOT_OUT; - if (close (fd) == -1) { - reply_with_perror ("close: %s", path); + if (r == -1) { + reply_with_perror ("utimensat: %s", path); return -1; }