diff options
| author | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-07-11 18:09:27 +0000 |
|---|---|---|
| committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-07-11 18:09:27 +0000 |
| commit | cc424f0d3468b75718e420a691cb5e3b238804b6 (patch) | |
| tree | b1131a1c4026663026eefcdb078848e697a610cc /pw/pw_group.c | |
| parent | ecf012ac29ba3e82e8b5e497ee1b80629ae5624f (diff) | |
| download | pw-darwin-cc424f0d3468b75718e420a691cb5e3b238804b6.tar.gz pw-darwin-cc424f0d3468b75718e420a691cb5e3b238804b6.zip | |
Make separate functions to show users and groups
Diffstat (limited to 'pw/pw_group.c')
| -rw-r--r-- | pw/pw_group.c | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/pw/pw_group.c b/pw/pw_group.c index 61f0a21..d87c8cc 100644 --- a/pw/pw_group.c +++ b/pw/pw_group.c @@ -103,6 +103,37 @@ pw_groupnext(struct userconf *cnf, bool quiet) return (EXIT_SUCCESS); } +static int +pw_groupshow(const char *name, long id, struct group *fakegroup) +{ + struct group *grp = NULL; + + if (id < 0 && name == NULL && !conf.all) + errx(EX_DATAERR, "groupname or id or '-a' required"); + + if (conf.all) { + SETGRENT(); + while ((grp = GETGRENT()) != NULL) + print_group(grp); + ENDGRENT(); + + return (EXIT_SUCCESS); + } + + grp = (name != NULL) ? GETGRNAM(name) : GETGRGID(id); + if (grp == NULL) { + if (conf.force) { + grp = fakegroup; + } else { + if (name == NULL) + errx(EX_DATAERR, "unknown gid `%ld'", id); + errx(EX_DATAERR, "unknown group `%s'", name); + } + } + + return (print_group(grp)); +} + int pw_group(int mode, char *name, long id, struct cargs * args) { @@ -124,34 +155,22 @@ pw_group(int mode, char *name, long id, struct cargs * args) if (mode == M_NEXT) return (pw_groupnext(cnf, conf.quiet)); + if (mode == M_PRINT) + return (pw_groupshow(name, id, &fakegroup)); + if (mode == M_LOCK || mode == M_UNLOCK) errx(EX_USAGE, "'lock' command is not available for groups"); - if (mode == M_PRINT && getarg(args, 'a')) { - SETGRENT(); - while ((grp = GETGRENT()) != NULL) - print_group(grp); - ENDGRENT(); - return EXIT_SUCCESS; - } if (id < 0 && name == NULL) errx(EX_DATAERR, "group name or id required"); grp = (name != NULL) ? GETGRNAM(name) : GETGRGID(id); - if (mode == M_UPDATE || mode == M_DELETE || mode == M_PRINT) { + if (mode == M_UPDATE || mode == M_DELETE) { if (name == NULL && grp == NULL) /* Try harder */ grp = GETGRGID(id); if (grp == NULL) { - if (mode == M_PRINT && getarg(args, 'F')) { - char *fmems[1]; - fmems[0] = NULL; - fakegroup.gr_name = name ? name : "nogroup"; - fakegroup.gr_gid = (gid_t) id; - fakegroup.gr_mem = fmems; - return print_group(&fakegroup); - } if (name == NULL) errx(EX_DATAERR, "unknown group `%s'", name); else |
