Skip to content

Commit

Permalink
Merge pull request #3027 from brailovich/dev
Browse files Browse the repository at this point in the history
fix for -r on empty directory
  • Loading branch information
Cyan4973 authored Jan 29, 2022
2 parents 85a1325 + 9f37d1f commit c9072dd
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
15 changes: 14 additions & 1 deletion programs/zstdcli.c
Original file line number Diff line number Diff line change
Expand Up @@ -839,6 +839,7 @@ int main(int argCount, const char* argv[])
size_t streamSrcSize = 0;
size_t targetCBlockSize = 0;
size_t srcSizeHint = 0;
size_t nbInputFileNames = 0;
int dictCLevel = g_defaultDictCLevel;
unsigned dictSelect = g_defaultSelectivityLevel;
#ifndef ZSTD_NODICT
Expand Down Expand Up @@ -1261,6 +1262,8 @@ 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 @@ -1363,7 +1366,17 @@ int main(int argCount, const char* argv[])
#endif

/* No input filename ==> use stdin and stdout */
if (filenames->tableSize == 0) UTIL_refFilename(filenames, stdinmark);
if (filenames->tableSize == 0) {
/* It is possible that the input
was a number of empty directories. In this case
stdin and stdout should not be used */
if (nbInputFileNames > 0 ){
DISPLAYLEVEL(1, "please provide correct input file(s) or non-empty directories -- ignored \n");
CLEAN_RETURN(0);
}
UTIL_refFilename(filenames, stdinmark);
}

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

Expand Down
5 changes: 5 additions & 0 deletions tests/playTests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,11 @@ println "\n===> recursive mode test "
# combination of -r with empty list of input file
zstd -c -r < tmp > tmp.zst

# combination of -r with empty folder
mkdir -p tmpEmptyDir
zstd -r tmpEmptyDir
rm -rf tmpEmptyDir


println "\n===> file removal"
zstd -f --rm tmp
Expand Down

0 comments on commit c9072dd

Please sign in to comment.