From 712a9fd9721c314f4b0238577d803b012845f6d2 Mon Sep 17 00:00:00 2001 From: "W. Felix Handte" <w@felixhandte.com> Date: Fri, 29 Jun 2018 15:33:44 -0400 Subject: [PATCH] Allow Invoking `zstd --list` When `stdin` is not a `tty` Also now returns an error when no inputs are given. New proposed behavior: ``` felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l; echo $? No files given 1 felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l Makefile.zst; echo $? Frames Skips Compressed Uncompressed Ratio Check Filename 1 0 3.08 KB 10.92 KB 3.544 XXH64 Makefile.zst 0 felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l <Makefile.zst; echo $? zstd: --list does not support reading from standard input No files given 1 felix@odin:~/prog/zstd (list-stdin-check)$ ./zstd -l Makefile.zst <Makefile.zst; echo $? Frames Skips Compressed Uncompressed Ratio Check Filename 1 0 3.08 KB 10.92 KB 3.544 XXH64 Makefile.zst 0 felix@odin:~/prog/zstd (list-stdin-check)$ ``` --- programs/fileio.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/programs/fileio.c b/programs/fileio.c index 0175b3163..b4eed28d1 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -2017,21 +2017,25 @@ static int FIO_listFile(fileInfo_t* total, const char* inFileName, int displayLe } int FIO_listMultipleFiles(unsigned numFiles, const char** filenameTable, int displayLevel){ - - if (!IS_CONSOLE(stdin)) { - DISPLAYOUT("zstd: --list does not support reading from standard input\n"); - return 1; + unsigned u; + for (u=0; u<numFiles;u++) { + if (!strcmp (filenameTable[u], stdinmark)) { + DISPLAYOUT("zstd: --list does not support reading from standard input\n"); + return 1; + } } if (numFiles == 0) { + if (!IS_CONSOLE(stdin)) { + DISPLAYOUT("zstd: --list does not support reading from standard input\n"); + } DISPLAYOUT("No files given\n"); - return 0; + return 1; } if (displayLevel <= 2) { DISPLAYOUT("Frames Skips Compressed Uncompressed Ratio Check Filename\n"); } { int error = 0; - unsigned u; fileInfo_t total; memset(&total, 0, sizeof(total)); total.usesCheck = 1;