diff options
-rw-r--r-- | loginutils/addgroup.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/loginutils/addgroup.c b/loginutils/addgroup.c index 671323a9e..1d754af8e 100644 --- a/loginutils/addgroup.c +++ b/loginutils/addgroup.c | |||
@@ -132,23 +132,33 @@ static int addgroup(const char *filename, char *group, gid_t gid, const char *us | |||
132 | * ________________________________________________________________________ */ | 132 | * ________________________________________________________________________ */ |
133 | int addgroup_main(int argc, char **argv) | 133 | int addgroup_main(int argc, char **argv) |
134 | { | 134 | { |
135 | int opt; | ||
135 | char *group; | 136 | char *group; |
136 | char *user; | 137 | char *user; |
137 | gid_t gid = 0; | 138 | gid_t gid = 0; |
138 | 139 | ||
139 | if (argc < 2) { | 140 | /* get remaining args */ |
140 | show_usage(); | 141 | while ((opt = getopt (argc, argv, "g:")) != -1) { |
142 | switch (opt) { | ||
143 | case 'g': | ||
144 | gid = strtol(optarg, NULL, 10); | ||
145 | break; | ||
146 | default: | ||
147 | show_usage(); | ||
148 | break; | ||
149 | } | ||
141 | } | 150 | } |
142 | 151 | ||
143 | if (strncmp(argv[1], "-g", 2) == 0) { | 152 | if (optind < argc) { |
144 | gid = strtol(argv[2], NULL, 10); | 153 | group = argv[optind]; |
145 | group = argv[2]; | 154 | optind++; |
146 | } else { | 155 | } else { |
147 | show_usage(); | 156 | show_usage(); |
148 | } | 157 | } |
149 | 158 | ||
150 | if (argc == 4) { | 159 | if (optind < argc) { |
151 | user = argv[3]; | 160 | user = argv[optind]; |
161 | optind++; | ||
152 | } else { | 162 | } else { |
153 | user = ""; | 163 | user = ""; |
154 | } | 164 | } |
@@ -162,4 +172,4 @@ int addgroup_main(int argc, char **argv) | |||
162 | return addgroup(group_file, group, gid, user); | 172 | return addgroup(group_file, group, gid, user); |
163 | } | 173 | } |
164 | 174 | ||
165 | /* $Id: addgroup.c,v 1.8 2002/12/13 22:02:12 timr Exp $ */ | 175 | /* $Id: addgroup.c,v 1.9 2003/01/09 18:53:53 andersen Exp $ */ |