]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
zstd cli : displays total decoded size, even when a stream consists of multiple frames
authorYann Collet <cyan@fb.com>
Mon, 7 Nov 2016 22:41:21 +0000 (14:41 -0800)
committerYann Collet <cyan@fb.com>
Mon, 7 Nov 2016 22:42:37 +0000 (14:42 -0800)
NEWS
programs/fileio.c

diff --git a/NEWS b/NEWS
index 7710a07aa7e5b324afd8789b8ab4e1b5670f9ff4..df23a2914f334ed03715f7cbff57ea3406018f82 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+v1.1.2
+New : cli : status displays total amount decoded when stream/file consists of multiple appended frames (like pzstd)
+
 v1.1.1
 New : command -M#, --memory=, --memlimit=, --memlimit-decompress= to limit allowed memory consumption
 New : doc/zstd_manual.html, by Przemyslaw Skibinski
index a17a78f301a48a51560804f6f74f22fab0838e07..16a74a0f69f2ffb52bbdbd530b64b079cce490da 100644 (file)
@@ -580,7 +580,8 @@ static void FIO_fwriteSparseEnd(FILE* file, unsigned storedSkips)
     @return : size of decoded frame
 */
 unsigned long long FIO_decompressFrame(dRess_t ress,
-                                       FILE* foutput, FILE* finput, size_t alreadyLoaded)
+                                       FILE* foutput, FILE* finput, size_t alreadyLoaded,
+                                       U64 alreadyDecoded)
 {
     U64 frameSize = 0;
     size_t readSize;
@@ -604,7 +605,7 @@ unsigned long long FIO_decompressFrame(dRess_t ress,
         /* Write block */
         storedSkips = FIO_fwriteSparse(foutput, ress.dstBuffer, outBuff.pos, storedSkips);
         frameSize += outBuff.pos;
-        DISPLAYUPDATE(2, "\rDecoded : %u MB...     ", (U32)(frameSize>>20) );
+        DISPLAYUPDATE(2, "\rDecoded : %u MB...     ", (U32)((alreadyDecoded+frameSize)>>20) );
 
         if (readSizeHint == 0) break;   /* end of frame */
         if (inBuff.size != inBuff.pos) EXM_THROW(37, "Decoding error : should consume entire input");
@@ -683,7 +684,7 @@ static int FIO_decompressSrcFile(dRess_t ress, const char* srcFileName)
                 fclose(srcFile);
                 return 1;
         }   }
-        filesize += FIO_decompressFrame(ress, dstFile, srcFile, toRead);
+        filesize += FIO_decompressFrame(ress, dstFile, srcFile, toRead, filesize);
     }
 
     /* Final Status */
@@ -715,7 +716,7 @@ static int FIO_decompressDstFile(dRess_t ress,
     if (strcmp (srcFileName, stdinmark) && UTIL_getFileStat(srcFileName, &statbuf)) stat_result = 1;
     result = FIO_decompressSrcFile(ress, srcFileName);
 
-    if (fclose(ress.dstFile)) EXM_THROW(38, "Write error : cannot properly close %s", dstFileName);    
+    if (fclose(ress.dstFile)) EXM_THROW(38, "Write error : cannot properly close %s", dstFileName);
 
     if ( (result != 0)
        && strcmp(dstFileName, nulmark)  /* special case : don't remove() /dev/null (#316) */