Annotation of researchv8dc/cmd/uucp/getopt.c, revision 1.1.1.1

1.1       root        1: /*     /sccs/src/cmd/uucp/s.getopt.c
                      2:        getopt.c        1.1     8/30/84 17:37:21
                      3: */
                      4: #include "uucp.h"
                      5: VERSION(@(#)getopt.c   1.1);
                      6: 
                      7: /*     @(#)getopt.c    1.2     */
                      8: /*     3.0 SID #       1.2     */
                      9: /*LINTLIBRARY*/
                     10: #define ERR(s, c)      if(opterr){\
                     11:        (void) fputs(argv[0], stderr);\
                     12:        (void) fputs(s, stderr);\
                     13:        (void) fputc(c, stderr);\
                     14:        (void) fputc('\n', stderr);}
                     15: 
                     16: extern int strcmp();
                     17: extern char *strchr();
                     18: 
                     19: int    opterr = 1;
                     20: int    optind = 1;
                     21: int    optopt;
                     22: char   *optarg;
                     23: 
                     24: int
                     25: getopt(argc, argv, opts)
                     26: int    argc;
                     27: char   **argv, *opts;
                     28: {
                     29:        static int sp = 1;
                     30:        register int c;
                     31:        register char *cp;
                     32: 
                     33:        if(sp == 1)
                     34:                if(optind >= argc ||
                     35:                   argv[optind][0] != '-' || argv[optind][1] == '\0')
                     36:                        return(EOF);
                     37:                else if(strcmp(argv[optind], "--") == NULL) {
                     38:                        optind++;
                     39:                        return(EOF);
                     40:                }
                     41:        optopt = c = argv[optind][sp];
                     42:        if(c == ':' || (cp=strchr(opts, c)) == NULL) {
                     43:                ERR(": illegal option -- ", c);
                     44:                if(argv[optind][++sp] == '\0') {
                     45:                        optind++;
                     46:                        sp = 1;
                     47:                }
                     48:                return('?');
                     49:        }
                     50:        if(*++cp == ':') {
                     51:                if(argv[optind][sp+1] != '\0')
                     52:                        optarg = &argv[optind++][sp+1];
                     53:                else if(++optind >= argc) {
                     54:                        ERR(": option requires an argument -- ", c);
                     55:                        sp = 1;
                     56:                        return('?');
                     57: #ifndef NO_MINUS
                     58:                } else
                     59:                        optarg = argv[optind++];
                     60: #else NO_MINUS
                     61:                } else {
                     62:                        optarg = argv[optind++];
                     63:                        if (*optarg == '-') {
                     64:                            ERR(": option requires an argument -- ", c);
                     65:                            sp = 1;
                     66:                            return('?');
                     67:                        }
                     68:                }
                     69: #endif NO_MINUS
                     70:                sp = 1;
                     71:        } else {
                     72:                if(argv[optind][++sp] == '\0') {
                     73:                        sp = 1;
                     74:                        optind++;
                     75:                }
                     76:                optarg = NULL;
                     77:        }
                     78:        return(c);
                     79: }

unix.superglobalmegacorp.com

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