diff options
author | Jakob Kaivo <jkk@ung.org> | 2019-11-01 10:54:22 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2019-11-01 10:54:22 -0400 |
commit | f2ce62c3e39662a48f69954982490199b319a614 (patch) | |
tree | 319442eb758697a38dd10b2c71962aa94e0df433 | |
parent | 361ab5930c7b0079dbdd2808126fd194a2067859 (diff) |
use an enum for operation mode
-rw-r--r-- | id.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -37,6 +37,7 @@ #define NUMS 2 enum type { USER, GROUP }; +enum mode { DEFAULT, UID, GID, ALL_GID }; static char *get_name(enum type type, id_t id) { @@ -107,7 +108,7 @@ static void print_groups(uid_t uid, int mode) int main(int argc, char *argv[]) { bool names = false; - char mode = 0; + enum mode mode = DEFAULT; int c; uid_t ruid = getuid(); uid_t euid = geteuid(); @@ -119,9 +120,15 @@ int main(int argc, char *argv[]) while ((c = getopt(argc, argv, "Ggunr")) != -1) { switch (c) { case 'G': + mode = ALL_GID; + break; + case 'g': + mode = GID; + break; + case 'u': - mode = c; + mode = UID; break; case 'n': @@ -156,12 +163,12 @@ int main(int argc, char *argv[]) gid = rgid = egid = pwd->pw_gid; } - if (mode == 'G') { + if (mode == ALL_GID) { /* TODO: output real and/or effective gids if necessary */ print_groups(uid, names ? NAMES : NUMS); - } else if (mode == 'g') { + } else if (mode == GID) { print_id("", get_name(GROUP, gid), gid, names); - } else if (mode == 'u') { + } else if (mode == UID) { print_id("", get_name(USER, uid), uid, names); } else { print_id("uid=", get_name(USER, ruid), ruid, 0); |