shift
;;
esac
- local x super restore_nullglob f
+ local x super restore_nullglob f cmd
for x in "$@"; do
case "$x" in
# tars first, so they are higher pri than non-tar extensions
$quiet || echo tar Jxf "$x"
tar Jxf "$x"
;;
+ *.tar.zst )
+ $quiet || echo tar -I unzstd -xf "$x"
+ tar -I unzstd -xf "$x"
+ ;;
+ *.zst )
+ $quiet || echo unzstd "$x"
+ unzstd "$x"
+ ;;
*.xz)
$quiet || echo pixz -d "$x"
pixz -d "$x"
;;
*.7z )
- $quiet || echo 7za x "$x"
- 7za x "$x"
+ if type -p 7za &>/dev/null; then
+ cmd=7za
+ else
+ cmd=7zr
+ fi
+ $quiet || echo 7zr x "$x"
+ $cmd x "$x"
;;
*.bz2 )
$quiet || echo bunzip2 "$x"
bunzip2 "$x"
;;
*.deb )
- $quiet || ar x "$x"
+ $quiet || echo ar x "$x"
ar x "$x"
restore_nullglob=false
if ! shopt -q nullglob; then
tar xJf $f
rm -f $f
;;
+ *.zst)
+ $quiet || echo tar -I unzstd -xf $f
+ tar -I unzstd -xf $f
+ rm -f $f
+ ;;
*.gz)
$quiet || echo tar xzf $f
tar xzf $f