mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-10-03 23:58:33 +00:00
utimens: remove invalid futimesat call
* lib/utimens.c (fdutimens) [HAVE_FUTIMESAT]: Remove invalid futimesat call. It used the file descriptor of the target file as the DIR_FD parameter and NULL as the file name. That caused failure with errno == EFAULT on FreeBSD-8.0-rc2.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2009-11-08 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
utimens: remove invalid futimesat call
|
||||
* lib/utimens.c (fdutimens): Remove invalid futimesat call.
|
||||
It used the file descriptor of the target file as the DIR_FD
|
||||
parameter and NULL as the file name. That caused failure with
|
||||
errno == EFAULT on FreeBSD-8.0-rc2
|
||||
|
||||
2009-11-07 Eric Blake <ebb9@byu.net>
|
||||
|
||||
fflush, freadseek: use fseeko, not fseek
|
||||
|
||||
+4
-7
@@ -280,9 +280,9 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2])
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If futimesat or futimes fails here, don't try to speed things
|
||||
up by returning right away. glibc can incorrectly fail with
|
||||
errno == ENOENT if /proc isn't mounted. Also, Mandrake 10.0
|
||||
/* If futimesat (above) or futimes fails here, don't try to speed
|
||||
things up by returning right away. glibc 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 incorrectly fails with errno == EACCES.
|
||||
If errno == EIO, EPERM, or EROFS, it's probably safe to fail
|
||||
@@ -290,10 +290,7 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2])
|
||||
worth optimizing, and who knows what other messed-up systems
|
||||
are out there? So play it safe and fall back on the code
|
||||
below. */
|
||||
# if HAVE_FUTIMESAT
|
||||
if (futimesat (fd, NULL, t) == 0)
|
||||
return 0;
|
||||
# elif HAVE_FUTIMES
|
||||
# if HAVE_FUTIMES
|
||||
if (futimes (fd, t) == 0)
|
||||
return 0;
|
||||
# endif
|
||||
|
||||
Reference in New Issue
Block a user