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