xref: /freebsd/usr.bin/getopt/getopt.c (revision b268886863c48b66e5af50362872591ba4d9506f)
162f882d6SWarner Losh /* $FreeBSD$ */
262f882d6SWarner Losh 
3b37b9a6dSNate Williams #include <stdio.h>
47a19d1bbSDima Dorfman #include <stdlib.h>
562f882d6SWarner Losh #include <unistd.h>
6b37b9a6dSNate Williams 
7b2688868SDavid Malone int
8b37b9a6dSNate Williams main(argc, argv)
9b37b9a6dSNate Williams int argc;
10b37b9a6dSNate Williams char *argv[];
11b37b9a6dSNate Williams {
12b37b9a6dSNate Williams 	int c;
13b37b9a6dSNate Williams 	int status = 0;
14b37b9a6dSNate Williams 
15b37b9a6dSNate Williams 	optind = 2;	/* Past the program name and the option letters. */
161c8af878SWarner Losh 	while ((c = getopt(argc, argv, argv[1])) != -1)
17b37b9a6dSNate Williams 		switch (c) {
18b37b9a6dSNate Williams 		case '?':
19b37b9a6dSNate Williams 			status = 1;	/* getopt routine gave message */
20b37b9a6dSNate Williams 			break;
21b37b9a6dSNate Williams 		default:
22b37b9a6dSNate Williams 			if (optarg != NULL)
230ab2a7aeSMartin Cracauer 				printf(" -%c %s", c, optarg);
24b37b9a6dSNate Williams 			else
25b37b9a6dSNate Williams 				printf(" -%c", c);
26b37b9a6dSNate Williams 			break;
27b37b9a6dSNate Williams 		}
28b37b9a6dSNate Williams 	printf(" --");
29b37b9a6dSNate Williams 	for (; optind < argc; optind++)
30b37b9a6dSNate Williams 		printf(" %s", argv[optind]);
31b37b9a6dSNate Williams 	printf("\n");
32b37b9a6dSNate Williams 	exit(status);
33b37b9a6dSNate Williams }
34