local x super
for x in "$@"; do
case "$x" in
+ # tars first, so they are higher pri than non-tar extensions
+ *.tar ) tar xf "$x" ;;
+ *.tar.bz2 | *.tbz2 ) tar xjf "$x" ;;
+ *.tar.gz | *.tgz ) tar xzf "$x" ;;
+ *.tar.xz ) tar Jxf "$x" ;;
+ *.xz) xz -d "$x" ;;
*.7z ) 7za x "$x" ;;
*.bz2 ) bunzip2 "$x" ;;
- *.deb ) ar x "$x" ;;
+ *.deb )
+ ar x "$x"
+ tmp=(data.tar.*)
+ case $tmp in
+ *.xz) tar xJf data.tar.xz ;;
+ *.gz) tar xzf data.tar.gz ;;
+ *) echo "error: could not find data.tar.*" >&2; exit 1 ;;
+ esac
+ tar xzf control.tar.gz
+ rm -f control.tar.gz
+ rm -f data.tar.*
+ ;;
*.dsc) dpkg-source -x "$x" ;;
*.gz ) gunzip "$x" ;;
*.iso )
*.r[0-9][0-9]|*.rar ) unrar x "$x" ;;
*.rpm ) rpm2cpio "$x" | cpio --extract --make-directories ;;
*.sfs) $super unsquashfs "$x" ;;
- *.tar ) tar xf "$x" ;;
- *.tar.bz2 | *.tbz2 ) tar xjf "$x" ;;
- *.tar.gz | *.tgz ) tar xzf "$x" ;;
- *.tar.xz ) tar Jxf "$x" ;;
- *.xz) xz -d "$x" ;;
*.Z ) uncompress "$x" ;;
*.zip|*.xpi ) unzip "$x" ;;