xref: /csrg-svn/old/tbl/t9.c (revision 14512)
1*14512Ssam #ifndef lint
2*14512Ssam static char sccsid[] = "@(#)t9.c	4.2 08/11/83";
3*14512Ssam #endif
411036Sshannon 
511036Sshannon  /* t9.c: write lines for tables over 200 lines */
611036Sshannon # include "t..c"
711036Sshannon static useln;
811036Sshannon yetmore()
911036Sshannon {
1011036Sshannon for(useln=0; useln<MAXLIN && table[useln]==0; useln++);
1111036Sshannon if (useln>=MAXLIN)
1211036Sshannon 	error("Wierd.  No data in table.");
1311036Sshannon table[0]=table[useln];
1411036Sshannon for(useln=nlin-1; useln>=0 && (fullbot[useln] || instead[useln]); useln--);
1511036Sshannon if (useln<0)
1611036Sshannon 	error("Wierd.  No real lines in table.");
1711036Sshannon domore(leftover);
1811036Sshannon while (gets1(cstore=cspace) && domore(cstore))
1911036Sshannon 	;
2011036Sshannon last =cstore;
2111036Sshannon return;
2211036Sshannon }
2311036Sshannon domore(dataln)
2411036Sshannon 	char *dataln;
2511036Sshannon {
2611036Sshannon 	int icol, ch;
2711036Sshannon if (prefix(".TE", dataln))
2811036Sshannon 	return(0);
2911036Sshannon if (dataln[0] == '.' && !isdigit(dataln[1]))
3011036Sshannon 	{
3111036Sshannon 	puts(dataln);
3211036Sshannon 	return(1);
3311036Sshannon 	}
3411036Sshannon instead[0]=fullbot[0]=0;
3511036Sshannon if (dataln[1]==0)
3611036Sshannon switch(dataln[0])
3711036Sshannon 	{
3811036Sshannon 	case '_': fullbot[0]= '-'; putline(useln,0);  return(1);
3911036Sshannon 	case '=': fullbot[0]= '='; putline(useln, 0); return(1);
4011036Sshannon 	}
4111036Sshannon for (icol = 0; icol <ncol; icol++)
4211036Sshannon 	{
4311036Sshannon 	table[0][icol].col = dataln;
4411036Sshannon 	table[0][icol].rcol=0;
4511036Sshannon 	for(; (ch= *dataln) != '\0' && ch != tab; dataln++)
4611036Sshannon 			;
4711036Sshannon 	*dataln++ = '\0';
4811036Sshannon 	switch(ctype(useln,icol))
4911036Sshannon 		{
5011036Sshannon 		case 'n':
5111036Sshannon 			table[0][icol].rcol = maknew(table[0][icol].col);
5211036Sshannon 			break;
5311036Sshannon 		case 'a':
5411036Sshannon 			table[0][icol].rcol = table[0][icol].col;
5511036Sshannon 			table[0][icol].col= "";
5611036Sshannon 			break;
5711036Sshannon 		}
5811036Sshannon 	while (ctype(useln,icol+1)== 's') /* spanning */
5911036Sshannon 		table[0][++icol].col = "";
6011036Sshannon 	if (ch == '\0') break;
6111036Sshannon 	}
6211036Sshannon while (++icol <ncol)
6311036Sshannon 	table[0][icol].col = "";
6411036Sshannon putline(useln,0);
6511036Sshannon return(1);
6611036Sshannon }
67