diff options
author | Sami Kerola | 2017-05-09 20:10:50 +0200 |
---|---|---|
committer | Karel Zak | 2017-05-10 10:53:28 +0200 |
commit | 6c9f102f3e5806d70da2d33a40d86a10cf0a3354 (patch) | |
tree | bfb7d2a83934dbee72e32a582926e541e00de1cf /login-utils/vipw.c | |
parent | col: avoid extra newline if no input (diff) | |
download | kernel-qcow2-util-linux-6c9f102f3e5806d70da2d33a40d86a10cf0a3354.tar.gz kernel-qcow2-util-linux-6c9f102f3e5806d70da2d33a40d86a10cf0a3354.tar.xz kernel-qcow2-util-linux-6c9f102f3e5806d70da2d33a40d86a10cf0a3354.zip |
vipw: use getopt_long() to parse options
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'login-utils/vipw.c')
-rw-r--r-- | login-utils/vipw.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/login-utils/vipw.c b/login-utils/vipw.c index 4d8592434..7d4a831de 100644 --- a/login-utils/vipw.c +++ b/login-utils/vipw.c @@ -61,6 +61,7 @@ #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> +#include <getopt.h> #include "c.h" #include "fileutils.h" @@ -312,6 +313,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out) int main(int argc, char *argv[]) { + int c; + static const struct option longopts[] = { + {"version", no_argument, NULL, 'V'}, + {"help", no_argument, NULL, 'h'}, + {NULL, 0, NULL, 0} + }; + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -325,15 +333,16 @@ int main(int argc, char *argv[]) xstrncpy(orig_file, PASSWD_FILE, sizeof(orig_file)); } - if (1 < argc) { - if (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version")) { + while ((c = getopt_long(argc, argv, "Vh", longopts, NULL)) != -1) + switch (c) { + case 'V': printf(UTIL_LINUX_VERSION); - exit(EXIT_SUCCESS); - } - if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) + return EXIT_SUCCESS; + case 'h': usage(stdout); - usage(stderr); - } + default: + errtryhelp(EXIT_FAILURE); + } edit_file(0); |