Mercurial > hg > octave-lyh > gnulib-hg
changeset 5589:6ddb405e16b6
(futimens): Account for the fact that futimes
can also fail with errno == ENOENT or errno == ENOSYS.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 18 Jan 2005 22:06:23 +0000 |
parents | 14b330875e48 |
children | 73710690cfc9 |
files | lib/utimens.c |
diffstat | 1 files changed, 19 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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,22 @@ 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 if we get a weird error number like that. */ + switch (errno) + { + case EACCES: + case EIO: + case EPERM: + case EROFS: + return -1; + } + } # endif return utimes (file, t);