From d3eadc9cbfc4387f9def0879551e86b5a21feb27 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 23 Apr 2005 05:39:55 +0000 Subject: (main): Report proper program name when getopt finds trouble. --- src/nice.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'src/nice.c') diff --git a/src/nice.c b/src/nice.c index 689fa49dd..520821464 100644 --- a/src/nice.c +++ b/src/nice.c @@ -116,7 +116,7 @@ main (int argc, char **argv) for (i = 1; i < argc; /* empty */) { - char *s = argv[i]; + char const *s = argv[i]; if (s[0] == '-' && ISDIGIT (s[1 + (s[1] == '-' || s[1] == '+')]) && posix2_version () < 200112) @@ -127,28 +127,23 @@ main (int argc, char **argv) else { int optc; - char **fake_argv = argv + i - 1; + int fake_argc = argc - (i - 1); + char **fake_argv = argv + (i - 1); + + /* Ensure that any getopt diagnostics use the right name. */ + fake_argv[0] = program_name; /* Initialize getopt_long's internal state. */ optind = 0; - if ((optc = getopt_long (argc - (i - 1), fake_argv, "+n:", - longopts, NULL)) != -1) - { - switch (optc) - { - case '?': - usage (EXIT_FAIL); - - case 'n': - adjustment_given = optarg; - break; - } - } - + optc = getopt_long (fake_argc, fake_argv, "+n:", longopts, NULL); i += optind - 1; - if (optc == EOF) + if (optc == '?') + usage (EXIT_FAIL); + else if (optc == 'n') + adjustment_given = optarg; + else /* optc == -1 */ break; } } -- cgit v1.2.3-54-g00ecf