summaryrefslogtreecommitdiffstats
path: root/login-utils/vipw.c
diff options
context:
space:
mode:
authorSami Kerola2017-05-09 20:10:50 +0200
committerKarel Zak2017-05-10 10:53:28 +0200
commit6c9f102f3e5806d70da2d33a40d86a10cf0a3354 (patch)
treebfb7d2a83934dbee72e32a582926e541e00de1cf /login-utils/vipw.c
parentcol: avoid extra newline if no input (diff)
downloadkernel-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.c23
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);