On 05/29/2014 12:17 AM, Amit Kucheria wrote:
Adding ':' as first character of optstring to getopt_long allows separating
error message for invalid option and invalid option arguments
Signed-off-by: Amit Kucheria <amit.kuche...@linaro.org>
Acked-by: Daniel Lezcano <daniel.lezc...@linaro.org>
---
idlestat.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/idlestat.c b/idlestat.c
index a3b9363..96fc1f2 100644
--- a/idlestat.c
+++ b/idlestat.c
@@ -985,7 +985,7 @@ int getoptions(int argc, char *argv[], struct
idledebug_options *options)
int optindex = 0;
- c = getopt_long(argc, argv, "dhi:mo:t:V",
+ c = getopt_long(argc, argv, ":dhi:mo:t:V",
long_options, &optindex);
if (c == -1)
break;
@@ -1014,11 +1014,16 @@ int getoptions(int argc, char *argv[], struct
idledebug_options *options)
version(argv[0]);
exit(0);
break;
- case '?':
- fprintf(stderr, "%s: Unknown option %c'.\n",
+ case 0: /* getopt_long() set a variable, just keep going */
+ break;
+ case ':': /* missing option argument */
+ fprintf(stderr, "%s: option `-%c' requires an
argument\n",
argv[0], optopt);
- /* fall through */
+ return -1;
+ case '?': /* invalid option */
default:
+ fprintf(stderr, "%s: Unknown option `-%c'.\n",
+ argv[0], optopt);
return -1;
}
}
@@ -1027,7 +1032,7 @@ int getoptions(int argc, char *argv[], struct
idledebug_options *options)
fprintf(stderr, "dump values must be a positive value\n");
if (NULL == options->filename) {
- fprintf(stderr, "expected filename\n");
+ fprintf(stderr, "expected -o <filename>\n");
return -1;
}
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev