X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Futimens.c;h=2df6fc71d11537811f6c0e286e657300e7b27dac;hb=87e972e69487564f44b20ea5dcfc3eadf5b34c74;hp=1da2169ffab08401ee43732d2c3121ded0a27be9;hpb=9ff99418361cd1b56b00e4ffef52444021e60c72;p=libguestfs.git diff --git a/daemon/utimens.c b/daemon/utimens.c index 1da2169..2df6fc7 100644 --- a/daemon/utimens.c +++ b/daemon/utimens.c @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -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; }