1: #ifndef lint
2: static char sccsid[] = "@(#)getopt.c 5.1 (Berkeley) 7/2/83";
3: #endif
4:
5: #include <stdio.h>
6: #define ERR(s, c) if(opterr){\
7: fputs(argv[0], stderr);\
8: fputs(s, stderr);\
9: fputc(c, stderr);\
10: fputc('\n', stderr);} else
11:
12: int opterr = 1;
13: int optind = 1;
14: int optopt;
15: char *optarg;
16:
17: extern char *index();
18:
19: int
20: getopt (argc, argv, opts)
21: char **argv, *opts;
22: {
23: static int sp = 1;
24: register c;
25: register char *cp;
26:
27: if (sp == 1)
28: if (optind >= argc ||
29: argv[optind][0] != '-' || argv[optind][1] == '\0')
30: return EOF;
31: else if (strcmp(argv[optind], "--") == NULL) {
32: optind++;
33: return EOF;
34: }
35: optopt = c = argv[optind][sp];
36: if (c == ':' || (cp=index(opts, c)) == NULL) {
37: ERR (": illegal option -- ", c);
38: if (argv[optind][++sp] == '\0') {
39: optind++;
40: sp = 1;
41: }
42: return '?';
43: }
44: if (*++cp == ':') {
45: if (argv[optind][sp+1] != '\0')
46: optarg = &argv[optind++][sp+1];
47: else if (++optind >= argc) {
48: ERR (": option requires an argument -- ", c);
49: sp = 1;
50: return '?';
51: } else
52: optarg = argv[optind++];
53: sp = 1;
54: }
55: else {
56: if (argv[optind][++sp] == '\0') {
57: sp = 1;
58: optind++;
59: }
60: optarg = NULL;
61: }
62: return c;
63: }
Defined functions
Defined variables
optind
defined in line
13; used 14 times
sccsid
defined in line
2;
never used
Defined macros
ERR
defined in line
6; used 2 times