aboutsummaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-09-30 17:10:48 +0000
committerRoland McGrath <roland@gnu.org>1995-09-30 17:10:48 +0000
commit41cfadd63c6d28400f263460e3f2b15e74893b63 (patch)
treea630064faeaec664341df5534b8defe2f5d1443a /posix
parent24906b43b9bd9108aef17d18dfbb8764212085f7 (diff)
downloadglibc-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.args3
-rw-r--r--posix/tstgetopt.c64
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;
}