diff options
author | ru <ru@FreeBSD.org> | 2001-09-14 14:04:08 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-09-14 14:04:08 +0000 |
commit | e177b37bfd6870effd6c9d3189a3c0e39ff60c2a (patch) | |
tree | 08a25d97660d0a79519561b54cdb886db707c783 /usr.bin/id/id.c | |
parent | 3a475bde7a6172b4006c8c6d7318d76b6d06e2a8 (diff) | |
download | FreeBSD-src-e177b37bfd6870effd6c9d3189a3c0e39ff60c2a.zip FreeBSD-src-e177b37bfd6870effd6c9d3189a3c0e39ff60c2a.tar.gz |
Fold groups(1) and whoami(1) into id(1).
Diffstat (limited to 'usr.bin/id/id.c')
-rw-r--r-- | usr.bin/id/id.c | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/usr.bin/id/id.c b/usr.bin/id/id.c index a18dc4a..c0936f3 100644 --- a/usr.bin/id/id.c +++ b/usr.bin/id/id.c @@ -65,6 +65,8 @@ void user __P((struct passwd *)); struct passwd * who __P((char *)); +int isgroups, iswhoami; + int main(argc, argv) int argc; @@ -73,9 +75,23 @@ main(argc, argv) struct group *gr; struct passwd *pw; int Gflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag; + const char *myname; Gflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0; - while ((ch = getopt(argc, argv, "PGgnpru")) != -1) + + myname = strrchr(argv[0], '/'); + myname = (myname != NULL) ? myname + 1 : argv[0]; + if (strcmp(myname, "groups") == 0) { + isgroups = 1; + Gflag = nflag = 1; + } + else if (strcmp(myname, "whoami") == 0) { + iswhoami = 1; + uflag = nflag = 1; + } + + while ((ch = getopt(argc, argv, + (isgroups || iswhoami) ? "" : "PGgnpru")) != -1) switch(ch) { case 'G': Gflag = 1; @@ -105,6 +121,9 @@ main(argc, argv) argc -= optind; argv += optind; + if (iswhoami && argc > 0) + usage(); + switch(Gflag + Pflag + gflag + pflag + uflag) { case 1: break; @@ -347,12 +366,18 @@ pline(pw) void usage() { - (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n", - "usage: id [user]", - " id -G [-n] [user]", - " id -P [user]", - " id -g [-nr] [user]", - " id -p [user]", - " id -u [-nr] [user]"); + + if (isgroups) + (void)fprintf(stderr, "usage: groups [user]\n"); + else if (iswhoami) + (void)fprintf(stderr, "usage: whoami\n"); + else + (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n", + "usage: id [user]", + " id -G [-n] [user]", + " id -P [user]", + " id -g [-nr] [user]", + " id -p [user]", + " id -u [-nr] [user]"); exit(1); } |