diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-10-30 21:32:02 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-10-30 21:32:02 +0000 |
commit | 9fb982e15023255bcdd915a16054a5ec96a669c7 (patch) | |
tree | 79d02a255824ae14ae8778e856da2dfe3f3e236c /lib | |
parent | b90c07efd8332e5884900dacc7f34a8d4eb27bfb (diff) | |
download | coreutils-9fb982e15023255bcdd915a16054a5ec96a669c7.tar.xz |
(futimens) [HAVE_WORKING_UTIMES && HAVE_FUTIMES]:
Don't assume that futimes failing means we must fail.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/utimens.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/utimens.c b/lib/utimens.c index 7f88f2fa9..8d8bef468 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -99,17 +99,15 @@ futimens (int fd ATTRIBUTE_UNUSED, 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 if we get a weird error number like that. */ - switch (errno) - { - case EACCES: - case EIO: - case EPERM: - case EROFS: - return -1; - } + /* Don't worry about trying to speed things up by returning right + away here. glibc futimes can incorrectly fail with errno == + ENOENT if /proc isn't mounted. Also, Mandrake 10.0 in high + security mode doesn't allow ordinary users to read /proc/self, so + glibc futimes incorrectly fails with errno == EACCES. If futimes + fails with errno == EIO, EPERM, or EROFS, it's probably safe to + fail right away, but these cases are rare enough that they're not + worth optimizing, and who knows what other messed-up systems are + out there? So play it safe and fall back on the code below. */ } # endif #endif |