summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvangelos Foutras <evangelos@foutrelis.com>2022-06-04 19:49:23 +0300
committerEvangelos Foutras <evangelos@foutrelis.com>2022-06-04 19:49:23 +0300
commita4a32b5ffccf6ed9b93c02f5a977ebc5ffe3e156 (patch)
tree5c11858b1c7081b6b7b19bd3e197dea9bc1ff3ae
parentf4e91e231cf158e4389f8dfc7e76a31f1bd613e4 (diff)
pacdiff: stop if the base file extraction fails
This can fail if the tarball indicated by base_cache_tar() is incorrect or corrupted for some reason. Also switch to bsdtar(1) for consistency. Signed-off-by: Evangelos Foutras <evangelos@foutrelis.com>
-rw-r--r--src/pacdiff.sh.in6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/pacdiff.sh.in b/src/pacdiff.sh.in
index 43b5e5b..7f9aa11 100644
--- a/src/pacdiff.sh.in
+++ b/src/pacdiff.sh.in
@@ -121,7 +121,11 @@ merge_file() {
base="$(mktemp "$tempdir"/"$basename.base.XXX")"
merged="$(mktemp "$tempdir"/"$basename.merged.XXX")"
- tar -xOf "$base_tar" "${file#/}" >"$base"
+ if ! bsdtar -xqOf "$base_tar" "${file#/}" >"$base"; then
+ msg2 "Unable to extract the previous version of this file."
+ return 1
+ fi
+
if $mergeprog "$file" "$base" "$pacfile" >"$merged"; then
msg2 "Merged without conflicts."
fi