rem: gettbl()
add: gettbl(void)
context: gettbl(){int icol, ch;cstore=cspace= chspace();textflg=0;for (nlin=nslin=0; gets1(cstore, MAXSTR); nlin++)	{	stynum[nlin]=nslin;	if (prefix(".TE", cstore))		{		leftover=0;		break;		}	if (prefix(".TC", cstore) || prefix(".T&", cstore))		{		readspec();		nslin++;		}	if (nlin>=MAXLIN)		{		leftover=cstore;		break;		}	fullbot[nlin]=0;	if (cstore[0] == '.' && !isdigit((unsigned char)cstore[1]))		{		instead[nlin] = cstore;		while (*cstore++);		continue;		}	else instead[nlin] = 0;	if (nodata(nlin))		{		if (ch = oneh(nlin))			fullbot[nlin]= ch;		nlin++;		nslin++;		instead[nlin]=(char *)0;		fullbot[nlin]=0;		}	table[nlin] = (struct colstr *) alocv((ncol+2)*sizeof(table[0][0]));	if (cstore[1]==0)	switch(cstore[0])		{		case '_': fullbot[nlin]= '-'; continue;		case '=': fullbot[nlin]= '='; continue;		}	stynum[nlin] = nslin;	nslin = min(nslin+1, nclin-1);	for (icol = 0; icol <ncol; icol++)		{		table[nlin][icol].col = cstore;		table[nlin][icol].rcol=0;		ch=1;		if (match(cstore, "T{")) /* text follows */			/* get_text was originally gettext and was renamed */			table[nlin][icol].col =				(char *)get_text(cstore, nlin, icol,					font[stynum[nlin]][icol],					csize[stynum[nlin]][icol]);		else			{			for(; (ch= *cstore) != '\0' && ch != tab; cstore++)					;			*cstore++ = '\0';			switch(ctype(nlin,icol)) /* numerical or alpha, subcol */				{				case 'n':					table[nlin][icol].rcol =					    (char *)maknew(table[nlin][icol].col);					break;				case 'a':					table[nlin][icol].rcol = table[nlin][icol].col;					table[nlin][icol].col = "";					break;				}			}		while (ctype(nlin,icol+1)== 's') /* spanning */			table[nlin][++icol].col = "";		if (ch == '\0') break;		}	while (++icol <ncol+2)		{		table[nlin][icol].col = "";		table [nlin][icol].rcol=0;		}	while (*cstore != '\0')		 cstore++;	if (cstore-cspace > MAXCHS)		cstore = cspace = chspace();	}last = cstore;permute();if (textflg) untext();return;}