diff options
author | Eric Andersen | 2003-01-09 18:53:53 +0000 |
---|---|---|
committer | Eric Andersen | 2003-01-09 18:53:53 +0000 |
commit | f05fd444e83a166e9e7a3fac2996a0e88d35b49f (patch) | |
tree | 5f86c9f070cb7c5d391b4a5d819a286878095e6c | |
parent | e931909d2db6e46cc6a260166b20ca880946b623 (diff) | |
download | busybox-f05fd444e83a166e9e7a3fac2996a0e88d35b49f.zip busybox-f05fd444e83a166e9e7a3fac2996a0e88d35b49f.tar.gz |
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 671323a..1d754af 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 * ________________________________________________________________________ */ int addgroup_main(int argc, char **argv) { + int opt; char *group; char *user; gid_t gid = 0; - if (argc < 2) { - show_usage(); + /* get remaining args */ + while ((opt = getopt (argc, argv, "g:")) != -1) { + switch (opt) { + case 'g': + gid = strtol(optarg, NULL, 10); + break; + default: + show_usage(); + break; + } } - if (strncmp(argv[1], "-g", 2) == 0) { - gid = strtol(argv[2], NULL, 10); - group = argv[2]; + if (optind < argc) { + group = argv[optind]; + optind++; } else { show_usage(); } - - if (argc == 4) { - user = argv[3]; + + if (optind < argc) { + user = argv[optind]; + optind++; } else { user = ""; } @@ -162,4 +172,4 @@ int addgroup_main(int argc, char **argv) return addgroup(group_file, group, gid, user); } -/* $Id: addgroup.c,v 1.8 2002/12/13 22:02:12 timr Exp $ */ +/* $Id: addgroup.c,v 1.9 2003/01/09 18:53:53 andersen Exp $ */ |