Blame


1 5cedca1b 2004-05-15 devnull /* tb.c: check which entries exist, also storage allocation */
2 5cedca1b 2004-05-15 devnull # include "t.h"
3 5cedca1b 2004-05-15 devnull
4 5cedca1b 2004-05-15 devnull void
5 5cedca1b 2004-05-15 devnull checkuse(void)
6 5cedca1b 2004-05-15 devnull {
7 5cedca1b 2004-05-15 devnull int i, c, k;
8 5cedca1b 2004-05-15 devnull
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 fa325e9b 2020-01-10 cross if (instead[i] || fullbot[i])
13 5cedca1b 2004-05-15 devnull continue;
14 5cedca1b 2004-05-15 devnull k = ctype(i, c);
15 fa325e9b 2020-01-10 cross 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);
23 5cedca1b 2004-05-15 devnull } else
24 5cedca1b 2004-05-15 devnull used[c] |= real(table[i][c].col);
25 5cedca1b 2004-05-15 devnull }
26 5cedca1b 2004-05-15 devnull }
27 5cedca1b 2004-05-15 devnull }
28 5cedca1b 2004-05-15 devnull
29 5cedca1b 2004-05-15 devnull
30 5cedca1b 2004-05-15 devnull int
31 5cedca1b 2004-05-15 devnull real(char *s)
32 5cedca1b 2004-05-15 devnull {
33 fa325e9b 2020-01-10 cross if (s == 0)
34 5cedca1b 2004-05-15 devnull return(0);
35 fa325e9b 2020-01-10 cross if (!point(s))
36 5cedca1b 2004-05-15 devnull return(1);
37 fa325e9b 2020-01-10 cross if (*s == 0)
38 5cedca1b 2004-05-15 devnull return(0);
39 5cedca1b 2004-05-15 devnull return(1);
40 5cedca1b 2004-05-15 devnull }
41 5cedca1b 2004-05-15 devnull
42 5cedca1b 2004-05-15 devnull
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];
46 5cedca1b 2004-05-15 devnull
47 5cedca1b 2004-05-15 devnull char *
48 5cedca1b 2004-05-15 devnull chspace(void)
49 5cedca1b 2004-05-15 devnull {
50 5cedca1b 2004-05-15 devnull char *pp;
51 5cedca1b 2004-05-15 devnull
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);
60 5cedca1b 2004-05-15 devnull }
61 5cedca1b 2004-05-15 devnull
62 5cedca1b 2004-05-15 devnull
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];
67 5cedca1b 2004-05-15 devnull
68 5cedca1b 2004-05-15 devnull int *
69 5cedca1b 2004-05-15 devnull alocv(int n)
70 5cedca1b 2004-05-15 devnull {
71 5cedca1b 2004-05-15 devnull int *tp, *q;
72 5cedca1b 2004-05-15 devnull
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);
77 5cedca1b 2004-05-15 devnull }
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");
81 5cedca1b 2004-05-15 devnull }
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++)
85 5cedca1b 2004-05-15 devnull *q = 0;
86 5cedca1b 2004-05-15 devnull return(tp);
87 5cedca1b 2004-05-15 devnull }
88 5cedca1b 2004-05-15 devnull
89 5cedca1b 2004-05-15 devnull
90 5cedca1b 2004-05-15 devnull void
91 5cedca1b 2004-05-15 devnull release(void)
92 5cedca1b 2004-05-15 devnull {
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;
99 5cedca1b 2004-05-15 devnull }