diff options
author | obrien <obrien@FreeBSD.org> | 2002-08-04 05:29:13 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-08-04 05:29:13 +0000 |
commit | d3e44dec70b3f103aeee268ea5cc4b4af5636799 (patch) | |
tree | 2450b138d4b71f55121d7eefa21f6c08479c37a2 | |
parent | 41b5da4c2049fbfc54b3f97d64a948c223195e3e (diff) | |
download | FreeBSD-src-d3e44dec70b3f103aeee268ea5cc4b4af5636799.zip FreeBSD-src-d3e44dec70b3f103aeee268ea5cc4b4af5636799.tar.gz |
Allow "-v -v" to mean very verbose.
Reviewed by: freebsd-standards
PR: 40709
Submitted by: Edward Brocklesby <nighthawk@unrealircd.com>, johan
-rw-r--r-- | bin/chmod/chmod.1 | 5 | ||||
-rw-r--r-- | bin/chmod/chmod.c | 22 |
2 files changed, 23 insertions, 4 deletions
diff --git a/bin/chmod/chmod.1 b/bin/chmod/chmod.1 index 2b0a850..b24a82d 100644 --- a/bin/chmod/chmod.1 +++ b/bin/chmod/chmod.1 @@ -86,7 +86,10 @@ rather than the file that the link points to. .It Fl v Cause .Nm -to be verbose, showing files as the mode is modified. +to be verbose, showing filenames as the mode is modified. If the +.Fl v +flag is specified more than once, the old and new modes of the file +will also be printed, in both octal and symbolic notation. .El .Pp The diff --git a/bin/chmod/chmod.c b/bin/chmod/chmod.c index 2cc37d8..5014d43 100644 --- a/bin/chmod/chmod.c +++ b/bin/chmod/chmod.c @@ -121,7 +121,7 @@ main(int argc, char *argv[]) --optind; goto done; case 'v': - vflag = 1; + vflag++; break; case '?': default: @@ -208,8 +208,24 @@ done: argv += optind; warn("%s", p->fts_path); rval = 1; } else { - if (vflag) - (void)printf("%s\n", p->fts_accpath); + if (vflag) { + (void)printf("%s", p->fts_accpath); + + if (vflag > 1) { + char m1[12], m2[12]; + + strmode(p->fts_statp->st_mode, m1); + strmode((p->fts_statp->st_mode & + S_IFMT) | newmode, m2); + + (void)printf(": 0%o [%s] -> 0%o [%s]", + p->fts_statp->st_mode, m1, + (p->fts_statp->st_mode & S_IFMT) | + newmode, m2); + } + (void)printf("\n"); + } + } } if (errno) |