From c40f73ec5ba7e263edcf30ac6889cb180eb0f1c8 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 18 Sep 2011 20:57:48 -0700 Subject: [PATCH] utimens: remove dependency on dup2 * lib/utimens.c (fdutimens): Don't invoke dup2; it's not needed to work around the Linux kernel bug. * modules/utimens (Depends-on): Remove dup2. --- ChangeLog | 7 +++++++ lib/utimens.c | 13 ++++--------- modules/utimens | 1 - 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2e395d4a..382b79ccb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-09-18 Paul Eggert + + utimens: remove dependency on dup2 + * lib/utimens.c (fdutimens): Don't invoke dup2; it's not needed + to work around the Linux kernel bug. + * modules/utimens (Depends-on): Remove dup2. + 2011-09-18 Bruno Haible inet_ntop, inet_pton: Look for it also in libresolv. diff --git a/lib/utimens.c b/lib/utimens.c index c19041140..f7cb8def3 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -180,18 +180,13 @@ fdutimens (int fd, char const *file, struct timespec const timespec[2]) if (adjustment_needed < 0) return -1; - /* Require that at least one of FD or FILE are valid. Works around + /* Require that at least one of FD or FILE are potentially valid, to avoid a Linux bug where futimens (AT_FDCWD, NULL) changes "." rather than failing. */ - if (!file) + if (fd < 0 && !file) { - if (fd < 0) - { - errno = EBADF; - return -1; - } - if (dup2 (fd, fd) != fd) - return -1; + errno = EBADF; + return -1; } /* Some Linux-based NFS clients are buggy, and mishandle time stamps diff --git a/modules/utimens b/modules/utimens index 1a9687f57..c607608c0 100644 --- a/modules/utimens +++ b/modules/utimens @@ -9,7 +9,6 @@ m4/utimens.m4 m4/utimes.m4 Depends-on: -dup2 errno lstat gettime -- 2.11.0