|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.