From 41cfadd63c6d28400f263460e3f2b15e74893b63 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sat, 30 Sep 1995 17:10:48 +0000 Subject: Sat Sep 30 11:47:05 1995 Roland McGrath * 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 * 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. --- posix/tstgetopt.c | 64 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 24 deletions(-) (limited to 'posix/tstgetopt.c') diff --git a/posix/tstgetopt.c b/posix/tstgetopt.c index fd2d4d0469..2258b20770 100644 --- a/posix/tstgetopt.c +++ b/posix/tstgetopt.c @@ -1,41 +1,57 @@ -#include #include #include +#include -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; } -- cgit 1.4.1