int domore(char *dataln) { int icol, ch; if (prefix(".TE", dataln)) return(0); if (dataln[0] == '.' && !isdigit((uchar)dataln[1])) { Bprint(&tabout, "%s\n", dataln); return(1); } fullbot[0] = 0; instead[0] = (char *)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 = 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); exstore = exspace; /* reuse space for numerical items */ return(1); }
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); }
gettbl() { int icol, ch; cstore=cspace= chspace(); textflg=0; for (nlin=nslin=0; gets1(cstore); nlin++) { stynum[nlin]=nslin; if (prefix(".TE", cstore)) { leftover=0; break; } if (prefix(".TC", cstore) || prefix(".T&", cstore)) { readspec(); nslin++; } if (nlin>=MAXLIN) { leftover=(int)cstore; break; } fullbot[nlin]=0; if (cstore[0] == '.' && !isdigit(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 */ table[nlin][icol].col = (char *)gettext(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; }