- case "$x" in
- *.tar.bz2 | *.tbz2 ) tar xvjf "$x" ;;
- *.tar.gz | *.tgz ) tar xvzf "$x" ;;
- *.bz2 ) bunzip2 "$x" ;;
- *.gz ) gunzip "$x" ;;
- *.tar ) tar xvf "$x" ;;
- *.zip ) unzip "$x" ;;
- *.Z ) uncompress "$x" ;;
- *.7z ) 7za x "$x" ;;
- *.deb ) ar xv "$x" ;;
- *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories --verbose ;;
- *.tar.xz ) tar Jxvf "$x" ;;
+ 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"
+ 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" ;;