diff options
-rw-r--r-- | src/nice.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/nice.c b/src/nice.c index 0d3dcbb76..d0db40018 100644 --- a/src/nice.c +++ b/src/nice.c @@ -80,13 +80,35 @@ main (argc, argv) program_name = argv[0]; + /* Inhibit the error message getopt would otherwise give for + unrecognized options. */ + opterr = 0; + while ((optc = getopt_long (argc, argv, "+0123456789-n:", longopts, (int *) 0)) != EOF) { + char *s; + switch (optc) { case '?': - usage (1); + /* Determine whether this is an option like `--5'. + If so, treat it like `-n -5'. */ + s = argv[optind - 1]; + /* Make sure s[1..] is a valid negative integer. + Test/convert `s+1' rather than `s+2' so we reject options + like `---5' as unrecognized. */ + if (s[1] == '-' && isinteger (s + 1)) + { + adjustment = atoi (s + 1); + adjustment_given = 1; + } + else + { + error (0, 0, "unrecognized option `%s'", s); + usage (1); + } + break; case 0: break; |