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