summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/utimens.c15
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);