13e12c5d1SDavid du Colombier /* t9.c: write lines for tables over 200 lines */
23e12c5d1SDavid du Colombier # include "t.h"
33e12c5d1SDavid du Colombier static useln;
43e12c5d1SDavid du Colombier
53e12c5d1SDavid du Colombier void
yetmore(void)63e12c5d1SDavid du Colombier yetmore(void)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier for (useln = 0; useln < MAXLIN && table[useln] == 0; useln++)
93e12c5d1SDavid du Colombier ;
103e12c5d1SDavid du Colombier if (useln >= MAXLIN)
113e12c5d1SDavid du Colombier error("Wierd. No data in table.");
123e12c5d1SDavid du Colombier table[0] = table[useln];
133e12c5d1SDavid du Colombier for (useln = nlin - 1; useln >= 0 && (fullbot[useln] || instead[useln]); useln--)
143e12c5d1SDavid du Colombier ;
153e12c5d1SDavid du Colombier if (useln < 0)
163e12c5d1SDavid du Colombier error("Wierd. No real lines in table.");
173e12c5d1SDavid du Colombier domore(leftover);
183e12c5d1SDavid du Colombier while (gets1(cstore = cspace, MAXCHS) && domore(cstore))
193e12c5d1SDavid du Colombier ;
203e12c5d1SDavid du Colombier last = cstore;
213e12c5d1SDavid du Colombier }
223e12c5d1SDavid du Colombier
233e12c5d1SDavid du Colombier
243e12c5d1SDavid du Colombier int
domore(char * dataln)253e12c5d1SDavid du Colombier domore(char *dataln)
263e12c5d1SDavid du Colombier {
273e12c5d1SDavid du Colombier int icol, ch;
283e12c5d1SDavid du Colombier
293e12c5d1SDavid du Colombier if (prefix(".TE", dataln))
303e12c5d1SDavid du Colombier return(0);
313e12c5d1SDavid du Colombier if (dataln[0] == '.' && !isdigit(dataln[1])) {
32*219b2ee8SDavid du Colombier Bprint(&tabout, "%s\n", dataln);
333e12c5d1SDavid du Colombier return(1);
343e12c5d1SDavid du Colombier }
353e12c5d1SDavid du Colombier fullbot[0] = 0;
363e12c5d1SDavid du Colombier instead[0] = (char *)0;
373e12c5d1SDavid du Colombier if (dataln[1] == 0)
383e12c5d1SDavid du Colombier switch (dataln[0]) {
393e12c5d1SDavid du Colombier case '_':
403e12c5d1SDavid du Colombier fullbot[0] = '-';
413e12c5d1SDavid du Colombier putline(useln, 0);
423e12c5d1SDavid du Colombier return(1);
433e12c5d1SDavid du Colombier case '=':
443e12c5d1SDavid du Colombier fullbot[0] = '=';
453e12c5d1SDavid du Colombier putline(useln, 0);
463e12c5d1SDavid du Colombier return(1);
473e12c5d1SDavid du Colombier }
483e12c5d1SDavid du Colombier for (icol = 0; icol < ncol; icol++) {
493e12c5d1SDavid du Colombier table[0][icol].col = dataln;
503e12c5d1SDavid du Colombier table[0][icol].rcol = 0;
513e12c5d1SDavid du Colombier for (; (ch = *dataln) != '\0' && ch != tab; dataln++)
523e12c5d1SDavid du Colombier ;
533e12c5d1SDavid du Colombier *dataln++ = '\0';
543e12c5d1SDavid du Colombier switch (ctype(useln, icol)) {
553e12c5d1SDavid du Colombier case 'n':
563e12c5d1SDavid du Colombier table[0][icol].rcol = maknew(table[0][icol].col);
573e12c5d1SDavid du Colombier break;
583e12c5d1SDavid du Colombier case 'a':
593e12c5d1SDavid du Colombier table[0][icol].rcol = table[0][icol].col;
603e12c5d1SDavid du Colombier table[0][icol].col = "";
613e12c5d1SDavid du Colombier break;
623e12c5d1SDavid du Colombier }
633e12c5d1SDavid du Colombier while (ctype(useln, icol + 1) == 's') /* spanning */
643e12c5d1SDavid du Colombier table[0][++icol].col = "";
653e12c5d1SDavid du Colombier if (ch == '\0')
663e12c5d1SDavid du Colombier break;
673e12c5d1SDavid du Colombier }
683e12c5d1SDavid du Colombier while (++icol < ncol)
693e12c5d1SDavid du Colombier table[0][icol].col = "";
703e12c5d1SDavid du Colombier putline(useln, 0);
713e12c5d1SDavid du Colombier exstore = exspace; /* reuse space for numerical items */
723e12c5d1SDavid du Colombier return(1);
733e12c5d1SDavid du Colombier }
743e12c5d1SDavid du Colombier
753e12c5d1SDavid du Colombier
76