Test long options too.
authorroland <roland>
Sat, 30 Sep 1995 16:27:20 +0000 (16:27 +0000)
committerroland <roland>
Sat, 30 Sep 1995 16:27:20 +0000 (16:27 +0000)
posix/tstgetopt.c

index fd2d4d0..2258b20 100644 (file)
@@ -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;
 }