diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-09-06 18:07:07 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-09-06 18:07:07 +0000 |
commit | b64cd08aab1cb423d1fb18132f0c21ee5ac10f31 (patch) | |
tree | 04cb2b1bed0a40df98044e9273538d968e9caa18 /posix | |
parent | b8b17701ae1d1bdb795c262d1ca780b389efadbf (diff) | |
download | glibc-b64cd08aab1cb423d1fb18132f0c21ee5ac10f31.tar.gz glibc-b64cd08aab1cb423d1fb18132f0c21ee5ac10f31.tar.xz glibc-b64cd08aab1cb423d1fb18132f0c21ee5ac10f31.zip |
Update.
2000-09-06 Ulrich Drepper <drepper@redhat.com> * posix/getopt.c (_getopt_internal): Don't recognize an option name as ambiguous if it's a prefix for more than one name but the other struct option values are identical. * posix/tstgetopt.c: Add test for improved ambiguity recognition. Don't depend on visual inspection of the output file to recognize errors. * posix/Makefile (tstgetopt-ARGS): Add a few more parameters.
Diffstat (limited to 'posix')
-rw-r--r-- | posix/Makefile | 2 | ||||
-rw-r--r-- | posix/tstgetopt.c | 26 |
2 files changed, 23 insertions, 5 deletions
diff --git a/posix/Makefile b/posix/Makefile index d1dc009bf4..24a8c67b12 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -109,7 +109,7 @@ endif CFLAGS-regex.c = -Wno-strict-prototypes CFLAGS-getaddrinfo.c = -DRESOLVER tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \ - --none random + --none random --col --color --colour tst-exec-ARGS = -- $(built-program-cmd) tst-spawn-ARGS = -- $(built-program-cmd) diff --git a/posix/tstgetopt.c b/posix/tstgetopt.c index 40cf3d9c82..97ae2ef251 100644 --- a/posix/tstgetopt.c +++ b/posix/tstgetopt.c @@ -1,6 +1,7 @@ -#include <unistd.h> -#include <stdio.h> #include <getopt.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> int main (int argc, char **argv) @@ -10,14 +11,19 @@ main (int argc, char **argv) {"required", required_argument, NULL, 'r'}, {"optional", optional_argument, NULL, 'o'}, {"none", no_argument, NULL, 'n'}, + {"color", no_argument, NULL, 'C'}, + {"colour", no_argument, NULL, 'C'}, {NULL, 0, NULL, 0 } }; int aflag = 0; int bflag = 0; char *cvalue = NULL; + int Cflag = 0; + int nflag = 0; int index; int c; + int result = 0; while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0) switch (c) @@ -31,6 +37,9 @@ main (int argc, char **argv) case 'c': cvalue = optarg; break; + case 'C': + ++Cflag; + break; case '?': fputs ("Unknown option.\n", stderr); return 1; @@ -40,19 +49,28 @@ main (int argc, char **argv) case 'r': printf ("--required %s\n", optarg); + result |= strcmp (optarg, "foobar") != 0; break; case 'o': printf ("--optional %s\n", optarg); + result |= optarg == NULL || strcmp (optarg, "bazbug") != 0; break; case 'n': puts ("--none"); + nflag = 1; break; } - printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue); + printf ("aflag = %d, bflag = %d, cvalue = %s, Cflags = %d, nflag = %d\n", + aflag, bflag, cvalue, Cflag, nflag); + + result |= (aflag != 1 || bflag != 1 || cvalue == NULL + || strcmp (cvalue, "foobar") != 0 || Cflag != 3 || nflag != 1); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); - return 0; + result |= optind + 1 != argc || strcmp (argv[optind], "random") != 0; + + return result; } |