summaryrefslogtreecommitdiffstats
path: root/usr.bin/id/id.c
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-09-14 14:04:08 +0000
committerru <ru@FreeBSD.org>2001-09-14 14:04:08 +0000
commite177b37bfd6870effd6c9d3189a3c0e39ff60c2a (patch)
tree08a25d97660d0a79519561b54cdb886db707c783 /usr.bin/id/id.c
parent3a475bde7a6172b4006c8c6d7318d76b6d06e2a8 (diff)
downloadFreeBSD-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.c41
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);
}
OpenPOWER on IntegriCloud