summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-05-28 12:58:10 +0000
committerru <ru@FreeBSD.org>2001-05-28 12:58:10 +0000
commit68d3eccc3a5859b2996425370174c70d54228d41 (patch)
treeeeef75904b015972527c6571a7b6d5273b995bc1
parentf4bfdd619394d667ac10bf53f4ddb2b90b909f2f (diff)
downloadFreeBSD-src-68d3eccc3a5859b2996425370174c70d54228d41.zip
FreeBSD-src-68d3eccc3a5859b2996425370174c70d54228d41.tar.gz
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
-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 40c5b3f..f46baa0 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 1129151..7a843c7 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 40c5b3f..f46baa0 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 dacf623..b86af0e 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) {
OpenPOWER on IntegriCloud