Ticket #4559: extfs: u7z: bug with nested dirs in mkdir action.

The -w option sets the working directory for the temporary archive 7-zip
builds when modifying an existing one. The option cant be used to set
the base path inside an archive when adding something into it.

When adding something to a 7z archive by its absolute path, 7zip only
uses the last part of the path by default. E.g. `7z a 1.7z
/tmp/a/b/date.txt` would add date.txt to the root dir inside the
archive. If we wanted the file to be under `a/b/` inside the archive as
well, it should be `7z a 1.7z /tmp/a`.

Closes MidnightCommander/mc#202.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
slowpeek 2024-07-09 15:58:39 +03:00 committed by Andrew Borodin
parent 7e2cf63b4e
commit db77fd5a0c

View File

@ -86,7 +86,7 @@ mcu7zip_mkdir ()
{ {
dir=`mktemp -d "${MC_TMPDIR:-/tmp}/mctmpdir-u7z.XXXXXX"` || exit 1 dir=`mktemp -d "${MC_TMPDIR:-/tmp}/mctmpdir-u7z.XXXXXX"` || exit 1
mkdir -p "$dir"/"$2" mkdir -p "$dir"/"$2"
$P7ZIP a -w"$dir" "$1" "$dir"/"$2" >/dev/null 2>&1 $P7ZIP a "$1" "$dir/${2%%/*}" >/dev/null 2>&1
rm -rf "$dir" rm -rf "$dir"
} }