aboutsummaryrefslogtreecommitdiff
path: root/posix/tstgetopt.c
diff options
context:
space:
mode:
Diffstat (limited to 'posix/tstgetopt.c')
-rw-r--r--posix/tstgetopt.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/posix/tstgetopt.c b/posix/tstgetopt.c
new file mode 100644
index 0000000..fd2d4d0
--- /dev/null
+++ b/posix/tstgetopt.c
@@ -0,0 +1,41 @@
+#include <ansidecl.h>
+#include <unistd.h>
+#include <stdio.h>
+
+int main (int argc, char **argv)
+{
+ 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;
+ }
+
+ 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;
+}