1*11037Sshannon /* tb.c 4.1 83/02/12 */ 2*11037Sshannon 3*11037Sshannon /* tb.c: check which entries exist, also storage allocation */ 4*11037Sshannon # include "t..c" 5*11037Sshannon checkuse() 6*11037Sshannon { 7*11037Sshannon int i,c, k; 8*11037Sshannon for(c=0; c<ncol; c++) 9*11037Sshannon { 10*11037Sshannon used[c]=lused[c]=rused[c]=0; 11*11037Sshannon for(i=0; i<nlin; i++) 12*11037Sshannon { 13*11037Sshannon if (instead[i] || fullbot[i]) continue; 14*11037Sshannon k = ctype(i,c); 15*11037Sshannon if (k== '-' || k == '=') continue; 16*11037Sshannon if ((k=='n'||k=='a')) 17*11037Sshannon { 18*11037Sshannon rused[c]|= real(table[i][c].rcol); 19*11037Sshannon if( !real(table[i][c].rcol)) 20*11037Sshannon used[c] |= real(table[i][c].col); 21*11037Sshannon if (table[i][c].rcol) 22*11037Sshannon lused[c] |= real(table[i][c].col); 23*11037Sshannon } 24*11037Sshannon else 25*11037Sshannon used[c] |= real(table[i][c].col); 26*11037Sshannon } 27*11037Sshannon } 28*11037Sshannon } 29*11037Sshannon real(s) 30*11037Sshannon char *s; 31*11037Sshannon { 32*11037Sshannon if (s==0) return(0); 33*11037Sshannon if (!point(s)) return(1); 34*11037Sshannon if (*s==0) return(0); 35*11037Sshannon return(1); 36*11037Sshannon } 37*11037Sshannon int spcount = 0; 38*11037Sshannon extern char * calloc(); 39*11037Sshannon # define MAXVEC 20 40*11037Sshannon char *spvecs[MAXVEC]; 41*11037Sshannon chspace() 42*11037Sshannon { 43*11037Sshannon char *pp; 44*11037Sshannon if (spvecs[spcount]) 45*11037Sshannon return(spvecs[spcount++]); 46*11037Sshannon if (spcount>=MAXVEC) 47*11037Sshannon error("Too many characters in table"); 48*11037Sshannon spvecs[spcount++]= pp = calloc(MAXCHS+200,1); 49*11037Sshannon if (pp== -1 || pp == 0) 50*11037Sshannon error("no space for characters"); 51*11037Sshannon return(pp); 52*11037Sshannon } 53*11037Sshannon # define MAXPC 50 54*11037Sshannon char *thisvec; 55*11037Sshannon int tpcount = -1; 56*11037Sshannon char *tpvecs[MAXPC]; 57*11037Sshannon alocv(n) 58*11037Sshannon { 59*11037Sshannon int *tp, *q; 60*11037Sshannon if (tpcount<0 || thisvec+n > tpvecs[tpcount]+MAXCHS) 61*11037Sshannon { 62*11037Sshannon tpcount++; 63*11037Sshannon if (tpvecs[tpcount]==0) 64*11037Sshannon { 65*11037Sshannon tpvecs[tpcount] = calloc(MAXCHS,1); 66*11037Sshannon } 67*11037Sshannon thisvec = tpvecs[tpcount]; 68*11037Sshannon if (thisvec == -1) 69*11037Sshannon error("no space for vectors"); 70*11037Sshannon } 71*11037Sshannon tp=thisvec; 72*11037Sshannon thisvec+=n; 73*11037Sshannon for(q=tp; q<thisvec; q++) 74*11037Sshannon *q=0; 75*11037Sshannon return(tp); 76*11037Sshannon } 77*11037Sshannon release() 78*11037Sshannon { 79*11037Sshannon extern char *exstore; 80*11037Sshannon /* give back unwanted space in some vectors */ 81*11037Sshannon spcount=0; 82*11037Sshannon tpcount= -1; 83*11037Sshannon exstore=0; 84*11037Sshannon } 85