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