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;
6 5cedca1b 2004-05-15 devnull yetmore(void)
8 5cedca1b 2004-05-15 devnull for (useln = 0; useln < MAXLIN && table[useln] == 0; useln++)
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--)
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))
20 5cedca1b 2004-05-15 devnull last = cstore;
26 5cedca1b 2004-05-15 devnull domore(char *dataln)
28 5cedca1b 2004-05-15 devnull int icol, ch;
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);
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);
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++)
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);
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 = "";
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')
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);