X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=daemon%2Futimens.c;h=2df6fc71d11537811f6c0e286e657300e7b27dac;hb=19e2f5aa4fd4ed70b505661d918b5575616ad441;hp=e836b4e4b6497340cacac336bac7acc2c5f8b622;hpb=b3035e8d7c04a71d9a54ab7e52bc9e169ecf0b47;p=libguestfs.git diff --git a/daemon/utimens.c b/daemon/utimens.c index e836b4e..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 @@ -24,7 +24,7 @@ #include #include -#include "../src/guestfs_protocol.h" +#include "guestfs_protocol.h" #include "daemon.h" #include "actions.h" @@ -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; }