diff options
author | Roland McGrath <roland@gnu.org> | 1995-09-30 17:10:48 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-09-30 17:10:48 +0000 |
commit | 41cfadd63c6d28400f263460e3f2b15e74893b63 (patch) | |
tree | a630064faeaec664341df5534b8defe2f5d1443a /posix | |
parent | 24906b43b9bd9108aef17d18dfbb8764212085f7 (diff) | |
download | glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.zip glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.tar.gz glibc-41cfadd63c6d28400f263460e3f2b15e74893b63.tar.bz2 |
Sat Sep 30 11:47:05 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* posix/tstgetopt.c, posix/tstgetopt.args: Test long options too.
* sysdeps/unix/sysv/linux/i386/init-first.c (init): Save, set, and
restore %ebx by hand for personality syscall.
GCC cannot deal with spilling the dedicated GOT register.
* misc/Makefile (routines): Add mntent, which was somehow omitted.
Fri Sep 29 15:07:10 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* sysdeps/unix/sysv/linux/adjtime.c (__adjtime):
Change name of field `mode' in `struct timex' to `modes'.
Linux-1.3.28 updates this name according to RFC 1489.
Diffstat (limited to 'posix')
-rw-r--r-- | posix/tstgetopt.args | 3 | ||||
-rw-r--r-- | posix/tstgetopt.c | 64 |
2 files changed, 42 insertions, 25 deletions
diff --git a/posix/tstgetopt.args b/posix/tstgetopt.args index 023e102..c82c865 100644 --- a/posix/tstgetopt.args +++ b/posix/tstgetopt.args @@ -1 +1,2 @@ --a -b -cfoobar +-a -b -cfoobar --required foobar --optional=bazbug --none random + diff --git a/posix/tstgetopt.c b/posix/tstgetopt.c index fd2d4d0..2258b20 100644 --- a/posix/tstgetopt.c +++ b/posix/tstgetopt.c @@ -1,41 +1,57 @@ -#include <ansidecl.h> #include <unistd.h> #include <stdio.h> +#include <getopt.h> -int main (int argc, char **argv) +int +main (int argc, char **argv) { + static const struct option options[] = + { + {"required", required_argument, NULL, 'r'}, + {"optional", optional_argument, NULL, 'o'}, + {"none", no_argument, NULL, 'n'} + }; + int aflag = 0; int bflag = 0; char *cvalue = NULL; int index; int c; - while ((c = getopt (argc, argv, "abc:")) >= 0) - switch (c) { - case 'a': - aflag = 1; - break; - case 'b': - bflag = 1; - break; - case 'c': - cvalue = optarg; - break; - case '?': -#if 0 - fprintf (stderr, "Unknown option %c.\n", optopt); -#else - fputs ("Unknown option.\n", stderr); -#endif - return -1; - default: - fprintf (stderr, "This should never happen!\n"); - return -1; - } + while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0) + switch (c) + { + case 'a': + aflag = 1; + break; + case 'b': + bflag = 1; + break; + case 'c': + cvalue = optarg; + break; + case '?': + fputs ("Unknown option.\n", stderr); + return 1; + default: + fprintf (stderr, "This should never happen!\n"); + return 1; + + case 'r': + printf ("--required %s\n", optarg); + break; + case 'o': + printf ("--optional %s\n", optarg); + break; + case 'n': + puts ("--none"); + break; + } printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); + return 0; } |