diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-01-03 08:51:59 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-01-03 08:51:59 +0000 |
commit | e75249bf8cb62b62593474e6b654e75ad7ee2468 (patch) | |
tree | 0d2fe94a3c48bc9f69d14ef2d472dff57f602588 /lib | |
parent | a672333a19f3d3ee4865750db6c211add0184eb2 (diff) | |
download | coreutils-e75249bf8cb62b62593474e6b654e75ad7ee2468.tar.xz |
futimens) [HAVE_FUTIMES]: Fall back on utimes if futimes fails with
errno == ENOENT.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/utimens.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/utimens.c b/lib/utimens.c index ad5d8fb1a..4a9c9c6c4 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -24,6 +24,8 @@ #include "utimens.h" +#include <errno.h> + #if HAVE_UTIME_H # include <utime.h> #endif @@ -74,7 +76,16 @@ futimens (int fd ATTRIBUTE_UNUSED, t = NULL; # if HAVE_FUTIMES if (0 <= fd) - return futimes (fd, t); + { + if (futimes (fd, t) == 0) + return 0; + + /* On GNU/Linux without the futimes syscall and without /proc + mounted, glibc futimes fails with errno == ENOENT. Fall back + on utimes in this case. */ + if (errno != ENOENT) + return -1; + } # endif return utimes (file, t); |