Commit graph

37 commits

Author SHA1 Message Date
Edward Tomasz Napierala f0246686c6 - Don't include both <sys/types.h> and <sys/param.h>
- Keep variables sorted

- Fix logic error with -f and -v options - don't print
  the usual -v output if there was an error, whether or not
  we were passed -f

- Don't call free(3) just before exit(2)

- Whitespace fixes

Submitted by:	bde
2009-09-02 05:26:59 +00:00
Edward Tomasz Napierala c5cb1e51b4 Make the code more readable and fix chmod(1) on symlinks with
NFSv4 enabled.
2009-08-31 20:42:07 +00:00
Edward Tomasz Napierala deda5987bc With NFSv4 ACLs, it is possible that applying a mode to an ACL which
is identical to the mode computed from that ACL will modify the ACL.
For example, mode computed from the following ACL is 0600:

   user:kamila:rwx--------C--:------:allow
        owner@:--x-----------:------:deny
        owner@:rw-p---A-W-Co-:------:allow
        group@:rwxp----------:------:deny
        group@:--------------:------:allow
     everyone@:rwxp---A-W-Co-:------:deny
     everyone@:------a-R-c--s:------:allow

However, applying that mode (chmod 0600) changes the ACL into this:

   user:kamila:rwx-----------:------:deny
   user:kamila:rwx--------C--:------:allow
        owner@:--x-----------:------:deny
        owner@:rw-p---A-W-Co-:------:allow
        group@:rwxp----------:------:deny
        group@:--------------:------:allow
     everyone@:rwxp---A-W-Co-:------:deny
     everyone@:------a-R-c--s:------:allow

In chmod(1) utility, there is an optimisation, which makes it not
call chmod(2) if the mode of the file is the same as the new mode.
Disable that optimisation for files which may have NFSv4 ACLs.

