diff options
| author | Eric Andersen <andersen@codepoet.org> | 2003-01-09 18:53:53 +0000 |
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2003-01-09 18:53:53 +0000 |
| commit | f05fd444e83a166e9e7a3fac2996a0e88d35b49f (patch) | |
| tree | 5f86c9f070cb7c5d391b4a5d819a286878095e6c | |
| parent | e931909d2db6e46cc6a260166b20ca880946b623 (diff) | |
| download | busybox-w32-f05fd444e83a166e9e7a3fac2996a0e88d35b49f.tar.gz busybox-w32-f05fd444e83a166e9e7a3fac2996a0e88d35b49f.tar.bz2 busybox-w32-f05fd444e83a166e9e7a3fac2996a0e88d35b49f.zip | |
Fix addgroup so it actually works
-Erik
| -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 $ */ |
