summaryrefslogtreecommitdiffstats
path: root/programs/lz4io.c
diff options
context:
space:
mode:
authorNiklas Hambüchen <mail@nh2.me>2020-08-24 04:23:51 (GMT)
committerNiklas Hambüchen <mail@nh2.me>2020-08-24 04:27:28 (GMT)
commit9a7658070aeca2c0a6c68e5025a80f9e4b847ad7 (patch)
tree02082f6462611113623f51e56ac3dec07ccaa5d0 /programs/lz4io.c
parent34fe7c9d7f4fbeeb42c22f4ad1a01c1771d14268 (diff)
downloadlz4-9a7658070aeca2c0a6c68e5025a80f9e4b847ad7.zip
lz4-9a7658070aeca2c0a6c68e5025a80f9e4b847ad7.tar.gz
lz4-9a7658070aeca2c0a6c68e5025a80f9e4b847ad7.tar.bz2
Use fstat() to determine file size.
This allows us to get the file size even when the input file is passed via stdin. This fixes `--content-size` not working in situations like $ lz4 -v --content-size < /tmp/test > /tmp/test.lz4 Warning : cannot determine input content size With this change, it works. Also helps with #904.
Diffstat (limited to 'programs/lz4io.c')
-rw-r--r--programs/lz4io.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/programs/lz4io.c b/programs/lz4io.c
index 7926b20..0f3507e 100644
--- a/programs/lz4io.c
+++ b/programs/lz4io.c
@@ -680,7 +680,7 @@ LZ4IO_compressFilename_extRess(LZ4IO_prefs_t* const io_prefs, cRess_t ress,
prefs.frameInfo.contentChecksumFlag = (LZ4F_contentChecksum_t)io_prefs->streamChecksum;
prefs.favorDecSpeed = io_prefs->favorDecSpeed;
if (io_prefs->contentSizeFlag) {
- U64 const fileSize = UTIL_getFileSize(srcFileName);
+ U64 const fileSize = UTIL_getOpenFileSize(srcFile);
prefs.frameInfo.contentSize = fileSize; /* == 0 if input == stdin */
if (fileSize==0)
DISPLAYLEVEL(3, "Warning : cannot determine input content size \n");
@@ -1472,7 +1472,7 @@ LZ4IO_getCompressedFileInfo(LZ4IO_cFileInfo_t* cfinfo, const char* input_filenam
LZ4IO_infoResult result = LZ4IO_format_not_known; /* default result (error) */
unsigned char buffer[LZ4F_HEADER_SIZE_MAX];
FILE* const finput = LZ4IO_openSrcFile(input_filename);
- cfinfo->fileSize = UTIL_getFileSize(input_filename);
+ cfinfo->fileSize = (finput == NULL) ? 0 : UTIL_getOpenFileSize(finput);
while (!feof(finput)) {
LZ4IO_frameInfo_t frameInfo = LZ4IO_INIT_FRAMEINFO;