aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--loginutils/addgroup.c28
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 * ________________________________________________________________________ */
133int addgroup_main(int argc, char **argv) 133int 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 $ */