1*14513Ssam #ifndef lint 2*14513Ssam static char sccsid[] = "@(#)tb.c 4.2 08/11/83"; 3*14513Ssam #endif 411037Sshannon 511037Sshannon /* tb.c: check which entries exist, also storage allocation */ 611037Sshannon # include "t..c" 711037Sshannon checkuse() 811037Sshannon { 911037Sshannon int i,c, k; 1011037Sshannon for(c=0; c<ncol; c++) 1111037Sshannon { 1211037Sshannon used[c]=lused[c]=rused[c]=0; 1311037Sshannon for(i=0; i<nlin; i++) 1411037Sshannon { 1511037Sshannon if (instead[i] || fullbot[i]) continue; 1611037Sshannon k = ctype(i,c); 1711037Sshannon if (k== '-' || k == '=') continue; 1811037Sshannon if ((k=='n'||k=='a')) 1911037Sshannon { 2011037Sshannon rused[c]|= real(table[i][c].rcol); 2111037Sshannon if( !real(table[i][c].rcol)) 2211037Sshannon used[c] |= real(table[i][c].col); 2311037Sshannon if (table[i][c].rcol) 2411037Sshannon lused[c] |= real(table[i][c].col); 2511037Sshannon } 2611037Sshannon else 2711037Sshannon used[c] |= real(table[i][c].col); 2811037Sshannon } 2911037Sshannon } 3011037Sshannon } 3111037Sshannon real(s) 3211037Sshannon char *s; 3311037Sshannon { 3411037Sshannon if (s==0) return(0); 3511037Sshannon if (!point(s)) return(1); 3611037Sshannon if (*s==0) return(0); 3711037Sshannon return(1); 3811037Sshannon } 3911037Sshannon int spcount = 0; 4011037Sshannon extern char * calloc(); 4111037Sshannon # define MAXVEC 20 4211037Sshannon char *spvecs[MAXVEC]; 4311037Sshannon chspace() 4411037Sshannon { 4511037Sshannon char *pp; 4611037Sshannon if (spvecs[spcount]) 4711037Sshannon return(spvecs[spcount++]); 4811037Sshannon if (spcount>=MAXVEC) 4911037Sshannon error("Too many characters in table"); 5011037Sshannon spvecs[spcount++]= pp = calloc(MAXCHS+200,1); 5111037Sshannon if (pp== -1 || pp == 0) 5211037Sshannon error("no space for characters"); 5311037Sshannon return(pp); 5411037Sshannon } 5511037Sshannon # define MAXPC 50 5611037Sshannon char *thisvec; 5711037Sshannon int tpcount = -1; 5811037Sshannon char *tpvecs[MAXPC]; 5911037Sshannon alocv(n) 6011037Sshannon { 6111037Sshannon int *tp, *q; 6211037Sshannon if (tpcount<0 || thisvec+n > tpvecs[tpcount]+MAXCHS) 6311037Sshannon { 6411037Sshannon tpcount++; 6511037Sshannon if (tpvecs[tpcount]==0) 6611037Sshannon { 6711037Sshannon tpvecs[tpcount] = calloc(MAXCHS,1); 6811037Sshannon } 6911037Sshannon thisvec = tpvecs[tpcount]; 7011037Sshannon if (thisvec == -1) 7111037Sshannon error("no space for vectors"); 7211037Sshannon } 7311037Sshannon tp=thisvec; 7411037Sshannon thisvec+=n; 7511037Sshannon for(q=tp; q<thisvec; q++) 7611037Sshannon *q=0; 7711037Sshannon return(tp); 7811037Sshannon } 7911037Sshannon release() 8011037Sshannon { 8111037Sshannon extern char *exstore; 8211037Sshannon /* give back unwanted space in some vectors */ 8311037Sshannon spcount=0; 8411037Sshannon tpcount= -1; 8511037Sshannon exstore=0; 8611037Sshannon } 87