Annotation of 43BSDTahoe/usr.bin/tbl/t3.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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