xref: /openbsd-src/usr.bin/getopt/getopt.c (revision 0bd1216cbfac4316d823b5f086842b66ddea2018)
1*0bd1216cSderaadt /*	$OpenBSD: getopt.c,v 1.10 2015/10/09 01:37:07 deraadt Exp $	*/
22e60ceceSjmc 
32e60ceceSjmc /*
42e60ceceSjmc  * This material, written by Henry Spencer, was released by him
52e60ceceSjmc  * into the public domain and is thus not subject to any copyright.
62e60ceceSjmc  */
71258a77dSderaadt 
8df930be7Sderaadt #include <stdio.h>
970ef01f6Sdavid #include <stdlib.h>
10c3e1e82eSderaadt #include <unistd.h>
111d36a22dSderaadt #include <err.h>
12df930be7Sderaadt 
13c3e1e82eSderaadt int
main(int argc,char * argv[])141837a5caSderaadt main(int argc, char *argv[])
15df930be7Sderaadt {
16df930be7Sderaadt 	extern int optind;
17df930be7Sderaadt 	extern char *optarg;
18df930be7Sderaadt 	int c;
19df930be7Sderaadt 	int status = 0;
20df930be7Sderaadt 
21*0bd1216cSderaadt 	if (pledge("stdio", NULL) == -1)
22*0bd1216cSderaadt 		err(1, "pledge");
231d36a22dSderaadt 
24df930be7Sderaadt 	optind = 2;	/* Past the program name and the option letters. */
2572799b18Smillert 	while ((c = getopt(argc, argv, argv[1])) != -1)
26df930be7Sderaadt 		switch (c) {
27df930be7Sderaadt 		case '?':
28df930be7Sderaadt 			status = 1;	/* getopt routine gave message */
29df930be7Sderaadt 			break;
30df930be7Sderaadt 		default:
31df930be7Sderaadt 			if (optarg != NULL)
32df930be7Sderaadt 				printf(" -%c %s", c, optarg);
33df930be7Sderaadt 			else
34df930be7Sderaadt 				printf(" -%c", c);
35df930be7Sderaadt 			break;
36df930be7Sderaadt 		}
37df930be7Sderaadt 	printf(" --");
38df930be7Sderaadt 	for (; optind < argc; optind++)
39df930be7Sderaadt 		printf(" %s", argv[optind]);
40df930be7Sderaadt 	printf("\n");
41df930be7Sderaadt 	exit(status);
42df930be7Sderaadt }
43