Commit | Line | Data |
---|---|---|
476fcd16 SL |
1 | #ifndef lint |
2 | static char sccsid[] = "@(#)t9.c 4.2 %G%"; | |
3 | #endif | |
d883bd6f BS |
4 | |
5 | /* t9.c: write lines for tables over 200 lines */ | |
6 | # include "t..c" | |
7 | static useln; | |
8 | yetmore() | |
9 | { | |
10 | for(useln=0; useln<MAXLIN && table[useln]==0; useln++); | |
11 | if (useln>=MAXLIN) | |
12 | error("Wierd. No data in table."); | |
13 | table[0]=table[useln]; | |
14 | for(useln=nlin-1; useln>=0 && (fullbot[useln] || instead[useln]); useln--); | |
15 | if (useln<0) | |
16 | error("Wierd. No real lines in table."); | |
17 | domore(leftover); | |
18 | while (gets1(cstore=cspace) && domore(cstore)) | |
19 | ; | |
20 | last =cstore; | |
21 | return; | |
22 | } | |
23 | domore(dataln) | |
24 | char *dataln; | |
25 | { | |
26 | int icol, ch; | |
27 | if (prefix(".TE", dataln)) | |
28 | return(0); | |
29 | if (dataln[0] == '.' && !isdigit(dataln[1])) | |
30 | { | |
31 | puts(dataln); | |
32 | return(1); | |
33 | } | |
34 | instead[0]=fullbot[0]=0; | |
35 | if (dataln[1]==0) | |
36 | switch(dataln[0]) | |
37 | { | |
38 | case '_': fullbot[0]= '-'; putline(useln,0); return(1); | |
39 | case '=': fullbot[0]= '='; putline(useln, 0); return(1); | |
40 | } | |
41 | for (icol = 0; icol <ncol; icol++) | |
42 | { | |
43 | table[0][icol].col = dataln; | |
44 | table[0][icol].rcol=0; | |
45 | for(; (ch= *dataln) != '\0' && ch != tab; dataln++) | |
46 | ; | |
47 | *dataln++ = '\0'; | |
48 | switch(ctype(useln,icol)) | |
49 | { | |
50 | case 'n': | |
51 | table[0][icol].rcol = maknew(table[0][icol].col); | |
52 | break; | |
53 | case 'a': | |
54 | table[0][icol].rcol = table[0][icol].col; | |
55 | table[0][icol].col= ""; | |
56 | break; | |
57 | } | |
58 | while (ctype(useln,icol+1)== 's') /* spanning */ | |
59 | table[0][++icol].col = ""; | |
60 | if (ch == '\0') break; | |
61 | } | |
62 | while (++icol <ncol) | |
63 | table[0][icol].col = ""; | |
64 | putline(useln,0); | |
65 | return(1); | |
66 | } |