summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Kapshuna <kapsh@kap.sh>2019-06-24 00:54:28 +0300
committerMarc Cornellà <hello@mcornella.com>2021-08-14 22:32:04 +0200
commit59a9b453d348baad4ff7b7cb2e1f205d615200e6 (patch)
tree4f219f2950c2f0112e5ec5726cf4160632748d2a
parent6dc937ff685fcbc43056dbd7fb05ba01c56dfd1a (diff)
downloadzsh-59a9b453d348baad4ff7b7cb2e1f205d615200e6.tar.gz
zsh-59a9b453d348baad4ff7b7cb2e1f205d615200e6.tar.bz2
zsh-59a9b453d348baad4ff7b7cb2e1f205d615200e6.zip
fix(extract): support unpacking deb file from different directory
-rw-r--r--plugins/extract/extract.plugin.zsh14
1 files changed, 7 insertions, 7 deletions
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 601272cac..e63b9494f 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -60,13 +60,13 @@ extract() {
(*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
(*.7z) 7za x "$1" ;;
(*.deb)
- mkdir -p "$extract_dir/control"
- mkdir -p "$extract_dir/data"
- cd "$extract_dir"; ar vx "../${1}" > /dev/null
- cd control; tar xzvf ../control.tar.gz
- cd ../data; extract ../data.tar.*
- cd ..; rm *.tar.* debian-binary
- cd ..
+ local pwd="$PWD" file="${1:A}"
+ mkdir -p "$extract_dir/control" "$extract_dir/data"
+ builtin cd -q "$extract_dir"; ar vx "$file" > /dev/null
+ builtin cd -q control; extract ../control.tar.*
+ builtin cd -q ../data; extract ../data.tar.*
+ builtin cd -q ..; command rm *.tar.* debian-binary
+ builtin cd -q "$pwd"
;;
(*.zst) unzstd "$1" ;;
(*.cab) cabextract -d "$extract_dir" "$1" ;;