summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--src/dd.c8
-rw-r--r--src/remove.c2
3 files changed, 15 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ebe1cdd4..f394bb4ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-10-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (flags): noatime and nofollow now depend on
+ HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, too.
+ (usage): Output info about noatime and nofollow only if
+ they are known to work.
+ * src/remove.c (AD_push): Inspect HAVE_WORKING_O_NOFOLLOW rather
+ than O_NOFOLLOW, when testing whether it's possible to avoid a
+ race condition reliably.
+
2006-10-05 Jim Meyering <jim@meyering.net>
* tests/install/basic-1: Skip the latter part of this test if the
diff --git a/src/dd.c b/src/dd.c
index 211c73127..4a052c356 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -265,9 +265,9 @@ static struct symbol_value const flags[] =
{"direct", O_DIRECT},
{"directory", O_DIRECTORY},
{"dsync", O_DSYNC},
- {"noatime", O_NOATIME},
+ {"noatime", HAVE_WORKING_O_NOATIME ? O_NOATIME : 0},
{"noctty", O_NOCTTY},
- {"nofollow", O_NOFOLLOW},
+ {"nofollow", HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0},
{"nolinks", O_NOLINKS},
{"nonblock", O_NONBLOCK},
{"sync", O_SYNC},
@@ -470,12 +470,12 @@ Each FLAG symbol may be:\n\
fputs (_(" sync likewise, but also for metadata\n"), stdout);
if (O_NONBLOCK)
fputs (_(" nonblock use non-blocking I/O\n"), stdout);
- if (O_NOATIME)
+ if (HAVE_WORKING_O_NOATIME)
fputs (_(" noatime do not update access time\n"), stdout);
if (O_NOCTTY)
fputs (_(" noctty do not assign controlling terminal from file\n"),
stdout);
- if (O_NOFOLLOW)
+ if (HAVE_WORKING_O_NOFOLLOW)
fputs (_(" nofollow do not follow symlinks\n"), stdout);
if (O_NOLINKS)
fputs (_(" nolinks fail if multiply-linked\n"), stdout);
diff --git a/src/remove.c b/src/remove.c
index 13a6e2768..d362db0ee 100644
--- a/src/remove.c
+++ b/src/remove.c
@@ -621,7 +621,7 @@ AD_push (int fd_cwd, Dirstack_state *ds, char const *dir,
/* If our uses of openat are guaranteed not to
follow a symlink, then we can skip this check. */
- if ( ! O_NOFOLLOW)
+ if (! HAVE_WORKING_O_NOFOLLOW)
{
struct stat sb;
if (fstat (fd_cwd, &sb) != 0)