Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep original file if -c or --stdout is given #3052

Merged
merged 1 commit into from
Mar 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions programs/zstd.1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.
.TH "ZSTD" "1" "January 2022" "zstd 1.5.2" "User Commands"
.TH "ZSTD" "1" "February 2022" "zstd 1.5.2" "User Commands"
.
.SH "NAME"
\fBzstd\fR \- zstd, zstdmt, unzstd, zstdcat \- Compress or decompress \.zst files
Expand Down Expand Up @@ -165,7 +165,7 @@ Additionally, this can be used to limit memory for dictionary training\. This pa
\fB\-f\fR, \fB\-\-force\fR: disable input and output checks\. Allows overwriting existing files, input from console, output to stdout, operating on links, block devices, etc\.
.
.IP "\(bu" 4
\fB\-c\fR, \fB\-\-stdout\fR: write to standard output (even if it is the console)
dirkmueller marked this conversation as resolved.
Show resolved Hide resolved
\fB\-c\fR, \fB\-\-stdout\fR: write to standard output (even if it is the console); keep original files unchanged\.
.
.IP "\(bu" 4
\fB\-\-[no\-]sparse\fR: enable / disable sparse FS support, to make files with many zeroes smaller on disk\. Creating sparse files may save disk space and speed up decompression by reducing the amount of disk I/O\. default: enabled when output is into a file, and disabled when output is stdout\. This setting overrides default and can force sparse mode over stdout\.
Expand Down
2 changes: 1 addition & 1 deletion programs/zstd.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ the last one takes effect.
disable input and output checks. Allows overwriting existing files, input
from console, output to stdout, operating on links, block devices, etc.
* `-c`, `--stdout`:
write to standard output (even if it is the console)
write to standard output (even if it is the console); keep original files unchanged.
* `--[no-]sparse`:
enable / disable sparse FS support,
to make files with many zeroes smaller on disk.
Expand Down
10 changes: 5 additions & 5 deletions programs/zstdcli.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ static void usage_advanced(const char* programName)
DISPLAYOUT( "Advanced arguments : \n");
DISPLAYOUT( " -V : display Version number and exit \n");

DISPLAYOUT( " -c : write to standard output (even if it is the console) \n");
DISPLAYOUT( " -c : write to standard output (even if it is the console), keep original file \n");

DISPLAYOUT( " -v : verbose mode; specify multiple times to increase verbosity \n");
DISPLAYOUT( " -q : suppress warnings; specify twice to suppress errors too \n");
Expand Down Expand Up @@ -925,7 +925,7 @@ int main(int argCount, const char* argv[])
if (!strcmp(argument, "--help")) { usage_advanced(programName); CLEAN_RETURN(0); }
if (!strcmp(argument, "--verbose")) { g_displayLevel++; continue; }
if (!strcmp(argument, "--quiet")) { g_displayLevel--; continue; }
if (!strcmp(argument, "--stdout")) { forceStdout=1; outFileName=stdoutmark; g_displayLevel-=(g_displayLevel==2); continue; }
if (!strcmp(argument, "--stdout")) { forceStdout=1; outFileName=stdoutmark; FIO_setRemoveSrcFile(prefs, 0); g_displayLevel-=(g_displayLevel==2); continue; }
if (!strcmp(argument, "--ultra")) { ultra=1; continue; }
if (!strcmp(argument, "--check")) { FIO_setChecksumFlag(prefs, 2); continue; }
if (!strcmp(argument, "--no-check")) { FIO_setChecksumFlag(prefs, 0); continue; }
Expand Down Expand Up @@ -1114,7 +1114,7 @@ int main(int argCount, const char* argv[])
operation=zom_decompress; argument++; break;

/* Force stdout, even if stdout==console */
case 'c': forceStdout=1; outFileName=stdoutmark; argument++; break;
case 'c': forceStdout=1; outFileName=stdoutmark; FIO_setRemoveSrcFile(prefs, 0); argument++; break;

/* do not store filename - gzip compatibility - nothing to do */
case 'n': argument++; break;
Expand Down Expand Up @@ -1279,7 +1279,7 @@ int main(int argCount, const char* argv[])
}

nbInputFileNames = filenames->tableSize; /* saving number of input files */

if (recursive) { /* at this stage, filenameTable is a list of paths, which can contain both files and directories */
UTIL_expandFNT(&filenames, followLinks);
}
Expand Down Expand Up @@ -1392,7 +1392,7 @@ int main(int argCount, const char* argv[])
}
UTIL_refFilename(filenames, stdinmark);
}

if (!strcmp(filenames->fileNames[0], stdinmark) && !outFileName)
outFileName = stdoutmark; /* when input is stdin, default output is stdout */

Expand Down
4 changes: 4 additions & 0 deletions tests/cli-tests/compression/basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ zstd -c file | zstd -t
zstd --stdout file | zstd -t
println bob | zstd | zstd -t

# Test keeping input file when compressing to stdout in gzip mode
$ZSTD_SYMLINK_DIR/gzip -c file | zstd -t ; test -f file
$ZSTD_SYMLINK_DIR/gzip --stdout file | zstd -t ; test -f file

# Test --rm
cp file file-rm
zstd --rm file-rm; zstd -t file-rm.zst
Expand Down