Let's try this. It's BUGGERED.
This commit is contained in:
parent
76e6aca867
commit
5cedca1b69
118 changed files with 26947 additions and 1 deletions
101
src/cmd/tbl/tb.c
Normal file
101
src/cmd/tbl/tb.c
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/* tb.c: check which entries exist, also storage allocation */
|
||||
# include "t.h"
|
||||
|
||||
void
|
||||
checkuse(void)
|
||||
{
|
||||
int i, c, k;
|
||||
|
||||
for (c = 0; c < ncol; c++) {
|
||||
used[c] = lused[c] = rused[c] = 0;
|
||||
for (i = 0; i < nlin; i++) {
|
||||
if (instead[i] || fullbot[i])
|
||||
continue;
|
||||
k = ctype(i, c);
|
||||
if (k == '-' || k == '=')
|
||||
continue;
|
||||
if ((k == 'n' || k == 'a')) {
|
||||
rused[c] |= real(table[i][c].rcol);
|
||||
if ( !real(table[i][c].rcol))
|
||||
used[c] |= real(table[i][c].col);
|
||||
if (table[i][c].rcol)
|
||||
lused[c] |= real(table[i][c].col);
|
||||
} else
|
||||
used[c] |= real(table[i][c].col);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
real(char *s)
|
||||
{
|
||||
if (s == 0)
|
||||
return(0);
|
||||
if (!point(s))
|
||||
return(1);
|
||||
if (*s == 0)
|
||||
return(0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int spcount = 0;
|
||||
# define MAXVEC 20
|
||||
char *spvecs[MAXVEC];
|
||||
|
||||
char *
|
||||
chspace(void)
|
||||
{
|
||||
char *pp;
|
||||
|
||||
if (spvecs[spcount])
|
||||
return(spvecs[spcount++]);
|
||||
if (spcount >= MAXVEC)
|
||||
error("Too many characters in table");
|
||||
spvecs[spcount++] = pp = calloc(MAXCHS + MAXLINLEN, 1);
|
||||
if (pp == (char *) - 1 || pp == (char *)0)
|
||||
error("no space for characters");
|
||||
return(pp);
|
||||
}
|
||||
|
||||
|
||||
# define MAXPC 50
|
||||
char *thisvec;
|
||||
int tpcount = -1;
|
||||
char *tpvecs[MAXPC];
|
||||
|
||||
int *
|
||||
alocv(int n)
|
||||
{
|
||||
int *tp, *q;
|
||||
|
||||
if (tpcount < 0 || thisvec + n > tpvecs[tpcount] + MAXCHS) {
|
||||
tpcount++;
|
||||
if (tpvecs[tpcount] == 0) {
|
||||
tpvecs[tpcount] = calloc(MAXCHS, 1);
|
||||
}
|
||||
thisvec = tpvecs[tpcount];
|
||||
if (thisvec == (char *)0)
|
||||
error("no space for vectors");
|
||||
}
|
||||
tp = (int *)thisvec;
|
||||
thisvec += n;
|
||||
for (q = tp; q < (int *)thisvec; q++)
|
||||
*q = 0;
|
||||
return(tp);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
release(void)
|
||||
{
|
||||
/* give back unwanted space in some vectors */
|
||||
/* this should call free; it does not because
|
||||
alloc() is so buggy */
|
||||
spcount = 0;
|
||||
tpcount = -1;
|
||||
exstore = 0;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue