1 5cedca1b 2004-05-15 devnull /* tb.c: check which entries exist, also storage allocation */
2 5cedca1b 2004-05-15 devnull # include "t.h"
5 5cedca1b 2004-05-15 devnull checkuse(void)
7 5cedca1b 2004-05-15 devnull int i, c, k;
9 5cedca1b 2004-05-15 devnull for (c = 0; c < ncol; c++) {
10 5cedca1b 2004-05-15 devnull used[c] = lused[c] = rused[c] = 0;
11 5cedca1b 2004-05-15 devnull for (i = 0; i < nlin; i++) {
12 5cedca1b 2004-05-15 devnull if (instead[i] || fullbot[i])
13 5cedca1b 2004-05-15 devnull continue;
14 5cedca1b 2004-05-15 devnull k = ctype(i, c);
15 5cedca1b 2004-05-15 devnull if (k == '-' || k == '=')
16 5cedca1b 2004-05-15 devnull continue;
17 5cedca1b 2004-05-15 devnull if ((k == 'n' || k == 'a')) {
18 5cedca1b 2004-05-15 devnull rused[c] |= real(table[i][c].rcol);
19 5cedca1b 2004-05-15 devnull if ( !real(table[i][c].rcol))
20 5cedca1b 2004-05-15 devnull used[c] |= real(table[i][c].col);
21 5cedca1b 2004-05-15 devnull if (table[i][c].rcol)
22 5cedca1b 2004-05-15 devnull lused[c] |= real(table[i][c].col);
24 5cedca1b 2004-05-15 devnull used[c] |= real(table[i][c].col);
31 5cedca1b 2004-05-15 devnull real(char *s)
33 5cedca1b 2004-05-15 devnull if (s == 0)
34 5cedca1b 2004-05-15 devnull return(0);
35 5cedca1b 2004-05-15 devnull if (!point(s))
36 5cedca1b 2004-05-15 devnull return(1);
37 5cedca1b 2004-05-15 devnull if (*s == 0)
38 5cedca1b 2004-05-15 devnull return(0);
39 5cedca1b 2004-05-15 devnull return(1);
43 5cedca1b 2004-05-15 devnull int spcount = 0;
44 5cedca1b 2004-05-15 devnull # define MAXVEC 20
45 5cedca1b 2004-05-15 devnull char *spvecs[MAXVEC];
48 5cedca1b 2004-05-15 devnull chspace(void)
50 5cedca1b 2004-05-15 devnull char *pp;
52 5cedca1b 2004-05-15 devnull if (spvecs[spcount])
53 5cedca1b 2004-05-15 devnull return(spvecs[spcount++]);
54 5cedca1b 2004-05-15 devnull if (spcount >= MAXVEC)
55 5cedca1b 2004-05-15 devnull error("Too many characters in table");
56 5cedca1b 2004-05-15 devnull spvecs[spcount++] = pp = calloc(MAXCHS + MAXLINLEN, 1);
57 5cedca1b 2004-05-15 devnull if (pp == (char *) - 1 || pp == (char *)0)
58 5cedca1b 2004-05-15 devnull error("no space for characters");
59 5cedca1b 2004-05-15 devnull return(pp);
63 5cedca1b 2004-05-15 devnull # define MAXPC 50
64 5cedca1b 2004-05-15 devnull char *thisvec;
65 5cedca1b 2004-05-15 devnull int tpcount = -1;
66 5cedca1b 2004-05-15 devnull char *tpvecs[MAXPC];
69 5cedca1b 2004-05-15 devnull alocv(int n)
71 5cedca1b 2004-05-15 devnull int *tp, *q;
73 5cedca1b 2004-05-15 devnull if (tpcount < 0 || thisvec + n > tpvecs[tpcount] + MAXCHS) {
74 5cedca1b 2004-05-15 devnull tpcount++;
75 5cedca1b 2004-05-15 devnull if (tpvecs[tpcount] == 0) {
76 5cedca1b 2004-05-15 devnull tpvecs[tpcount] = calloc(MAXCHS, 1);
78 5cedca1b 2004-05-15 devnull thisvec = tpvecs[tpcount];
79 5cedca1b 2004-05-15 devnull if (thisvec == (char *)0)
80 5cedca1b 2004-05-15 devnull error("no space for vectors");
82 5cedca1b 2004-05-15 devnull tp = (int *)thisvec;
83 5cedca1b 2004-05-15 devnull thisvec += n;
84 5cedca1b 2004-05-15 devnull for (q = tp; q < (int *)thisvec; q++)
86 5cedca1b 2004-05-15 devnull return(tp);
91 5cedca1b 2004-05-15 devnull release(void)
93 5cedca1b 2004-05-15 devnull /* give back unwanted space in some vectors */
94 5cedca1b 2004-05-15 devnull /* this should call free; it does not because
95 5cedca1b 2004-05-15 devnull alloc() is so buggy */
96 5cedca1b 2004-05-15 devnull spcount = 0;
97 5cedca1b 2004-05-15 devnull tpcount = -1;
98 5cedca1b 2004-05-15 devnull exstore = 0;