Let's try this. It's BUGGERED.
This commit is contained in:
parent
76e6aca867
commit
5cedca1b69
118 changed files with 26947 additions and 1 deletions
104
src/cmd/tbl/t3.c
Normal file
104
src/cmd/tbl/t3.c
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
/* t3.c: interpret commands affecting whole table */
|
||||
# include "t.h"
|
||||
struct optstr {
|
||||
char *optnam;
|
||||
int *optadd;
|
||||
} options [] = {
|
||||
"expand", &expflg,
|
||||
"EXPAND", &expflg,
|
||||
"center", &ctrflg,
|
||||
"CENTER", &ctrflg,
|
||||
"box", &boxflg,
|
||||
"BOX", &boxflg,
|
||||
"allbox", &allflg,
|
||||
"ALLBOX", &allflg,
|
||||
"doublebox", &dboxflg,
|
||||
"DOUBLEBOX", &dboxflg,
|
||||
"frame", &boxflg,
|
||||
"FRAME", &boxflg,
|
||||
"doubleframe", &dboxflg,
|
||||
"DOUBLEFRAME", &dboxflg,
|
||||
"tab", &tab,
|
||||
"TAB", &tab,
|
||||
"linesize", &linsize,
|
||||
"LINESIZE", &linsize,
|
||||
"delim", &delim1,
|
||||
"DELIM", &delim1,
|
||||
0, 0};
|
||||
|
||||
|
||||
void
|
||||
getcomm(void)
|
||||
{
|
||||
char line[200], *cp, nb[25], *t;
|
||||
struct optstr *lp;
|
||||
int c, ci, found;
|
||||
|
||||
for (lp = options; lp->optnam; lp++)
|
||||
*(lp->optadd) = 0;
|
||||
texname = texstr[texct=0];
|
||||
tab = '\t';
|
||||
Bprint(&tabout, ".nr %d \\n(.s\n", LSIZE);
|
||||
gets1(line, sizeof(line));
|
||||
/* see if this is a command line */
|
||||
if (strchr(line, ';') == 0) {
|
||||
backrest(line);
|
||||
return;
|
||||
}
|
||||
for (cp = line; (c = *cp) != ';'; cp++) {
|
||||
if (!letter(c))
|
||||
continue;
|
||||
found = 0;
|
||||
for (lp = options; lp->optadd; lp++) {
|
||||
if (prefix(lp->optnam, cp)) {
|
||||
*(lp->optadd) = 1;
|
||||
cp += strlen(lp->optnam);
|
||||
if (letter(*cp))
|
||||
error("Misspelled global option");
|
||||
while (*cp == ' ')
|
||||
cp++;
|
||||
t = nb;
|
||||
if ( *cp == '(')
|
||||
while ((ci = *++cp) != ')')
|
||||
*t++ = ci;
|
||||
else
|
||||
cp--;
|
||||
*t++ = 0;
|
||||
*t = 0;
|
||||
if (lp->optadd == &tab) {
|
||||
if (nb[0])
|
||||
*(lp->optadd) = nb[0];
|
||||
}
|
||||
if (lp->optadd == &linsize)
|
||||
Bprint(&tabout, ".nr %d %s\n", LSIZE, nb);
|
||||
if (lp->optadd == &delim1) {
|
||||
delim1 = nb[0];
|
||||
delim2 = nb[1];
|
||||
}
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
error("Illegal option");
|
||||
}
|
||||
cp++;
|
||||
backrest(cp);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
backrest(char *cp)
|
||||
{
|
||||
char *s;
|
||||
|
||||
for (s = cp; *s; s++)
|
||||
;
|
||||
un1getc('\n');
|
||||
while (s > cp)
|
||||
un1getc(*--s);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue