Annotation of 42BSD/usr.bin/uucp/getopt.c, revision 1.1.1.1

1.1       root        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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.