Annotation of researchv9/cmd/tbl/t3.c, revision 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.