aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2001-05-28 12:58:10 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2001-05-28 12:58:10 +0000
commit8e46d9c279acd0d14e77b6cc3b05e2fdcc45e8b6 (patch)
treef56a2ae90365d34273511170c8dc9d698ca4f7ce
parenta89ab9bbe40d5ca5d6f0ed87d63eb0960c8009f0 (diff)
downloadsrc-8e46d9c279acd0d14e77b6cc3b05e2fdcc45e8b6.tar.gz
src-8e46d9c279acd0d14e77b6cc3b05e2fdcc45e8b6.zip
Follow symbolic links named as command line arguments if run without -R.
This is required by symlink(7), ``Commands not traversing a file tree'' subsection, third paragraph: : It is important to realize that this rule includes commands which may : optionally traverse file trees, e.g. the command ``chown file'' is : included in this rule, while the command ``chown -R file'' is not. For chown(8) and chgrp(1), this is also is compliance with the latest POSIX 1003.1-200x draft. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=77333
-rw-r--r--bin/chflags/chflags.c5
-rw-r--r--bin/chmod/chmod.c5
-rw-r--r--usr.bin/chflags/chflags.c5
-rw-r--r--usr.sbin/chown/chown.c5
4 files changed, 12 insertions, 8 deletions
diff --git a/bin/chflags/chflags.c b/bin/chflags/chflags.c
index 40c5b3f432b8..f46baa0efaeb 100644
--- a/bin/chflags/chflags.c
+++ b/bin/chflags/chflags.c
@@ -99,15 +99,16 @@ main(argc, argv)
if (argc < 2)
usage();
- fts_options = FTS_PHYSICAL;
if (Rflag) {
+ fts_options = FTS_PHYSICAL;
if (Hflag)
fts_options |= FTS_COMFOLLOW;
if (Lflag) {
fts_options &= ~FTS_PHYSICAL;
fts_options |= FTS_LOGICAL;
}
- }
+ } else
+ fts_options = FTS_LOGICAL;
flags = *argv;
if (*flags >= '0' && *flags <= '7') {
diff --git a/bin/chmod/chmod.c b/bin/chmod/chmod.c
index 112915159645..7a843c755bf7 100644
--- a/bin/chmod/chmod.c
+++ b/bin/chmod/chmod.c
@@ -134,8 +134,8 @@ done: argv += optind;
if (argc < 2)
usage();
- fts_options = FTS_PHYSICAL;
if (Rflag) {
+ fts_options = FTS_PHYSICAL;
if (hflag)
errx(1,
"the -R and -h options may not be specified together.");
@@ -145,7 +145,8 @@ done: argv += optind;
fts_options &= ~FTS_PHYSICAL;
fts_options |= FTS_LOGICAL;
}
- }
+ } else
+ fts_options = FTS_LOGICAL;
mode = *argv;
if (*mode >= '0' && *mode <= '7') {
diff --git a/usr.bin/chflags/chflags.c b/usr.bin/chflags/chflags.c
index 40c5b3f432b8..f46baa0efaeb 100644
--- a/usr.bin/chflags/chflags.c
+++ b/usr.bin/chflags/chflags.c
@@ -99,15 +99,16 @@ main(argc, argv)
if (argc < 2)
usage();
- fts_options = FTS_PHYSICAL;
if (Rflag) {
+ fts_options = FTS_PHYSICAL;
if (Hflag)
fts_options |= FTS_COMFOLLOW;
if (Lflag) {
fts_options &= ~FTS_PHYSICAL;
fts_options |= FTS_LOGICAL;
}
- }
+ } else
+ fts_options = FTS_LOGICAL;
flags = *argv;
if (*flags >= '0' && *flags <= '7') {
diff --git a/usr.sbin/chown/chown.c b/usr.sbin/chown/chown.c
index dacf623bb06a..b86af0e42730 100644
--- a/usr.sbin/chown/chown.c
+++ b/usr.sbin/chown/chown.c
@@ -122,8 +122,8 @@ main(argc, argv)
if (argc < 2)
usage();
- fts_options = FTS_PHYSICAL;
if (Rflag) {
+ fts_options = FTS_PHYSICAL;
if (hflag && (Lflag || Hflag))
errx(1, "the -R and -h options may not be specified together");
if (Hflag)
@@ -132,7 +132,8 @@ main(argc, argv)
fts_options &= ~FTS_PHYSICAL;
fts_options |= FTS_LOGICAL;
}
- }
+ } else
+ fts_options = FTS_LOGICAL;
uid = gid = -1;
if (ischown) {