* io/Versions (__dup2, __pipe): Added to GLIBC_2.0 for
[kopensolaris-gnu/glibc.git] / posix / tstgetopt.c
1 #include <unistd.h>
2 #include <stdio.h>
3 #include <getopt.h>
4
5 int
6 main (int argc, char **argv)
7 {
8   static const struct option options[] =
9     {
10       {"required", required_argument, NULL, 'r'},
11       {"optional", optional_argument, NULL, 'o'},
12       {"none",     no_argument,       NULL, 'n'},
13       {NULL,       0,                 NULL, 0 }
14     };
15
16   int aflag = 0;
17   int bflag = 0;
18   char *cvalue = NULL;
19   int index;
20   int c;
21
22   while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0)
23     switch (c)
24       {
25       case 'a':
26         aflag = 1;
27         break;
28       case 'b':
29         bflag = 1;
30         break;
31       case 'c':
32         cvalue = optarg;
33         break;
34       case '?':
35         fputs ("Unknown option.\n", stderr);
36         return 1;
37       default:
38         fprintf (stderr, "This should never happen!\n");
39         return 1;
40
41       case 'r':
42         printf ("--required %s\n", optarg);
43         break;
44       case 'o':
45         printf ("--optional %s\n", optarg);
46         break;
47       case 'n':
48         puts ("--none");
49         break;
50       }
51
52   printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue);
53
54   for (index = optind; index < argc; index++)
55     printf ("Non-option argument %s\n", argv[index]);
56
57   return 0;
58 }