Annotation of 42BSD/usr.bin/tbl/tb.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)tb.c       4.2 8/11/83";
                      3: #endif
                      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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.