|
|
1.1 ! root 1: #include "re.h" ! 2: #include "lre.h" ! 3: #include "hdr.h" ! 4: ! 5: #ifndef POSSTEP ! 6: #define POSSTEP (8*1024) ! 7: #endif ! 8: ! 9: void ! 10: eg_posinit(re_re *r) ! 11: { ! 12: if(r->nposalloc <= 0) ! 13: r->nposalloc = POSSTEP; ! 14: r->posbase = (int *)egmalloc(r->nposalloc*sizeof(int), "posbase"); ! 15: if (!r->posbase) ! 16: return; ! 17: r->posnext = 0; ! 18: } ! 19: ! 20: void ! 21: eg_posset(re_re *r) ! 22: { ! 23: r->posreset = r->posnext; ! 24: } ! 25: ! 26: eg_posalloc(re_re *r, int n) ! 27: { ! 28: register j; ! 29: ! 30: if(n < 0){ ! 31: r->posnext = r->posreset; ! 32: return(-1); ! 33: } ! 34: j = r->posnext; ! 35: r->posnext += n; ! 36: if(r->posnext >= r->nposalloc){ ! 37: while((r->nposalloc < r->posnext) && (r->nposalloc < 256*1024)) ! 38: r->nposalloc *= 2; ! 39: if(r->nposalloc < r->posnext){ ! 40: r->nposalloc = (r->posnext+POSSTEP-1)/POSSTEP; ! 41: r->nposalloc *= POSSTEP; ! 42: } ! 43: r->posbase = (int *)egrealloc((char *)r->posbase, r->nposalloc*sizeof(int), "posbase"); ! 44: if (!r->posbase) ! 45: return(-1); ! 46: } ! 47: return(j); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.