chown: Update program usage and manpage

This commit is contained in:
sin 2015-02-17 16:41:58 +00:00
parent 16719ea6e1
commit aa6ac30b81
2 changed files with 23 additions and 14 deletions

23
chown.1
View File

@ -1,4 +1,4 @@
.Dd January 30, 2015
.Dd Feburary 17, 2015
.Dt CHOWN 1
.Os sbase
.Sh NAME
@ -6,10 +6,11 @@
.Nd change file ownership
.Sh SYNOPSIS
.Nm
.Op Fl Rr
.Op Fl H
.Op Fl L
.Op Fl P
.Op Fl h
.Oo
.Fl R
.Op Fl H | L | P
.Oc
.Op Ar owner Op Ar :group
.Op Ar file ...
.Sh DESCRIPTION
@ -18,9 +19,11 @@ changes the user or group ownership for the given
.Ar files .
.Sh OPTIONS
.Bl -tag -width Ds
.It Fl h
Change the user ID and/or group ID of the symlink itself. This flag cannot be used
with
.Op Fl R .
.It Fl R
Equivalent to \-r.
.It Fl r
Change directory ownership recursively.
.It Fl H
Only dereference symbolic links that are passed as command line arguments when
@ -32,3 +35,9 @@ Don't dereference symbolic links (default).
.El
.Sh SEE ALSO
.Xr chown 2
.Sh STANDARDS
The
.Nm
utility is compliant with the
.St -p1003.1-2008
specification.

14
chown.c
View File

@ -9,7 +9,7 @@
#include "util.h"
static int rflag = 0;
static int fflag = 'P';
static int HLPflag = 'P';
static uid_t uid = -1;
static gid_t gid = -1;
static int ret = 0;
@ -17,20 +17,20 @@ static char *chown_f_name = "chown";
static int (*chown_f)(const char *, uid_t, gid_t) = chown;
static void
chownpwgr(const char *path, int fflag)
chownpwgr(const char *path, int HLPflag)
{
if (chown_f(path, uid, gid) < 0) {
weprintf("%s %s:", chown_f_name, path);
ret = 1;
}
if (rflag)
recurse(path, chownpwgr, fflag);
recurse(path, chownpwgr, HLPflag);
}
static void
usage(void)
{
eprintf("usage: %s [-hRr] [owner][:[group]] file...\n", argv0);
eprintf("usage: %s [-h] [-R [-H | -L | -P]] [owner][:[group]] file...\n", argv0);
}
int
@ -45,14 +45,14 @@ main(int argc, char *argv[])
chown_f_name = "lchown";
chown_f = lchown;
break;
case 'R':
case 'r':
case 'R':
rflag = 1;
break;
case 'H':
case 'L':
case 'P':
fflag = ARGC();
HLPflag = ARGC();
break;
default:
usage();
@ -94,7 +94,7 @@ main(int argc, char *argv[])
}
}
for (; argc > 0; argc--, argv++)
chownpwgr(argv[0], fflag);
chownpwgr(argv[0], HLPflag);
return ret;
}