xref: /netbsd-src/external/bsd/zstd/dist/lib/deprecated/zbuff_decompress.c (revision 3117ece4fc4a4ca4489ba793710b60b0d26bab6c)
1*3117ece4Schristos /*
2*3117ece4Schristos  * Copyright (c) Meta Platforms, Inc. and affiliates.
3*3117ece4Schristos  * All rights reserved.
4*3117ece4Schristos  *
5*3117ece4Schristos  * This source code is licensed under both the BSD-style license (found in the
6*3117ece4Schristos  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*3117ece4Schristos  * in the COPYING file in the root directory of this source tree).
8*3117ece4Schristos  * You may select, at your option, one of the above-listed licenses.
9*3117ece4Schristos  */
10*3117ece4Schristos 
11*3117ece4Schristos 
12*3117ece4Schristos 
13*3117ece4Schristos /* *************************************
14*3117ece4Schristos *  Dependencies
15*3117ece4Schristos ***************************************/
16*3117ece4Schristos #define ZSTD_DISABLE_DEPRECATE_WARNINGS  /* suppress warning on ZSTD_initDStream_usingDict */
17*3117ece4Schristos #include "../zstd.h"        /* ZSTD_CStream, ZSTD_DStream, ZSTDLIB_API */
18*3117ece4Schristos #define ZBUFF_STATIC_LINKING_ONLY
19*3117ece4Schristos #include "zbuff.h"
20*3117ece4Schristos 
21*3117ece4Schristos 
22*3117ece4Schristos ZBUFF_DCtx* ZBUFF_createDCtx(void)
23*3117ece4Schristos {
24*3117ece4Schristos     return ZSTD_createDStream();
25*3117ece4Schristos }
26*3117ece4Schristos 
27*3117ece4Schristos ZBUFF_DCtx* ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)
28*3117ece4Schristos {
29*3117ece4Schristos     return ZSTD_createDStream_advanced(customMem);
30*3117ece4Schristos }
31*3117ece4Schristos 
32*3117ece4Schristos size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbd)
33*3117ece4Schristos {
34*3117ece4Schristos     return ZSTD_freeDStream(zbd);
35*3117ece4Schristos }
36*3117ece4Schristos 
37*3117ece4Schristos 
38*3117ece4Schristos /* *** Initialization *** */
39*3117ece4Schristos 
40*3117ece4Schristos size_t ZBUFF_decompressInitDictionary(ZBUFF_DCtx* zbd, const void* dict, size_t dictSize)
41*3117ece4Schristos {
42*3117ece4Schristos     return ZSTD_initDStream_usingDict(zbd, dict, dictSize);
43*3117ece4Schristos }
44*3117ece4Schristos 
45*3117ece4Schristos size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbd)
46*3117ece4Schristos {
47*3117ece4Schristos     return ZSTD_initDStream(zbd);
48*3117ece4Schristos }
49*3117ece4Schristos 
50*3117ece4Schristos 
51*3117ece4Schristos /* *** Decompression *** */
52*3117ece4Schristos 
53*3117ece4Schristos size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbd,
54*3117ece4Schristos                                 void* dst, size_t* dstCapacityPtr,
55*3117ece4Schristos                           const void* src, size_t* srcSizePtr)
56*3117ece4Schristos {
57*3117ece4Schristos     ZSTD_outBuffer outBuff;
58*3117ece4Schristos     ZSTD_inBuffer inBuff;
59*3117ece4Schristos     size_t result;
60*3117ece4Schristos     outBuff.dst  = dst;
61*3117ece4Schristos     outBuff.pos  = 0;
62*3117ece4Schristos     outBuff.size = *dstCapacityPtr;
63*3117ece4Schristos     inBuff.src  = src;
64*3117ece4Schristos     inBuff.pos  = 0;
65*3117ece4Schristos     inBuff.size = *srcSizePtr;
66*3117ece4Schristos     result = ZSTD_decompressStream(zbd, &outBuff, &inBuff);
67*3117ece4Schristos     *dstCapacityPtr = outBuff.pos;
68*3117ece4Schristos     *srcSizePtr = inBuff.pos;
69*3117ece4Schristos     return result;
70*3117ece4Schristos }
71*3117ece4Schristos 
72*3117ece4Schristos 
73*3117ece4Schristos /* *************************************
74*3117ece4Schristos *  Tool functions
75*3117ece4Schristos ***************************************/
76*3117ece4Schristos size_t ZBUFF_recommendedDInSize(void)  { return ZSTD_DStreamInSize(); }
77*3117ece4Schristos size_t ZBUFF_recommendedDOutSize(void) { return ZSTD_DStreamOutSize(); }
78