Annotation of 41BSD/cmd/struct/0.args.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #
                      3: #include "def.h"
                      4: int errflag;
                      5: FILE *infd;
                      6: 
                      7: 
                      8: int intcase=1, arbcase=0;
                      9: int exitsize=0;                        /* max number of nodes to be left in loop without iterating */
                     10: int maxnode=400;       /* max number of nodes */
                     11: int maxhash=347;       /* prime number = size of hash table */
                     12: int progress=0;                /* if not 0, print line number every n lines, n = progress */
                     13: int labinit=10;                        /* labels generated starting with labinit */
                     14: int labinc=10;                 /* labels increase by labinc */
                     15: int inputform=0;               /* = 0 if freeform input, 1 if standard form input */
                     16: int debug=0;
                     17: int levbrk=1;  /* true implies multilevel breaks; false implies single-level breaks only */
                     18: int levnxt=1;  /* true implies multilevel nexts; false implies single-level nexts only */
                     19: 
                     20: 
                     21: int maxprogsw=12;              /* number of program switches which can be set */
                     22: char *progsw[]         = {"i", "a",
                     23:                        "e", "m",
                     24:                        "h", "p",
                     25:                        "t", "c",
                     26:                        "s", "d",
                     27:                        "b", "n"
                     28:                        };
                     29: 
                     30: 
                     31: int *swval[]           = {&intcase, &arbcase,
                     32:                        &exitsize, &maxnode,
                     33:                        &maxhash, &progress,
                     34:                        &labinit, &labinc,
                     35:                        &inputform, &debug,
                     36:                        &levbrk, &levnxt
                     37:                        };
                     38: 
                     39: 
                     40: char *getargs(argc, argv)
                     41: int argc; char *argv[];
                     42:        {
                     43:        int n, infile;
                     44:        infile = 0;
                     45: 
                     46:        for (n = 1; n < argc; ++n)
                     47:                {
                     48:                if (argv[n][0] == '-')
                     49:                        setsw(&argv[n][1]);
                     50:                else
                     51:                        {
                     52:                        if (infile != 0)
                     53:                                error("multiple input files - using first one: ", argv[infile],"");
                     54:                        else
                     55:                                infile = n;
                     56:                        }
                     57:                }
                     58:        if (errflag)
                     59:                exit(1);
                     60:        if (!infile) faterr("no input file","","");
                     61:        infd = fopen(argv[infile],"r");
                     62:        if (infd == NULL)
                     63:                faterr("can't open input file:",argv[infile],"");
                     64:        return;
                     65:        }
                     66: 
                     67: setsw(str)
                     68: char *str;
                     69:        {
                     70:        int i, val, swnum;
                     71: #define maxtemp 15
                     72:        char temp[maxtemp];
                     73:        for (i = 0; 'a' <= str[i] && str[i] <= 'z'; ++i)
                     74:                {
                     75:                if (i >= maxtemp)
                     76:                        {
                     77:                        error("invalid switch:",str,"");
                     78:                        errflag = 1;
                     79:                        }
                     80:                temp[i] = str[i];
                     81:                }
                     82:        temp[i] = '\0';
                     83: 
                     84:        swnum = find(temp,progsw,maxprogsw);
                     85:        if (swnum == -1)
                     86:                {
                     87:                error("invalid switch:", str,"");
                     88:                errflag = 1;
                     89:                return;
                     90:                }
                     91:        if (str[i] == '\0')
                     92:                *(swval[swnum]) = !*(swval[swnum]);
                     93:        else
                     94:                {
                     95:                sscanf(&str[i],"%d",&val);
                     96:                *(swval[swnum]) = val;
                     97:                }
                     98:        }

unix.superglobalmegacorp.com

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