• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/zstd/lib/legacy/

Lines Matching refs:zbc

3379     ZBUFF_DCtx* zbc = (ZBUFF_DCtx*)malloc(sizeof(ZBUFF_DCtx));
3380 if (zbc==NULL) return NULL;
3381 memset(zbc, 0, sizeof(*zbc));
3382 zbc->zc = ZSTD_createDCtx();
3383 zbc->stage = ZBUFFds_init;
3384 return zbc;
3387 static size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbc)
3389 if (zbc==NULL) return 0; /* support free on null */
3390 ZSTD_freeDCtx(zbc->zc);
3391 free(zbc->inBuff);
3392 free(zbc->outBuff);
3393 free(zbc);
3400 static size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbc)
3402 zbc->stage = ZBUFFds_readHeader;
3403 zbc->hPos = zbc->inPos = zbc->outStart = zbc->outEnd = zbc->dictSize = 0;
3404 return ZSTD_resetDCtx(zbc->zc);
3408 static size_t ZBUFF_decompressWithDictionary(ZBUFF_DCtx* zbc, const void* src, size_t srcSize)
3410 zbc->dict = (const char*)src;
3411 zbc->dictSize = srcSize;
3426 static size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbc, void* dst, size_t* maxDstSizePtr, const void* src, size_t* srcSizePtr)
3439 switch(zbc->stage)
3448 { size_t const headerSize = ZSTD_getFrameParams(&(zbc->params), src, *srcSizePtr);
3452 memcpy(zbc->headerBuffer+zbc->hPos, src, *srcSizePtr);
3453 zbc->hPos += *srcSizePtr;
3455 zbc->stage = ZBUFFds_loadHeader;
3456 return headerSize - zbc->hPos;
3458 zbc->stage = ZBUFFds_decodeHeader;
3465 zbc->headerBuffer + zbc->hPos, ZSTD_frameHeaderSize_max - zbc->hPos,
3467 zbc->hPos += headerSize;
3469 headerSize = ZSTD_getFrameParams(&(zbc->params), zbc->headerBuffer, zbc->hPos);
3474 return headerSize - zbc->hPos;
3480 { size_t const neededOutSize = (size_t)1 << zbc->params.windowLog;
3482 if (zbc->inBuffSize < neededInSize) {
3483 free(zbc->inBuff);
3484 zbc->inBuffSize = neededInSize;
3485 zbc->inBuff = (char*)malloc(neededInSize);
3486 if (zbc->inBuff == NULL) return ERROR(memory_allocation);
3488 if (zbc->outBuffSize < neededOutSize) {
3489 free(zbc->outBuff);
3490 zbc->outBuffSize = neededOutSize;
3491 zbc->outBuff = (char*)malloc(neededOutSize);
3492 if (zbc->outBuff == NULL) return ERROR(memory_allocation);
3494 if (zbc->dictSize)
3495 ZSTD_decompress_insertDictionary(zbc->zc, zbc->dict, zbc->dictSize);
3496 if (zbc->hPos) {
3498 memcpy(zbc->inBuff, zbc->headerBuffer, zbc->hPos);
3499 zbc->inPos = zbc->hPos;
3500 zbc->hPos = 0;
3501 zbc->stage = ZBUFFds_load;
3504 zbc->stage = ZBUFFds_read;
3508 size_t neededInSize = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3511 zbc->stage = ZBUFFds_init;
3518 size_t decodedSize = ZSTD_decompressContinue(zbc->zc,
3519 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3524 zbc->outEnd = zbc->outStart + decodedSize;
3525 zbc->stage = ZBUFFds_flush;
3529 zbc->stage = ZBUFFds_load;
3534 size_t neededInSize = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3535 size_t toLoad = neededInSize - zbc->inPos; /* should always be <= remaining space within inBuff */
3537 if (toLoad > zbc->inBuffSize - zbc->inPos) return ERROR(corruption_detected); /* should never happen */
3538 loadedSize = ZBUFF_limitCopy(zbc->inBuff + zbc->inPos, toLoad, ip, iend-ip);
3540 zbc->inPos += loadedSize;
3543 size_t decodedSize = ZSTD_decompressContinue(zbc->zc,
3544 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3545 zbc->inBuff, neededInSize);
3547 zbc->inPos = 0; /* input is consumed */
3548 if (!decodedSize) { zbc->stage = ZBUFFds_read; break; } /* this was just a header */
3549 zbc->outEnd = zbc->outStart + decodedSize;
3550 zbc->stage = ZBUFFds_flush;
3557 size_t toFlushSize = zbc->outEnd - zbc->outStart;
3558 size_t flushedSize = ZBUFF_limitCopy(op, oend-op, zbc->outBuff + zbc->outStart, toFlushSize);
3560 zbc->outStart += flushedSize;
3563 zbc->stage = ZBUFFds_read;
3564 if (zbc->outStart + BLOCKSIZE > zbc->outBuffSize)
3565 zbc->outStart = zbc->outEnd = 0;
3580 size_t nextSrcSizeHint = ZSTD_nextSrcSizeToDecompress(zbc->zc);
3582 nextSrcSizeHint -= zbc->inPos; /* already loaded*/