Blame


1 5cedca1b 2004-05-15 devnull /* t9.c: write lines for tables over 200 lines */
2 5cedca1b 2004-05-15 devnull # include "t.h"
3 c5561c23 2004-05-16 devnull static int useln;
4 5cedca1b 2004-05-15 devnull
5 5cedca1b 2004-05-15 devnull void
6 5cedca1b 2004-05-15 devnull yetmore(void)
7 5cedca1b 2004-05-15 devnull {
8 5cedca1b 2004-05-15 devnull for (useln = 0; useln < MAXLIN && table[useln] == 0; useln++)
9 5cedca1b 2004-05-15 devnull ;
10 5cedca1b 2004-05-15 devnull if (useln >= MAXLIN)
11 5cedca1b 2004-05-15 devnull error("Wierd. No data in table.");
12 5cedca1b 2004-05-15 devnull table[0] = table[useln];
13 5cedca1b 2004-05-15 devnull for (useln = nlin - 1; useln >= 0 && (fullbot[useln] || instead[useln]); useln--)
14 5cedca1b 2004-05-15 devnull ;
15 5cedca1b 2004-05-15 devnull if (useln < 0)
16 5cedca1b 2004-05-15 devnull error("Wierd. No real lines in table.");
17 5cedca1b 2004-05-15 devnull domore(leftover);
18 5cedca1b 2004-05-15 devnull while (gets1(cstore = cspace, MAXCHS) && domore(cstore))
19 5cedca1b 2004-05-15 devnull ;
20 5cedca1b 2004-05-15 devnull last = cstore;
21 5cedca1b 2004-05-15 devnull return;
22 5cedca1b 2004-05-15 devnull }
23 5cedca1b 2004-05-15 devnull
24 5cedca1b 2004-05-15 devnull
25 5cedca1b 2004-05-15 devnull int
26 5cedca1b 2004-05-15 devnull domore(char *dataln)
27 5cedca1b 2004-05-15 devnull {
28 5cedca1b 2004-05-15 devnull int icol, ch;
29 5cedca1b 2004-05-15 devnull
30 5cedca1b 2004-05-15 devnull if (prefix(".TE", dataln))
31 5cedca1b 2004-05-15 devnull return(0);
32 a47fbb16 2005-10-31 devnull if (dataln[0] == '.' && !isdigit((uchar)dataln[1])) {
33 8a3cbc15 2004-05-17 devnull Bprint(&tabout, "%s\n", dataln);
34 5cedca1b 2004-05-15 devnull return(1);
35 5cedca1b 2004-05-15 devnull }
36 5cedca1b 2004-05-15 devnull fullbot[0] = 0;
37 5cedca1b 2004-05-15 devnull instead[0] = (char *)0;
38 5cedca1b 2004-05-15 devnull if (dataln[1] == 0)
39 5cedca1b 2004-05-15 devnull switch (dataln[0]) {
40 5cedca1b 2004-05-15 devnull case '_':
41 5cedca1b 2004-05-15 devnull fullbot[0] = '-';
42 5cedca1b 2004-05-15 devnull putline(useln, 0);
43 5cedca1b 2004-05-15 devnull return(1);
44 5cedca1b 2004-05-15 devnull case '=':
45 5cedca1b 2004-05-15 devnull fullbot[0] = '=';
46 5cedca1b 2004-05-15 devnull putline(useln, 0);
47 5cedca1b 2004-05-15 devnull return(1);
48 5cedca1b 2004-05-15 devnull }
49 5cedca1b 2004-05-15 devnull for (icol = 0; icol < ncol; icol++) {
50 5cedca1b 2004-05-15 devnull table[0][icol].col = dataln;
51 5cedca1b 2004-05-15 devnull table[0][icol].rcol = 0;
52 5cedca1b 2004-05-15 devnull for (; (ch = *dataln) != '\0' && ch != tab; dataln++)
53 5cedca1b 2004-05-15 devnull ;
54 5cedca1b 2004-05-15 devnull *dataln++ = '\0';
55 5cedca1b 2004-05-15 devnull switch (ctype(useln, icol)) {
56 5cedca1b 2004-05-15 devnull case 'n':
57 5cedca1b 2004-05-15 devnull table[0][icol].rcol = maknew(table[0][icol].col);
58 5cedca1b 2004-05-15 devnull break;
59 5cedca1b 2004-05-15 devnull case 'a':
60 5cedca1b 2004-05-15 devnull table[0][icol].rcol = table[0][icol].col;
61 5cedca1b 2004-05-15 devnull table[0][icol].col = "";
62 5cedca1b 2004-05-15 devnull break;
63 5cedca1b 2004-05-15 devnull }
64 5cedca1b 2004-05-15 devnull while (ctype(useln, icol + 1) == 's') /* spanning */
65 5cedca1b 2004-05-15 devnull table[0][++icol].col = "";
66 5cedca1b 2004-05-15 devnull if (ch == '\0')
67 5cedca1b 2004-05-15 devnull break;
68 5cedca1b 2004-05-15 devnull }
69 5cedca1b 2004-05-15 devnull while (++icol < ncol)
70 5cedca1b 2004-05-15 devnull table[0][icol].col = "";
71 5cedca1b 2004-05-15 devnull putline(useln, 0);
72 5cedca1b 2004-05-15 devnull exstore = exspace; /* reuse space for numerical items */
73 5cedca1b 2004-05-15 devnull return(1);
74 5cedca1b 2004-05-15 devnull }
75 5cedca1b 2004-05-15 devnull
76 5cedca1b 2004-05-15 devnull