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