diff options
Diffstat (limited to 'id.c')
-rw-r--r-- | id.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -31,6 +31,7 @@ | |||
31 | extern int id_main(int argc, char **argv) | 31 | extern int id_main(int argc, char **argv) |
32 | { | 32 | { |
33 | int no_user = 0, no_group = 0, print_real = 0; | 33 | int no_user = 0, no_group = 0, print_real = 0; |
34 | int name_not_number = 0; | ||
34 | char user[9], group[9]; | 35 | char user[9], group[9]; |
35 | long gid; | 36 | long gid; |
36 | long pwnam, grnam; | 37 | long pwnam, grnam; |
@@ -38,7 +39,7 @@ extern int id_main(int argc, char **argv) | |||
38 | 39 | ||
39 | gid = 0; | 40 | gid = 0; |
40 | 41 | ||
41 | while ((opt = getopt(argc, argv, "ugr")) > 0) { | 42 | while ((opt = getopt(argc, argv, "ugrn")) > 0) { |
42 | switch (opt) { | 43 | switch (opt) { |
43 | case 'u': | 44 | case 'u': |
44 | no_group++; | 45 | no_group++; |
@@ -49,6 +50,9 @@ extern int id_main(int argc, char **argv) | |||
49 | case 'r': | 50 | case 'r': |
50 | print_real++; | 51 | print_real++; |
51 | break; | 52 | break; |
53 | case 'n': | ||
54 | name_not_number++; | ||
55 | break; | ||
52 | default: | 56 | default: |
53 | usage(id_usage); | 57 | usage(id_usage); |
54 | } | 58 | } |
@@ -76,12 +80,20 @@ extern int id_main(int argc, char **argv) | |||
76 | if (gid == -1 || pwnam==-1 || grnam==-1) { | 80 | if (gid == -1 || pwnam==-1 || grnam==-1) { |
77 | error_msg_and_die("%s: No such user\n", user); | 81 | error_msg_and_die("%s: No such user\n", user); |
78 | } | 82 | } |
79 | if (no_group) | 83 | |
80 | printf("%ld\n", pwnam); | 84 | if (no_group) { |
81 | else if (no_user) | 85 | if(name_not_number && user) |
82 | printf("%ld\n", grnam); | 86 | printf("%s\n",user); |
83 | else | 87 | else |
88 | printf("%ld\n", pwnam); | ||
89 | } else if (no_user) { | ||
90 | if(name_not_number && group) | ||
91 | printf("%s\n", group); | ||
92 | else | ||
93 | printf("%ld\n", grnam); | ||
94 | } else { | ||
84 | printf("uid=%ld(%s) gid=%ld(%s)\n", pwnam, user, grnam, group); | 95 | printf("uid=%ld(%s) gid=%ld(%s)\n", pwnam, user, grnam, group); |
96 | } | ||
85 | return(0); | 97 | return(0); |
86 | } | 98 | } |
87 | 99 | ||