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