125072Sjaap #ifndef lint
2*25091Sjaap static char sccsid[] = "@(#)over200.c	1.2 (CWI) 85/10/02";
325072Sjaap #endif lint
425072Sjaap 
5*25091Sjaap  /*
6*25091Sjaap   * write lines for tables over 200 lines (actually MAXLIN lines)
7*25091Sjaap   *
8*25091Sjaap   * Note that there is aserious bug here:
9*25091Sjaap   *	The T{ ... T} doesn't work after MAXLIN entries.
10*25091Sjaap   */
1125072Sjaap #include "defs.h"
1225072Sjaap #include "ext.h"
1325072Sjaap 
1425072Sjaap static int useln;
1525072Sjaap 
1625072Sjaap extern char *maknew();
1725072Sjaap 
yetmore()1825072Sjaap yetmore()
1925072Sjaap {
20*25091Sjaap 	dprint(".\\\" -- yetmore\n");
2125072Sjaap 	for(useln = 0; useln < MAXLIN && table[useln] == 0; useln++)
2225072Sjaap 		;
2325072Sjaap 	if(useln >= MAXLIN)
2425072Sjaap 		error("Wierd.  No data in table.");
2525072Sjaap 	table[0] = table[useln];
2625072Sjaap 	for(useln = nlin - 1; useln >= 0 && (fullbot[useln] || instead[useln]);
2725072Sjaap 								useln--)
2825072Sjaap 		;
2925072Sjaap 	if(useln < 0)
3025072Sjaap 		error("Wierd.  No real lines in table.");
3125072Sjaap 	domore(leftover);
3225072Sjaap 	while(gets1(cstore = cspace) && domore(cstore))
3325072Sjaap 		;
3425072Sjaap 	last = cstore;
3525072Sjaap 	return;
3625072Sjaap }
3725072Sjaap 
domore(dataln)3825072Sjaap domore(dataln)
3925072Sjaap char *dataln;
4025072Sjaap {
4125072Sjaap 	register int icol, ch;
4225072Sjaap 
43*25091Sjaap 	dprint(".\\\" -- domore\n");
4425072Sjaap 
4525072Sjaap 	if(prefix(".TE", dataln))
4625072Sjaap 		return(0);
4725072Sjaap 	if(dataln[0] == '.' && !isdigit(dataln[1])){
4825072Sjaap 		puts(dataln);
4925072Sjaap 		return(1);
5025072Sjaap 	}
5125072Sjaap 	instead[0] = (char *) 0;
5225072Sjaap 	fullbot[0] = 0;
5325072Sjaap 	if(dataln[1] == 0){
5425072Sjaap 		switch(dataln[0]){
5525072Sjaap 
5625072Sjaap 		case '_':
5725072Sjaap 			fullbot[0] = '-';
5825072Sjaap 			putline(useln, 0);
5925072Sjaap 			return(1);
6025072Sjaap 		case '=':
6125072Sjaap 			fullbot[0] = '=';
6225072Sjaap 			putline(useln, 0);
6325072Sjaap 			return(1);
6425072Sjaap 		}
6525072Sjaap 	}
6625072Sjaap 	for(icol = 0; icol < ncol; icol++){
6725072Sjaap 		table[0][icol].col = dataln;
6825072Sjaap 		table[0][icol].rcol = 0;
6925072Sjaap 		for(; (ch = *dataln) != '\0' && ch != tab; dataln++)
7025072Sjaap 			;
7125072Sjaap 		*dataln++ = '\0';
7225072Sjaap 		switch(ctype(useln, icol)){
7325072Sjaap 
7425072Sjaap 		case 'n':
7525072Sjaap 			table[0][icol].rcol = maknew(table[0][icol].col);
7625072Sjaap 			break;
7725072Sjaap 		case 'a':
7825072Sjaap 			table[0][icol].rcol = table[0][icol].col;
7925072Sjaap 			table[0][icol].col = "";
8025072Sjaap 			break;
8125072Sjaap 		}
8225072Sjaap 		while(ctype(useln, icol + 1) == 's'){
8325072Sjaap 			/*
8425072Sjaap 			 * spanning
8525072Sjaap 			 */
8625072Sjaap 			table[0][++icol].col = "";
8725072Sjaap 		}
8825072Sjaap 		if(ch == '\0')
8925072Sjaap 			break;
9025072Sjaap 	}
9125072Sjaap 	while(++icol < ncol)
9225072Sjaap 		table[0][icol].col = "";
9325072Sjaap 	putline(useln, 0);
9425072Sjaap 	/*
9525072Sjaap 	 * Reuse space for numerical items (bwk)
9625072Sjaap 	 * exstore = exspace;
9725072Sjaap 	 */
9825072Sjaap 	return(1);
9925072Sjaap }
100