diff --git a/programs/util.c b/programs/util.c index 116f88e10..7f65f9373 100644 --- a/programs/util.c +++ b/programs/util.c @@ -1135,9 +1135,6 @@ static char* mallocAndJoin2Dir(const char *dir1, const char *dir2) memcpy(outDirBuffer, dir1, dir1Size); outDirBuffer[dir1Size] = '\0'; - if (dir2[0] == '.') - return outDirBuffer; - buffer = outDirBuffer + dir1Size; if (dir1Size > 0 && *(buffer - 1) != PATH_SEP) { *buffer = PATH_SEP; diff --git a/tests/cli-tests/file-handling/directory-mirror.sh b/tests/cli-tests/file-handling/directory-mirror.sh new file mode 100755 index 000000000..b2f70b591 --- /dev/null +++ b/tests/cli-tests/file-handling/directory-mirror.sh @@ -0,0 +1,49 @@ +#!/bin/sh +set -e + +# setup +mkdir -p src/.hidden src/dir +mkdir mid dst + +echo "file1" > src/file1 +echo "file2" > src/.file2 +echo "file3" > src/.hidden/.file3 +echo "file4" > src/dir/.file4 + +# relative paths +zstd -q -r --output-dir-mirror mid/ src/ +zstd -q -d -r --output-dir-mirror dst/ mid/src/ + +diff --brief --recursive --new-file src/ dst/mid/src/ + +# reset +rm -rf mid dst +mkdir mid dst + +# from inside the directory +(cd src; zstd -q -r --output-dir-mirror ../mid/ ./) +(cd mid; zstd -q -d -r --output-dir-mirror ../dst/ ./) + +diff --brief --recursive --new-file src/ dst/ + +# reset +rm -rf mid dst +mkdir mid dst + +# absolute paths +export BASE_PATH="$(pwd)" + +zstd -q -r --output-dir-mirror mid/ "${BASE_PATH}/src/" +zstd -q -d -r --output-dir-mirror dst/ "${BASE_PATH}/mid/${BASE_PATH}/src/" + +diff --brief --recursive --new-file src/ "dst/${BASE_PATH}/mid/${BASE_PATH}/src/" + +# reset +rm -rf mid dst +mkdir mid dst + +# dots +zstd -q -r --output-dir-mirror mid/ ./src/./ +zstd -q -d -r --output-dir-mirror dst/ ./mid/./src/./ + +diff --brief --recursive --new-file src/ dst/mid/src/ diff --git a/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact b/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact new file mode 100644 index 000000000..e69de29bb diff --git a/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact b/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact new file mode 100644 index 000000000..e69de29bb