Annotation of 43BSD/usr.bin/tbl/t3.c, revision 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.