From: Peter Hutterer Date: Tue, 10 Nov 2015 00:08:12 +0000 (+1000) Subject: tools: fix tweak-device option parsing X-Git-Tag: libevdev-1.5.0~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a95ca2c82115f0585ca4c17591d9cd2879ad3358;p=platform%2Fupstream%2Flibevdev.git tools: fix tweak-device option parsing https://bugs.freedesktop.org/show_bug.cgi?id=92880 Signed-off-by: Peter Hutterer --- diff --git a/tools/libevdev-tweak-device.c b/tools/libevdev-tweak-device.c index 7dcdbda..fc35c13 100644 --- a/tools/libevdev-tweak-device.c +++ b/tools/libevdev-tweak-device.c @@ -238,7 +238,7 @@ error: } static enum mode -parse_options_mode(int argc, char **argv, const char **path) +parse_options_mode(int argc, char **argv) { int c; int option_index = 0; @@ -254,7 +254,7 @@ parse_options_mode(int argc, char **argv, const char **path) if (argc < 2) return mode; - while (1) { + while (mode == MODE_NONE) { c = getopt_long(argc, argv, "h", opts, &option_index); if (c == -1) break; @@ -278,11 +278,9 @@ parse_options_mode(int argc, char **argv, const char **path) } } - if (optind >= argc) + if (optind >= argc && mode != MODE_HELP) return MODE_NONE; - *path = argv[optind]; - return mode; } @@ -368,7 +366,7 @@ main(int argc, char **argv) { struct libevdev *dev = NULL; int fd = -1; - int rc = 1; + int rc = EXIT_FAILURE; enum mode mode; const char *path; struct input_absinfo absinfo; @@ -379,7 +377,7 @@ main(int argc, char **argv) int xres = 0, yres = 0; - mode = parse_options_mode(argc, argv, &path); + mode = parse_options_mode(argc, argv); switch (mode) { case MODE_HELP: rc = EXIT_SUCCESS; @@ -407,8 +405,17 @@ main(int argc, char **argv) if (rc != EXIT_SUCCESS) goto out; + if (optind >= argc) { + rc = EXIT_FAILURE; + usage(); + goto out; + } + + path = argv[optind]; + fd = open(path, O_RDWR); if (fd < 0) { + rc = EXIT_FAILURE; perror("Failed to open device"); goto out; }