CLI supports dictionary decompression in legacy mode v0.5.x

dev
Yann Collet 2016-05-08 08:11:24 +02:00
parent f849462d4c
commit 0c0f314550
3 changed files with 14 additions and 9 deletions

View File

@ -598,7 +598,7 @@ static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
{ U32 const magic = MEM_readLE32(ress.srcBuffer); { U32 const magic = MEM_readLE32(ress.srcBuffer);
#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT>=1) #if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT>=1)
if (ZSTD_isLegacy(magic)) { if (ZSTD_isLegacy(magic)) {
filesize += FIO_decompressLegacyFrame(dstFile, srcFile, magic); filesize += FIO_decompressLegacyFrame(dstFile, srcFile, ress.dictBuffer, ress.dstBufferSize, magic);
continue; continue;
} }
#endif /* ZSTD_LEGACY_SUPPORT */ #endif /* ZSTD_LEGACY_SUPPORT */

View File

@ -405,7 +405,7 @@ typedef struct {
size_t srcBufferSize; size_t srcBufferSize;
void* dstBuffer; void* dstBuffer;
size_t dstBufferSize; size_t dstBufferSize;
void* dictBuffer; const void* dictBuffer;
size_t dictBufferSize; size_t dictBufferSize;
ZBUFFv05_DCtx* dctx; ZBUFFv05_DCtx* dctx;
} dRessv05_t; } dRessv05_t;
@ -435,7 +435,6 @@ static void FIOv05_freeDResources(dRessv05_t ress)
if (ZBUFFv05_isError(errorCode)) EXM_THROW(69, "Error : can't free ZBUFF context resource : %s", ZBUFFv05_getErrorName(errorCode)); if (ZBUFFv05_isError(errorCode)) EXM_THROW(69, "Error : can't free ZBUFF context resource : %s", ZBUFFv05_getErrorName(errorCode));
free(ress.srcBuffer); free(ress.srcBuffer);
free(ress.dstBuffer); free(ress.dstBuffer);
free(ress.dictBuffer);
} }
@ -476,7 +475,9 @@ unsigned long long FIOv05_decompressFrame(dRessv05_t ress,
/*===== General legacy dispatcher =====*/ /*===== General legacy dispatcher =====*/
unsigned long long FIO_decompressLegacyFrame(FILE* foutput, FILE* finput, U32 magicNumberLE) unsigned long long FIO_decompressLegacyFrame(FILE* foutput, FILE* finput,
const void* dictBuffer, size_t dictSize,
U32 magicNumberLE)
{ {
switch(magicNumberLE) switch(magicNumberLE)
{ {
@ -494,10 +495,12 @@ unsigned long long FIO_decompressLegacyFrame(FILE* foutput, FILE* finput, U32 ma
} }
case ZSTDv05_MAGICNUMBER : case ZSTDv05_MAGICNUMBER :
{ dRessv05_t r = FIOv05_createDResources(); { dRessv05_t r = FIOv05_createDResources();
unsigned long long const s = FIOv05_decompressFrame(r, foutput, finput); r.dictBuffer = dictBuffer;
FIOv05_freeDResources(r); r.dictBufferSize = dictSize;
return s; { unsigned long long const s = FIOv05_decompressFrame(r, foutput, finput);
} FIOv05_freeDResources(r);
return s;
} }
default : default :
return ERROR(prefix_unknown); return ERROR(prefix_unknown);
} }

View File

@ -38,7 +38,9 @@ void FIO_legacy_setNotificationLevel(unsigned level);
/* ************************************* /* *************************************
* Stream/File functions * Stream/File functions
***************************************/ ***************************************/
unsigned long long FIO_decompressLegacyFrame(FILE* foutput, FILE* finput, U32 magicNumberLE); unsigned long long FIO_decompressLegacyFrame(FILE* foutput, FILE* finput,
const void* dictBuffer, size_t dictSize,
U32 magicNumberLE);
#if defined (__cplusplus) #if defined (__cplusplus)