Reviewed by:	rwatson
Approved by:	re (kib)
2009-07-01 15:52:19 +00:00
Xin LI 431586a895 Staticify internal routines. 2009-06-23 23:30:56 +00:00
Warner Losh 9ddb49cbe4 /*- or .\"- or #- to begin license clauses. 2005-01-10 08:39:26 +00:00
Mark Murray 6195fb4102 Remove clause 3 from the UCB licenses.
OK'ed by:	imp, core
2004-04-06 20:06:54 +00:00
Ruslan Ermilov 887cb17fac Print unambiguous paths with -R -v. 2003-12-16 15:17:30 +00:00
Anton Berezin ad6a34de1d Remove the code for parsing octal modes, since setmode(3) already
handles them.

Reviewed by:	audit
MFC after:	2 weeks
2003-10-31 13:20:09 +00:00
David E. O'Brien 09a80d4867 Quiet warnings about copyright[]. 2003-05-01 16:58:57 +00:00
Maxime Henrion 572417c7e4 Remove now unnecessary main() prototype. 2003-01-29 21:46:12 +00:00
David E. O'Brien 30d90946d1 Allow "-v -v" to mean very verbose.
Reviewed by:	freebsd-standards
PR:		40709
Submitted by:	Edward Brocklesby <nighthawk@unrealircd.com>, johan
2002-08-04 05:29:13 +00:00
Matthew Dillon 3951e2ab28 err() is documented as allowing NULL for the format string but GCC isn't
happy about it any more so change the useage so buildworld works again.
2002-07-10 20:36:25 +00:00
David E. O'Brien 5eb43ac2f7 Consistently use __FBSDID 2002-06-30 05:13:54 +00:00
Mark Murray 71bea4f79d Fix warnings inspired by lint, a commercial lint and WARNS=4 2002-02-22 20:45:09 +00:00
Warner Losh 5dce647c1b Modernization effort for bin/c*:
o __P has been reoved
  o Old-style K&R declarations have been converted to new C89 style
  o register has been removed
  o prototype for main() has been removed (gcc3 makes it an error)
  o int main(int argc, char *argv[]) is the preferred main definition.
  o Attempt to not break style(9) conformance for declarations more than
    they already are.

  Approved by: arch@, new style(9)
2002-02-02 06:15:22 +00:00
Ruslan Ermilov 01b4e93eff Fixed the bug from the previous revision.
``chown -h owner symlink'' did not set the symlink's owner
if the file the symlink points to already had that owner:

# ls -l alink afile
-rw-r--r--  1 nobody  ru  0 May 31 14:14 afile
lrwxr-xr-x  1 root    ru  5 May 31 14:14 alink -> afile
# ./chown -h -v nobody alink
# ls -l alink afile
-rw-r--r--  1 nobody  ru  0 May 31 14:14 afile
lrwxr-xr-x  1 root    ru  5 May 31 14:14 alink -> afile

Similarly for chgrp(1) and chmod(1).
2001-05-31 11:47:20 +00:00
Ruslan Ermilov abb1dad139 Change noop option -h to do the real work. Now mode of symbolic link
is changed if -h option is given.

Requested by:	bde
Obtained from:	NetBSD (code part)
2001-05-28 15:31:11 +00:00
Ruslan Ermilov 8e46d9c279 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
2001-05-28 12:58:10 +00:00
Kris Kennaway 925d09e9ab Make this compile with WARNS=2 2001-05-20 03:24:24 +00:00
Peter Wemm 1510e9e7c6 Optimize out no-op chmod() syscalls. 2000-07-29 22:16:55 +00:00
Kris Kennaway daad7b8c8e Don't call warn() with no format string. This is potentially exploitable, although it
would be difficult both technically and in practise.
2000-07-10 08:31:35 +00:00
David E. O'Brien a082153a1f Default to not -v.
Fix usage() style bug spotted by BDE.
1999-11-28 12:24:16 +00:00
David E. O'Brien 5bb83b98db Add "-v". 1999-11-27 19:25:08 +00:00
Peter Wemm 2a4562393f $Id$ -> $FreeBSD$ 1999-08-27 23:15:48 +00:00
Chris Costello 7007d55cc0 Document -f flag:
-f      Do not display a diagnostic message if chmod could not modify the
             mode for file.
1999-08-08 21:08:05 +00:00
Warner Losh a4324714a9 Free memory obtained from setmode.
Obtained from: OpenBSD
1998-12-16 04:42:33 +00:00
Philippe Charnier d4e2eddf9d Restore original Lite-2 sccsid. Restore include of sys/types.h. 1998-05-13 07:22:11 +00:00
Philippe Charnier cbf6f7d358 Correct use of .Nm and other cosmetics. Add rcsid. Remove unused #inc. 1998-05-06 06:51:42 +00:00
Warner Losh 93ef08af3e compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-28 15:24:41 +00:00
Peter Wemm b97fa2ef50 Revert $FreeBSD$ to $Id$ 1997-02-22 14:13:04 +00:00
Jordan K. Hubbard 1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
Steve Price 1686b60268 Cleanup man page and -Wall cleaning. 1996-12-14 05:51:20 +00:00
Adam David f3ad46f409 chmod(2) directories once only (was twice) 1996-08-10 15:05:26 +00:00
Joerg Wunsch 0fd510b71a You will find enclosed some changes to make gcc -Wall more happy in
/usr/src/bin. Note that some patches are still needed in that directory.

I (Joerg) finished most of Philippe's cleanup.  /bin/sh will still
need *allot* of work, however.

Submitted by:	charnier@lirmm.fr (Philippe Charnier)
1995-03-19 13:29:28 +00:00
Bruce Evans 50c1f8972c Include <limits.h> to get the definition of INT_MAX - don't depend on
namespace pollution in <time.h>.
1995-02-03 22:21:09 +00:00
David Greenman 89730b290a Added $Id$ 1994-09-24 02:59:15 +00:00
Rodney W. Grimes 4b88c807ea BSD 4.4 Lite bin Sources 1994-05-26 06:18:55 +00:00