id: Clean up

No functional change intended.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D53300
This commit is contained in:
Dag-Erling Smørgrav
2025-10-28 17:51:50 +01:00
parent 4672adcea4
commit 70b72ede98
+55 -59
View File
@@ -53,79 +53,86 @@ static void pretty(struct passwd *);
#ifdef USE_BSM_AUDIT
static void auditid(void);
#endif
static void group(struct passwd *, int);
static void group(struct passwd *, bool);
static void maclabel(void);
static void usage(void);
static struct passwd *who(char *);
static int isgroups, iswhoami;
static bool isgroups, iswhoami;
int
main(int argc, char *argv[])
{
struct group *gr;
struct passwd *pw;
int Gflag, Mflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag;
int Aflag, cflag;
int error;
const char *myname;
#ifdef USE_BSM_AUDIT
bool Aflag;
#endif
bool Gflag, Mflag, Pflag;
bool cflag, gflag, nflag, pflag, rflag, uflag;
int ch, combo, error, id;
const char *myname, *optstr;
char loginclass[MAXLOGNAME];
Gflag = Mflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0;
Aflag = cflag = 0;
#ifdef USE_BSM_AUDIT
Aflag = false;
#endif
Gflag = Mflag = Pflag = false;
cflag = gflag = nflag = pflag = rflag = uflag = false;
myname = strrchr(argv[0], '/');
myname = (myname != NULL) ? myname + 1 : argv[0];
myname = getprogname();
optstr = "AGMPacgnpru";
if (strcmp(myname, "groups") == 0) {
isgroups = 1;
Gflag = nflag = 1;
isgroups = true;
optstr = "";
Gflag = nflag = true;
}
else if (strcmp(myname, "whoami") == 0) {
iswhoami = 1;
uflag = nflag = 1;
iswhoami = true;
optstr = "";
uflag = nflag = true;
}
while ((ch = getopt(argc, argv,
(isgroups || iswhoami) ? "" : "APGMacgnpru")) != -1)
while ((ch = getopt(argc, argv, optstr)) != -1) {
switch(ch) {
#ifdef USE_BSM_AUDIT
case 'A':
Aflag = 1;
Aflag = true;
break;
#endif
case 'G':
Gflag = 1;
Gflag = true;
break;
case 'M':
Mflag = 1;
Mflag = true;
break;
case 'P':
Pflag = 1;
Pflag = true;
break;
case 'a':
break;
case 'c':
cflag = 1;
cflag = true;
break;
case 'g':
gflag = 1;
gflag = true;
break;
case 'n':
nflag = 1;
nflag = true;
break;
case 'p':
pflag = 1;
pflag = true;
break;
case 'r':
rflag = 1;
rflag = true;
break;
case 'u':
uflag = 1;
uflag = true;
break;
case '?':
default:
usage();
}
}
argc -= optind;
argv += optind;
@@ -134,16 +141,11 @@ main(int argc, char *argv[])
if ((cflag || Aflag || Mflag) && argc > 0)
usage();
switch(Aflag + Gflag + Mflag + Pflag + gflag + pflag + uflag) {
case 1:
break;
case 0:
if (!nflag && !rflag)
break;
/* FALLTHROUGH */
default:
combo = Aflag + Gflag + Mflag + Pflag + gflag + pflag + uflag;
if (combo > 1)
usage();
if (combo == 0 && (nflag || rflag))
usage();
}
pw = *argv ? who(*argv) : NULL;
@@ -217,7 +219,7 @@ pretty(struct passwd *pw)
if (pw) {
(void)printf("uid\t%s\n", pw->pw_name);
(void)printf("groups\t");
group(pw, 1);
group(pw, true);
} else {
if ((login = getlogin()) == NULL)
err(1, "getlogin");
@@ -243,7 +245,7 @@ pretty(struct passwd *pw)
(void)printf("rgid\t%u\n", rid);
}
(void)printf("groups\t");
group(NULL, 1);
group(NULL, true);
}
}
@@ -366,7 +368,7 @@ auditid(void)
#endif
static void
group(struct passwd *pw, int nflag)
group(struct passwd *pw, bool nflag)
{
struct group *gr;
int cnt, id, lastid, ngroups;
@@ -452,41 +454,35 @@ who(char *u)
static void
pline(struct passwd *pw)
{
if (!pw) {
if (pw == NULL) {
if ((pw = getpwuid(getuid())) == NULL)
err(1, "getpwuid");
}
(void)printf("%s:%s:%d:%d:%s:%ld:%ld:%s:%s:%s\n", pw->pw_name,
pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_class,
(long)pw->pw_change, (long)pw->pw_expire, pw->pw_gecos,
pw->pw_dir, pw->pw_shell);
pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_class,
(long)pw->pw_change, (long)pw->pw_expire, pw->pw_gecos,
pw->pw_dir, pw->pw_shell);
}
static void
usage(void)
{
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%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
"usage: id [user]",
(void)fprintf(stderr,
"usage: id [user]\n"
#ifdef USE_BSM_AUDIT
" id -A\n",
#else
"",
" id -A\n"
#endif
" id -G [-n] [user]",
" id -M",
" id -P [user]",
" id -c",
" id -g [-nr] [user]",
" id -p [user]",
" id -u [-nr] [user]");
" id -G [-n] [user]\n"
" id -M\n"
" id -P [user]\n"
" id -c\n"
" id -g [-nr] [user]\n"
" id -p [user]\n"
" id -u [-nr] [user]\n");
exit(1);
}