From 9aa0812b9f28878afb814a8d1990f08473487a43 Mon Sep 17 00:00:00 2001 From: zxzxzzz Date: Tue, 14 Dec 2021 15:45:52 +0800 Subject: [PATCH] Fix-progress-flag-to-properly-control-progress-display-and-default --- ...control-progress-display-and-default.patch | 98 +++++++++++++++++++ zstd.spec | 6 +- 2 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 backport-zstd-1.5.0-patch-11-Fix-progress-flag-to-properly-control-progress-display-and-default.patch diff --git a/backport-zstd-1.5.0-patch-11-Fix-progress-flag-to-properly-control-progress-display-and-default.patch b/backport-zstd-1.5.0-patch-11-Fix-progress-flag-to-properly-control-progress-display-and-default.patch new file mode 100644 index 0000000..3ea2f76 --- /dev/null +++ b/backport-zstd-1.5.0-patch-11-Fix-progress-flag-to-properly-control-progress-display-and-default.patch @@ -0,0 +1,98 @@ +From d2f31b662779f3c13871d54868e9d5839343856d Mon Sep 17 00:00:00 2001 +From: Binh Vo +Date: Mon, 7 Jun 2021 11:50:22 -0400 +Subject: [PATCH 0726/1000] Fix --progress flag to properly control progress + display and default progress display on when using -v + +--- + programs/fileio.c | 33 ++++++++++++++++----------------- + tests/playTests.sh | 6 +++++- + 2 files changed, 21 insertions(+), 18 deletions(-) + +diff --git a/programs/fileio.c b/programs/fileio.c +index 5693ac39..a67c0fbf 100644 +--- a/programs/fileio.c ++++ b/programs/fileio.c +@@ -2155,6 +2155,7 @@ FIO_decompressZstdFrame(FIO_ctx_t* const fCtx, dRess_t* ress, FILE* finput, + ZSTD_inBuffer inBuff = { ress->srcBuffer, ress->srcBufferLoaded, 0 }; + ZSTD_outBuffer outBuff= { ress->dstBuffer, ress->dstBufferSize, 0 }; + size_t const readSizeHint = ZSTD_decompressStream(ress->dctx, &outBuff, &inBuff); ++ const int displayLevel = (!fCtx->hasStdoutOutput || g_display_prefs.progressSetting == FIO_ps_always) ? 1 : 2; + if (ZSTD_isError(readSizeHint)) { + DISPLAYLEVEL(1, "%s : Decoding error (36) : %s \n", + srcFileName, ZSTD_getErrorName(readSizeHint)); +@@ -2165,21 +2166,19 @@ FIO_decompressZstdFrame(FIO_ctx_t* const fCtx, dRess_t* ress, FILE* finput, + /* Write block */ + storedSkips = FIO_fwriteSparse(ress->dstFile, ress->dstBuffer, outBuff.pos, prefs, storedSkips); + frameSize += outBuff.pos; +- if (!fCtx->hasStdoutOutput || g_display_prefs.progressSetting == FIO_ps_always) { +- if (fCtx->nbFilesTotal > 1) { +- size_t srcFileNameSize = strlen(srcFileName); +- if (srcFileNameSize > 18) { +- const char* truncatedSrcFileName = srcFileName + srcFileNameSize - 15; +- DISPLAYUPDATE(2, "\rDecompress: %2u/%2u files. Current: ...%s : %u MB... ", +- fCtx->currFileIdx+1, fCtx->nbFilesTotal, truncatedSrcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); +- } else { +- DISPLAYUPDATE(2, "\rDecompress: %2u/%2u files. Current: %s : %u MB... ", +- fCtx->currFileIdx+1, fCtx->nbFilesTotal, srcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); +- } ++ if (fCtx->nbFilesTotal > 1) { ++ size_t srcFileNameSize = strlen(srcFileName); ++ if (srcFileNameSize > 18) { ++ const char* truncatedSrcFileName = srcFileName + srcFileNameSize - 15; ++ DISPLAYUPDATE(displayLevel, "\rDecompress: %2u/%2u files. Current: ...%s : %u MB... ", ++ fCtx->currFileIdx+1, fCtx->nbFilesTotal, truncatedSrcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); + } else { +- DISPLAYUPDATE(2, "\r%-20.20s : %u MB... ", +- srcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); ++ DISPLAYUPDATE(displayLevel, "\rDecompress: %2u/%2u files. Current: %s : %u MB... ", ++ fCtx->currFileIdx+1, fCtx->nbFilesTotal, srcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); + } ++ } else { ++ DISPLAYUPDATE(displayLevel, "\r%-20.20s : %u MB... ", ++ srcFileName, (unsigned)((alreadyDecoded+frameSize)>>20) ); + } + + if (inBuff.pos > 0) { +@@ -2513,10 +2512,10 @@ static int FIO_decompressFrames(FIO_ctx_t* const fCtx, + fCtx->totalBytesOutput += (size_t)filesize; + DISPLAYLEVEL(2, "\r%79s\r", ""); + /* No status message in pipe mode (stdin - stdout) or multi-files mode */ +- if (g_display_prefs.displayLevel >= 2) { +- if (fCtx->nbFilesTotal <= 1 || g_display_prefs.displayLevel >= 3) { +- DISPLAYLEVEL(2, "%-20s: %llu bytes \n", srcFileName, filesize); +- } ++ if ((g_display_prefs.displayLevel >= 2 && fCtx->nbFilesTotal <= 1) || ++ g_display_prefs.displayLevel >= 3 || ++ g_display_prefs.progressSetting == FIO_ps_always) { ++ DISPLAYLEVEL(1, "\r%-20s: %llu bytes \n", srcFileName, filesize); + } + + return 0; +diff --git a/tests/playTests.sh b/tests/playTests.sh +index f57f61f3..25293900 100755 +--- a/tests/playTests.sh ++++ b/tests/playTests.sh +@@ -263,6 +263,10 @@ zstd -q -f tmpro + println "test: --no-progress flag" + zstd tmpro -c --no-progress | zstd -d -f -o "$INTOVOID" --no-progress + zstd tmpro -cv --no-progress | zstd -dv -f -o "$INTOVOID" --no-progress ++println "test: --progress flag" ++zstd tmpro -c | zstd -d -f -o "$INTOVOID" --progress 2>&1 | grep -E "[A-Za-z0-9._ ]+: [0-9]+ bytes" ++zstd tmpro -c | zstd -d -f -q -o "$INTOVOID" --progress 2>&1 | grep -E "[A-Za-z0-9._ ]+: [0-9]+ bytes" ++zstd tmpro -c | zstd -d -f -v -o "$INTOVOID" 2>&1 | grep -E "[A-Za-z0-9._ ]+: [0-9]+ bytes" + rm -f tmpro tmpro.zst + println "test: overwrite input file (must fail)" + zstd tmp -fo tmp && die "zstd compression overwrote the input file" +@@ -1612,7 +1616,7 @@ roundTripTest -g600M -P50 "1 --single-thread --long --zstd=wlog=29,clog=28" + + if [ -n "$hasMT" ] + then +- println "\n===> zstdmt long round-trip tests " ++ println "\n===> zstdmt long round-trip tests " + roundTripTest -g80000000 -P99 "19 -T2" " " + roundTripTest -g5000000000 -P99 "1 -T2" " " + roundTripTest -g500000000 -P97 "1 -T999" " " +-- +2.23.0 + diff --git a/zstd.spec b/zstd.spec index ed4dcf6..89b35b7 100644 --- a/zstd.spec +++ b/zstd.spec @@ -2,7 +2,7 @@ Name: zstd Version: 1.5.0 -Release: 13 +Release: 14 Summary: A fast lossless compression algorithm License: BSD and GPLv2 URL: https://github.com/facebook/zstd @@ -18,6 +18,7 @@ Patch7: patch-7-add-test-case.patch Patch8: patch-8-fix-extra-newline-gets-printes-out-when-compressing-multiple-files.patch Patch9: patch-9-add-test-c-result-print.patch Patch10: backport-zstd-1.5.0-patch-10-fix-entropy-repeat-mode-bug.patch +Patch11: backport-zstd-1.5.0-patch-11-Fix-progress-flag-to-properly-control-progress-display-and-default.patch BuildRequires: gtest-devel gcc-c++ pkg-config @@ -96,6 +97,9 @@ install -D -m644 programs/zstd.1 %{buildroot}%{_mandir}/man1/pzstd.1 %{_mandir}/man1/*.1* %changelog +* Tue Dec 14 2021 zhangxiao - 1.5.0.14 +* Fix progress flag to properly control progress display and default + * Mon Dec 13 2021 zhangxiao - 1.5.0.13 * fix entropy repeat mode bug -- Gitee