blob: 424cb55f84c3da778869be400d00adc713b96926 [file] [log] [blame]
#ifndef lint
static char sccsid[] = "@(#)t9.c 4.2 8/11/83";
#endif
/* t9.c: write lines for tables over 200 lines */
# include "t..c"
static useln;
extern void error(char *s);
extern char *gets1(char *s);
extern int prefix(char *small,char *big);
extern void putline(int i,int nl);
extern int ctype(int il,int ic);
extern int maknew(char *str);
int domore(char *dataln);
void yetmore(void)
{
for(useln=0; useln<MAXLIN && table[useln]==0; useln++);
if (useln>=MAXLIN)
error("Wierd. No data in table.");
table[0]=table[useln];
for(useln=nlin-1; useln>=0 && (fullbot[useln] || instead[useln]); useln--);
if (useln<0)
error("Wierd. No real lines in table.");
domore((char *)leftover);
while (gets1(cstore=cspace) && domore(cstore))
;
last =cstore;
return;
}
int domore(char *dataln)
{
int icol, ch;
if (prefix(".TE", dataln))
return(0);
if (dataln[0] == '.' && !isdigit(dataln[1]))
{
puts(dataln);
return(1);
}
instead[0]=0;
fullbot[0]=0;
if (dataln[1]==0)
switch(dataln[0])
{
case '_': fullbot[0]= '-'; putline(useln,0); return(1);
case '=': fullbot[0]= '='; putline(useln, 0); return(1);
}
for (icol = 0; icol <ncol; icol++)
{
table[0][icol].col = dataln;
table[0][icol].rcol=0;
for(; (ch= *dataln) != '\0' && ch != tab; dataln++)
;
*dataln++ = '\0';
switch(ctype(useln,icol))
{
case 'n':
table[0][icol].rcol = (char *)maknew(table[0][icol].col);
break;
case 'a':
table[0][icol].rcol = table[0][icol].col;
table[0][icol].col= "";
break;
}
while (ctype(useln,icol+1)== 's') /* spanning */
table[0][++icol].col = "";
if (ch == '\0') break;
}
while (++icol <ncol)
table[0][icol].col = "";
putline(useln,0);
return(1);
}