Lines Matching refs:pfx
382 Prefix_t *pfx = (Prefix_t*)vcw->mtdata;
384 if(!pfx->srcf && !pfx->tarf )
387 if((pf = pfx->srcf) && ((Sfoff_t)dtsz >= pf->sfsz/2 || dtsz < pfx->blksz) )
389 if(dtsz < pfx->blksz) /* small data, use matching window */
406 if((pf = pfx->tarf) )
408 { if((rv = pfwindow(pf, wm, pfx->blksz)) < 0)
415 pf->maxo = here/pfx->blksz; /* can now match to here */
418 pf = pfx->srcf;
419 if(dtsz > pfx->nkey) /* make sure we have space for keys */
420 { pfx->key = (Vchash_t*)realloc(pfx->key, dtsz*sizeof(Vchash_t));
421 if((pfx->nkey = pfx->key ? dtsz : 0) <= 0)
424 if(here != pfx->here || !pf || pf->dtsz <= 0 )
426 endd = (dt = (Vcchar_t*)data) + dtsz - (pfx->blksz-1);
427 k = pfhash(dt, pfx->blksz);
428 *(key = pfx->key) = k == PF_HUGE ? (k>>1) : k;
430 { k = pfnext(dt, pfx->blksz, k, pfx->coef);
432 /**/DEBUG_ASSERT(k == pfhash(dt, pfx->blksz));
434 pfx->keyb = pfx->here = here; /* set base of calculated keys */
437 if((pf ? pfparse(pf, pfx->key, dtsz, here, pfx->blksz) : 0) <= 0 )
439 if((pf = pfx->tarf) &&
440 pfparse(pf, pfx->key, dtsz, here, pfx->blksz) > 0 )
446 /**/DEBUG_ASSERT(pf && pf == pfx->srcf && pf->dtsz > 0);
447 /**/DEBUG_ASSERT(pfx->here == here);
448 if((rv = pfwindow(pf, wm, pfx->blksz)) < 0)
451 { pfx->here = here + wm->msize;
461 else if(!pfx->tarf || wm->msize <= 2*pfx->blksz)
466 { key = pfx->key + (size_t)(here - pfx->keyb);
468 if(pfparse(pfx->tarf, key, dtsz, here, pfx->blksz) > 0 )
489 Prefix_t *pfx;
497 if(!(pfx = (Prefix_t*)calloc(1,sizeof(Prefix_t))) )
515 pfx->blksz = sz; /**/ DEBUG_PRINT(2,"blksz=%d\n",pfx->blksz);
517 pfx->coef = 1; /* highest coef in hashing blocks */
519 pfx->coef *= PF_COEF;
522 { if(!(pfx->srcf = pfopen(vcw->disc->srcf, pfx->blksz, 1)) )
524 if(pfx->blksz > 0)
525 { if(pfbuild(pfx->srcf, pfx->blksz) < 0)
527 pfx->srcf->maxo = pfx->srcf->sfsz/pfx->blksz;
531 if(tarsz > 0 && pfx->blksz > 0)
532 { if(!(pfx->tarf = pfopen(vcw->disc->tarf, pfx->blksz, 0)) )
534 if(pfbuild(pfx->tarf, pfx->blksz) < 0)
536 pfx->tarf->maxo = 0;
539 vcw->mtdata = (Void_t*)pfx;
545 if((pfx = (Prefix_t*)vcw->mtdata) )
546 { if(pfx->srcf)
547 { if(pfx->srcf->seg && pfx->srcf->sseg > 0)
548 free(pfx->srcf->seg);
549 free(pfx->srcf);
551 if(pfx->tarf)
552 { if(pfx->tarf->seg && pfx->tarf->sseg > 0)
553 free(pfx->tarf->seg);
554 free(pfx->tarf);
556 if(pfx->key && pfx->nkey > 0)
557 free(pfx->key);
558 free(pfx);