Diff
1diff --git a/plugins/extract/README.md b/plugins/extract/README.md
2index f2e6ad1d1cce34ce427bad276e68c841d76c67f8..1dd8e19c0d7a78ac77416cf5c5d4d2b93f6f24a2 100644
3--- a/plugins/extract/README.md
4+++ b/plugins/extract/README.md
5@@ -21,6 +21,7 @@ plugins=(... extract)
6 | `apk` | Android app file |
7 | `aar` | Android library file |
8 | `bz2` | Bzip2 file |
9+| `cab` | Microsoft cabinet archive |
10 | `deb` | Debian package |
11 | `ear` | Enterprise Application aRchive |
12 | `gz` | Gzip file |
13diff --git a/plugins/extract/_extract b/plugins/extract/_extract
14index 267c4d4e14cd2d0a95b186b5e3832ad9ef76a219..31a7facbec2d31a4d2d80c7bf5cc71dcb6eb9b3b 100644
15--- a/plugins/extract/_extract
16+++ b/plugins/extract/_extract
17@@ -3,5 +3,5 @@
18
19 _arguments \
20 '(-r --remove)'{-r,--remove}'[Remove archive.]' \
21- "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \
22+ "*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|cab|deb|ear|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \
23 && return 0
24diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
25index e390e2dccaff9bc910b0e29f1a2f04dc106967ef..601272cac18495135af20a86f689d0354e560fdb 100644
26--- a/plugins/extract/extract.plugin.zsh
27+++ b/plugins/extract/extract.plugin.zsh
28@@ -55,7 +55,7 @@ extract() {
29 (*.lz4) lz4 -d "$1" ;;
30 (*.lzma) unlzma "$1" ;;
31 (*.z) uncompress "$1" ;;
32- (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
33+ (*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d "$extract_dir" ;;
34 (*.rar) unrar x -ad "$1" ;;
35 (*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
36 (*.7z) 7za x "$1" ;;
37@@ -69,6 +69,7 @@ extract() {
38 cd ..
39 ;;
40 (*.zst) unzstd "$1" ;;
41+ (*.cab) cabextract -d "$extract_dir" "$1" ;;
42 (*)
43 echo "extract: '$1' cannot be extracted" >&2
44 success=1