|
|
1.1 root 1: /* t9.c: write lines for tables over 200 lines */
2: # include "t..c"
3: static useln;
4: extern char *maknew();
5: yetmore()
6: {
7: for(useln=0; useln<MAXLIN && table[useln]==0; useln++);
8: if (useln>=MAXLIN)
9: error("Wierd. No data in table.");
10: table[0]=table[useln];
11: for(useln=nlin-1; useln>=0 && (fullbot[useln] || instead[useln]); useln--);
12: if (useln<0)
13: error("Wierd. No real lines in table.");
14: domore(leftover);
15: while (gets1(cstore=cspace, MAXCHS) && domore(cstore))
16: ;
17: last =cstore;
18: return;
19: }
20: domore(dataln)
21: char *dataln;
22: {
23: int icol, ch;
24: if (prefix(".TE", dataln))
25: return(0);
26: if (dataln[0] == '.' && !isdigit(dataln[1]))
27: {
28: puts(dataln);
29: return(1);
30: }
31: fullbot[0]=0;
32: instead[0]=(char *)0;
33: if (dataln[1]==0)
34: switch(dataln[0])
35: {
36: case '_': fullbot[0]= '-'; putline(useln,0); return(1);
37: case '=': fullbot[0]= '='; putline(useln, 0); return(1);
38: }
39: for (icol = 0; icol <ncol; icol++)
40: {
41: table[0][icol].col = dataln;
42: table[0][icol].rcol=0;
43: for(; (ch= *dataln) != '\0' && ch != tab; dataln++)
44: ;
45: *dataln++ = '\0';
46: switch(ctype(useln,icol))
47: {
48: case 'n':
49: table[0][icol].rcol = maknew(table[0][icol].col);
50: break;
51: case 'a':
52: table[0][icol].rcol = table[0][icol].col;
53: table[0][icol].col= "";
54: break;
55: }
56: while (ctype(useln,icol+1)== 's') /* spanning */
57: table[0][++icol].col = "";
58: if (ch == '\0') break;
59: }
60: while (++icol <ncol)
61: table[0][icol].col = "";
62: putline(useln,0);
63: exstore=exspace; /* reuse space for numerical items */
64: return(1);
65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.