Mercurial > hg > octave-shane > gnulib-hg
diff lib/utimens.c @ 12580:3a190157862b
utimens (fdutimens): ignore a negative FD, per contract
* lib/utimens.c (fdutimens) [HAVE_FUTIMENS]: Call futimens only
when we have a valid file descriptor. Otherwise, using a brand
new glibc (with just-patched futimens that now fails with EBADF)
would cause this function to fail with ENOSYS.
Reported by Guillaume Ayoub in http://bugs.debian.org/563726.
See also http://bugzilla.redhat.com/552320.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Aurelien Jarno <aurelien@aurel32.net> |
---|---|
date | Tue, 05 Jan 2010 20:27:12 -0700 |
parents | c2cbabec01dd |
children | e08c8b78a796 |
line wrap: on
line diff
--- a/lib/utimens.c +++ b/lib/utimens.c @@ -264,19 +264,20 @@ } # endif /* HAVE_UTIMENSAT */ # if HAVE_FUTIMENS - { - result = futimens (fd, ts); + if (0 <= fd) + { + result = futimens (fd, ts); # ifdef __linux__ - /* Work around the same bug as above. */ - if (0 < result) - errno = ENOSYS; + /* Work around the same bug as above. */ + if (0 < result) + errno = ENOSYS; # endif /* __linux__ */ - if (result == 0 || errno != ENOSYS) - { - utimensat_works_really = 1; - return result; - } - } + if (result == 0 || errno != ENOSYS) + { + utimensat_works_really = 1; + return result; + } + } # endif /* HAVE_FUTIMENS */ } utimensat_works_really = -1;