diff options
author | Sami Kerola | 2014-12-13 18:11:04 +0100 |
---|---|---|
committer | Sami Kerola | 2014-12-19 10:11:02 +0100 |
commit | cdf3896a0502b2773323ec293ccb4dfdbfc87cf8 (patch) | |
tree | 766ed5b457a323257487b4e58968218c0e17a065 /login-utils/lslogins.c | |
parent | lslogins: fix short options (diff) | |
download | kernel-qcow2-util-linux-cdf3896a0502b2773323ec293ccb4dfdbfc87cf8.tar.gz kernel-qcow2-util-linux-cdf3896a0502b2773323ec293ccb4dfdbfc87cf8.tar.xz kernel-qcow2-util-linux-cdf3896a0502b2773323ec293ccb4dfdbfc87cf8.zip |
lslogins: reject unknown time format arguments
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'login-utils/lslogins.c')
-rw-r--r-- | login-utils/lslogins.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c index cacf83c1d..5e1ef171c 100644 --- a/login-utils/lslogins.c +++ b/login-utils/lslogins.c @@ -1180,16 +1180,25 @@ static void free_user(void *f) free(u); } -struct lslogins_timefmt { - const char *name; - int val; -}; +static int parse_time_mode(const char *optarg) +{ + struct lslogins_timefmt { + const char *name; + const int val; + }; + static const struct lslogins_timefmt timefmts[] = { + {"iso", TIME_ISO}, + {"full", TIME_FULL}, + {"short", TIME_SHORT}, + }; + size_t i; -static struct lslogins_timefmt timefmts[] = { - { "short", TIME_SHORT }, - { "full", TIME_FULL }, - { "iso", TIME_ISO }, -}; + for (i = 0; i < ARRAY_SIZE(timefmts); i++) { + if (strcmp(timefmts[i].name, optarg) == 0) + return timefmts[i].val; + } + errx(EXIT_FAILURE, _("unknown time format: %s"), optarg); +} static void __attribute__((__noreturn__)) usage(FILE *out) { @@ -1397,18 +1406,7 @@ int main(int argc, char *argv[]) ctl->noheadings = 1; break; case OPT_TIME_FMT: - { - size_t i; - - for (i = 0; i < ARRAY_SIZE(timefmts); i++) { - if (strcmp(timefmts[i].name, optarg) == 0) { - ctl->time_mode = timefmts[i].val; - break; - } - } - if (ctl->time_mode == TIME_INVALID) - usage(stderr); - } + ctl->time_mode = parse_time_mode(optarg); break; case 'V': printf(UTIL_LINUX_VERSION); |