minor refactor
This commit is contained in:
+2
-2
@@ -27,7 +27,7 @@ else
|
|||||||
ALIGN_LOOP =
|
ALIGN_LOOP =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CPPFLAGS= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder
|
CPPFLAGS+= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder
|
||||||
CFLAGS ?= -O3
|
CFLAGS ?= -O3
|
||||||
CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \
|
CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \
|
||||||
-Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
|
-Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
|
||||||
@@ -126,7 +126,7 @@ zstd-compress: $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) zstdcli.c fileio.c
|
|||||||
|
|
||||||
gzstd: clean_decomp_o
|
gzstd: clean_decomp_o
|
||||||
ifeq ($(shell ld -lz 2>/dev/null && echo -n true),true)
|
ifeq ($(shell ld -lz 2>/dev/null && echo -n true),true)
|
||||||
$(MAKE) zstd MOREFLAGS=-DZSTD_GZDECOMPRESS LDFLAGS="-lz"
|
CPPFLAGS=-DZSTD_GZDECOMPRESS LDFLAGS="-lz" $(MAKE) zstd
|
||||||
else
|
else
|
||||||
$(MAKE) zstd
|
$(MAKE) zstd
|
||||||
endif
|
endif
|
||||||
|
|||||||
+19
-23
@@ -7,7 +7,6 @@
|
|||||||
* of patent rights can be found in the PATENTS file in the same directory.
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* *************************************
|
/* *************************************
|
||||||
* Compiler Options
|
* Compiler Options
|
||||||
***************************************/
|
***************************************/
|
||||||
@@ -587,7 +586,7 @@ static void FIO_fwriteSparseEnd(FILE* file, unsigned storedSkips)
|
|||||||
@return : size of decoded frame
|
@return : size of decoded frame
|
||||||
*/
|
*/
|
||||||
unsigned long long FIO_decompressFrame(dRess_t ress,
|
unsigned long long FIO_decompressFrame(dRess_t ress,
|
||||||
FILE* foutput, FILE* finput, size_t alreadyLoaded,
|
FILE* finput, size_t alreadyLoaded,
|
||||||
U64 alreadyDecoded)
|
U64 alreadyDecoded)
|
||||||
{
|
{
|
||||||
U64 frameSize = 0;
|
U64 frameSize = 0;
|
||||||
@@ -610,7 +609,7 @@ unsigned long long FIO_decompressFrame(dRess_t ress,
|
|||||||
if (ZSTD_isError(readSizeHint)) EXM_THROW(36, "Decoding error : %s", ZSTD_getErrorName(readSizeHint));
|
if (ZSTD_isError(readSizeHint)) EXM_THROW(36, "Decoding error : %s", ZSTD_getErrorName(readSizeHint));
|
||||||
|
|
||||||
/* Write block */
|
/* Write block */
|
||||||
storedSkips = FIO_fwriteSparse(foutput, ress.dstBuffer, outBuff.pos, storedSkips);
|
storedSkips = FIO_fwriteSparse(ress.dstFile, ress.dstBuffer, outBuff.pos, storedSkips);
|
||||||
frameSize += outBuff.pos;
|
frameSize += outBuff.pos;
|
||||||
DISPLAYUPDATE(2, "\rDecoded : %u MB... ", (U32)((alreadyDecoded+frameSize)>>20) );
|
DISPLAYUPDATE(2, "\rDecoded : %u MB... ", (U32)((alreadyDecoded+frameSize)>>20) );
|
||||||
|
|
||||||
@@ -623,7 +622,7 @@ unsigned long long FIO_decompressFrame(dRess_t ress,
|
|||||||
if (readSize < toRead) EXM_THROW(39, "Read error : premature end");
|
if (readSize < toRead) EXM_THROW(39, "Read error : premature end");
|
||||||
} }
|
} }
|
||||||
|
|
||||||
FIO_fwriteSparseEnd(foutput, storedSkips);
|
FIO_fwriteSparseEnd(ress.dstFile, storedSkips);
|
||||||
|
|
||||||
return frameSize;
|
return frameSize;
|
||||||
}
|
}
|
||||||
@@ -650,14 +649,11 @@ static unsigned FIO_passThrough(FILE* foutput, FILE* finput, void* buffer, size_
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ZSTD_GZDECOMPRESS
|
#ifdef ZSTD_GZDECOMPRESS
|
||||||
static size_t FIO_decompressGzFile(dRess_t ress, size_t headBufSize, const char* srcFileName, FILE* srcFile)
|
static unsigned long long FIO_decompressGzFrame(dRess_t ress, FILE* srcFile, const char* srcFileName, size_t alreadyLoaded)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
unsigned char in[1];
|
|
||||||
unsigned char* headBuf = (unsigned char*)ress.srcBuffer;
|
unsigned char* headBuf = (unsigned char*)ress.srcBuffer;
|
||||||
size_t decompBytes, outFileSize = 0;
|
unsigned long long outFileSize = 0;
|
||||||
z_stream strm;
|
z_stream strm;
|
||||||
|
|
||||||
strm.zalloc = Z_NULL;
|
strm.zalloc = Z_NULL;
|
||||||
@@ -665,32 +661,33 @@ static size_t FIO_decompressGzFile(dRess_t ress, size_t headBufSize, const char*
|
|||||||
strm.opaque = Z_NULL;
|
strm.opaque = Z_NULL;
|
||||||
strm.next_in = 0;
|
strm.next_in = 0;
|
||||||
strm.avail_in = Z_NULL;
|
strm.avail_in = Z_NULL;
|
||||||
if (inflateInit2(&strm, 15 + 16) != Z_OK) return 0;
|
if (inflateInit2(&strm, 15 /* maxWindowLogSize */ + 16 /* gzip only */) != Z_OK) return 0; /* see http://www.zlib.net/manual.html */
|
||||||
|
|
||||||
strm.next_out = ress.dstBuffer;
|
strm.next_out = ress.dstBuffer;
|
||||||
strm.avail_out = ress.dstBufferSize;
|
strm.avail_out = ress.dstBufferSize;
|
||||||
|
|
||||||
for ( ; ; ) {
|
for ( ; ; ) {
|
||||||
if (headBufSize) {
|
unsigned char in[1];
|
||||||
headBufSize--;
|
if (alreadyLoaded) {
|
||||||
|
alreadyLoaded--;
|
||||||
in[0] = *headBuf++;
|
in[0] = *headBuf++;
|
||||||
} else {
|
} else {
|
||||||
if (fread(in, 1, 1, srcFile) == 0) break;
|
if (fread(in, 1, 1, srcFile) == 0) break;
|
||||||
}
|
}
|
||||||
strm.next_in = in;
|
strm.next_in = in;
|
||||||
strm.avail_in = 1;
|
strm.avail_in = 1;
|
||||||
ret = inflate(&strm, Z_NO_FLUSH);
|
{ int const ret = inflate(&strm, Z_NO_FLUSH);
|
||||||
if (ret == Z_STREAM_END) break;
|
if (ret == Z_STREAM_END) break;
|
||||||
if (ret != Z_OK) { DISPLAY("zstd: %s: inflate error %d \n", srcFileName, ret); return 0; }
|
if (ret != Z_OK) { DISPLAY("zstd: %s: inflate error %d \n", srcFileName, ret); return 0; }
|
||||||
|
}
|
||||||
|
|
||||||
decompBytes = ress.dstBufferSize - strm.avail_out;
|
{ size_t const decompBytes = ress.dstBufferSize - strm.avail_out;
|
||||||
if (decompBytes) {
|
if (decompBytes) {
|
||||||
if (fwrite(ress.dstBuffer, 1, decompBytes, ress.dstFile) != (size_t)decompBytes) EXM_THROW(31, "Write error : cannot write to output file");
|
if (fwrite(ress.dstBuffer, 1, decompBytes, ress.dstFile) != decompBytes) EXM_THROW(31, "Write error : cannot write to output file");
|
||||||
outFileSize += decompBytes;
|
outFileSize += decompBytes;
|
||||||
strm.next_out = ress.dstBuffer;
|
strm.next_out = ress.dstBuffer;
|
||||||
strm.avail_out = ress.dstBufferSize;
|
strm.avail_out = ress.dstBufferSize;
|
||||||
}
|
} } }
|
||||||
}
|
|
||||||
|
|
||||||
inflateEnd(&strm);
|
inflateEnd(&strm);
|
||||||
return outFileSize;
|
return outFileSize;
|
||||||
@@ -705,10 +702,9 @@ static size_t FIO_decompressGzFile(dRess_t ress, size_t headBufSize, const char*
|
|||||||
*/
|
*/
|
||||||
static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
|
static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
|
||||||
{
|
{
|
||||||
unsigned long long filesize = 0;
|
|
||||||
FILE* const dstFile = ress.dstFile;
|
|
||||||
FILE* srcFile;
|
FILE* srcFile;
|
||||||
unsigned readSomething = 0;
|
unsigned readSomething = 0;
|
||||||
|
unsigned long long filesize = 0;
|
||||||
|
|
||||||
if (UTIL_isDirectory(srcFileName)) {
|
if (UTIL_isDirectory(srcFileName)) {
|
||||||
DISPLAYLEVEL(1, "zstd: %s is a directory -- ignored \n", srcFileName);
|
DISPLAYLEVEL(1, "zstd: %s is a directory -- ignored \n", srcFileName);
|
||||||
@@ -732,17 +728,17 @@ static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
|
|||||||
if (sizeCheck != toRead) { DISPLAY("zstd: %s: unknown header \n", srcFileName); fclose(srcFile); return 1; } /* srcFileName is empty */
|
if (sizeCheck != toRead) { DISPLAY("zstd: %s: unknown header \n", srcFileName); fclose(srcFile); return 1; } /* srcFileName is empty */
|
||||||
if (buf[0] == 31 && buf[1] == 139) { /* gz header */
|
if (buf[0] == 31 && buf[1] == 139) { /* gz header */
|
||||||
#ifdef ZSTD_GZDECOMPRESS
|
#ifdef ZSTD_GZDECOMPRESS
|
||||||
size_t const result = FIO_decompressGzFile(ress, toRead, srcFileName, srcFile);
|
unsigned long long const result = FIO_decompressGzFrame(ress, srcFile, srcFileName, toRead);
|
||||||
if (result == 0) return 1;
|
if (result == 0) return 1;
|
||||||
filesize += result;
|
filesize += result;
|
||||||
#else
|
#else
|
||||||
DISPLAYLEVEL(1, "zstd: %s: gzip file cannot be uncompressed -- ignored (zstd compiled without ZSTD_GZDECOMPRESS) \n", srcFileName);
|
DISPLAYLEVEL(1, "zstd: %s: gzip file cannot be uncompressed (zstd compiled without ZSTD_GZDECOMPRESS) -- ignored \n", srcFileName);
|
||||||
return 1;
|
return 1;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
if (!ZSTD_isFrame(ress.srcBuffer, toRead)) {
|
if (!ZSTD_isFrame(ress.srcBuffer, toRead)) {
|
||||||
if ((g_overwrite) && !strcmp (srcFileName, stdinmark)) { /* pass-through mode */
|
if ((g_overwrite) && !strcmp (srcFileName, stdinmark)) { /* pass-through mode */
|
||||||
unsigned const result = FIO_passThrough(dstFile, srcFile, ress.srcBuffer, ress.srcBufferSize);
|
unsigned const result = FIO_passThrough(ress.dstFile, srcFile, ress.srcBuffer, ress.srcBufferSize);
|
||||||
if (fclose(srcFile)) EXM_THROW(32, "zstd: %s close error", srcFileName); /* error should never happen */
|
if (fclose(srcFile)) EXM_THROW(32, "zstd: %s close error", srcFileName); /* error should never happen */
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
@@ -750,7 +746,7 @@ static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
|
|||||||
fclose(srcFile);
|
fclose(srcFile);
|
||||||
return 1;
|
return 1;
|
||||||
} }
|
} }
|
||||||
filesize += FIO_decompressFrame(ress, dstFile, srcFile, toRead, filesize);
|
filesize += FIO_decompressFrame(ress, srcFile, toRead, filesize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user