diff options
Diffstat (limited to 'id.c')
-rw-r--r-- | id.c | 39 |
1 files changed, 21 insertions, 18 deletions
@@ -33,28 +33,30 @@ extern int id_main(int argc, char **argv) | |||
33 | int no_user = 0, no_group = 0, print_real = 0; | 33 | int no_user = 0, no_group = 0, print_real = 0; |
34 | char *cp, *user, *group; | 34 | char *cp, *user, *group; |
35 | unsigned long gid; | 35 | unsigned long gid; |
36 | int opt; | ||
36 | 37 | ||
37 | cp = user = group = NULL; | 38 | cp = user = group = NULL; |
38 | 39 | ||
39 | argc--; argv++; | 40 | while ((opt = getopt(argc, argv, "ugr")) > 0) { |
40 | 41 | switch (opt) { | |
41 | while (argc > 0) { | 42 | case 'u': |
42 | cp = *argv; | 43 | no_group++; |
43 | if (*cp == '-') { | 44 | break; |
44 | switch (*++cp) { | 45 | case 'g': |
45 | case 'u': no_group = 1; break; | 46 | no_user++; |
46 | case 'g': no_user = 1; break; | 47 | break; |
47 | case 'r': print_real = 1; break; | 48 | case 'r': |
48 | default: usage(id_usage); | 49 | print_real++; |
49 | } | 50 | break; |
50 | } else { | 51 | default: |
51 | user = cp; | 52 | usage(id_usage); |
52 | } | 53 | } |
53 | argc--; argv++; | ||
54 | } | 54 | } |
55 | 55 | ||
56 | if (no_user && no_group) usage(id_usage); | 56 | if (no_user && no_group) usage(id_usage); |
57 | 57 | ||
58 | user = argv[optind]; | ||
59 | |||
58 | if (user == NULL) { | 60 | if (user == NULL) { |
59 | user = xmalloc(9); | 61 | user = xmalloc(9); |
60 | group = xmalloc(9); | 62 | group = xmalloc(9); |
@@ -71,12 +73,13 @@ extern int id_main(int argc, char **argv) | |||
71 | my_getgrgid(group, gid); | 73 | my_getgrgid(group, gid); |
72 | } | 74 | } |
73 | 75 | ||
74 | if (no_group) printf("%lu\n", my_getpwnam(user)); | 76 | if (no_group) |
75 | else if (no_user) printf("%lu\n", my_getgrnam(group)); | 77 | printf("%lu\n", my_getpwnam(user)); |
78 | else if (no_user) | ||
79 | printf("%lu\n", my_getgrnam(group)); | ||
76 | else | 80 | else |
77 | printf("uid=%lu(%s) gid=%lu(%s)\n", | 81 | printf("uid=%lu(%s) gid=%lu(%s)\n", |
78 | my_getpwnam(user), user, my_getgrnam(group), group); | 82 | my_getpwnam(user), user, my_getgrnam(group), group); |
79 | |||
80 | 83 | ||
81 | return(0); | 84 | return(0); |
82 | } | 85 | } |