home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / tbl / tb.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  1.5 KB  |  83 lines

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