Annotation of researchv9/cmd/tbl/t3.c, revision 1.1.1.1

1.1       root        1:  /* t3.c: interpret commands affecting whole table */
                      2: # include "t..c"
                      3: struct optstr {char *optnam; int *optadd;} options [] = {
                      4:        "expand", &expflg,
                      5:        "EXPAND", &expflg,
                      6:        "center", &ctrflg,
                      7:        "CENTER", &ctrflg,
                      8:        "box", &boxflg,
                      9:        "BOX", &boxflg,
                     10:        "allbox", &allflg,
                     11:        "ALLBOX", &allflg,
                     12:        "doublebox", &dboxflg,
                     13:        "DOUBLEBOX", &dboxflg,
                     14:        "frame", &boxflg,
                     15:        "FRAME", &boxflg,
                     16:        "doubleframe", &dboxflg,
                     17:        "DOUBLEFRAME", &dboxflg,
                     18:        "tab", &tab,
                     19:        "TAB", &tab,
                     20:        "linesize", &linsize,
                     21:        "LINESIZE", &linsize,
                     22:        "delim", &delim1,
                     23:        "DELIM", &delim1,
                     24:        0,0};
                     25: getcomm()
                     26: {
                     27: char line[200], *cp, nb[25], *t;
                     28: struct optstr *lp;
                     29: int c, ci, found;
                     30: for(lp= options; lp->optnam; lp++)
                     31:        *(lp->optadd) = 0;
                     32: texname = texstr[texct=0];
                     33: tab = '\t';
                     34: printf(".nr %d \\n(.s\n", LSIZE);
                     35: gets1(line);
                     36: /* see if this is a command line */
                     37: if (strchr(line,';') == NULL)
                     38:        {
                     39:        backrest(line);
                     40:        return;
                     41:        }
                     42: for(cp=line; (c = *cp) != ';'; cp++)
                     43:        {
                     44:        if (!letter(c)) continue;
                     45:        found=0;
                     46:        for(lp= options; lp->optadd; lp++)
                     47:                {
                     48:                if (prefix(lp->optnam, cp))
                     49:                        {
                     50:                        *(lp->optadd) = 1;
                     51:                        cp += strlen(lp->optnam);
                     52:                        if (letter(*cp))
                     53:                                error("Misspelled global option");
                     54:                        while (*cp==' ')cp++;
                     55:                        t=nb;
                     56:                        if ( *cp == '(')
                     57:                                while ((ci= *++cp) != ')')
                     58:                                        *t++ = ci;
                     59:                        else cp--;
                     60:                        *t++ = 0; *t=0;
                     61:                        if (lp->optadd == &tab)
                     62:                                {
                     63:                                if (nb[0])
                     64:                                        *(lp->optadd) = nb[0];
                     65:                                }
                     66:                        if (lp->optadd == &linsize)
                     67:                                printf(".nr %d %s\n", LSIZE, nb);
                     68:                        if (lp->optadd == &delim1)
                     69:                                {
                     70:                                delim1 = nb[0];
                     71:                                delim2 = nb[1];
                     72:                                }
                     73:                        found=1;
                     74:                        break;
                     75:                        }
                     76:                }
                     77:        if (!found)
                     78:                error("Illegal option");
                     79:        }
                     80: cp++;
                     81: backrest(cp);
                     82: return;
                     83: }
                     84: backrest(cp)
                     85:        char *cp;
                     86: {
                     87: char *s;
                     88: for(s=cp; *s; s++);
                     89: un1getc('\n');
                     90: while (s>cp)
                     91:        un1getc(*--s);
                     92: return;
                     93: }

unix.superglobalmegacorp.com

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