106 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh
 | |
| # Copyright 1994,2002 David C. Niemi.
 | |
| # Copyright 1996,1997,2001-2003,2010 Alain Knaff.
 | |
| # This file is part of mtools.
 | |
| #
 | |
| # Mtools is free software: you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation, either version 3 of the License, or
 | |
| # (at your option) any later version.
 | |
| #
 | |
| # Mtools is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with Mtools.  If not, see <http://www.gnu.org/licenses/>.
 | |
| # uz [file...]
 | |
| # lz [file...]
 | |
| #
 | |
| # If called "uz", gunzips and extracts a gzip'd tar'd archive.
 | |
| # If called "lz", gunzips and shows a listing of a gzip'd tar'd archive.
 | |
| #
 | |
| # Requires: gzip and tar in the user's path.  Should work with most tars.
 | |
| # "-" is now used for backwards compatibility with antique tars, e.g. SCO.
 | |
| #
 | |
| # 1994/02/19	DCN	Created (as a trivial, but useful script)
 | |
| # 1994/12/01	DCN	Combined uz and lz, added suffix handling
 | |
| # 2002/09/11	DCN	Added bzip2 support
 | |
| # 2010/10/16	AKN	Added lzip support
 | |
| #
 | |
| # Copyright (C) 1994, 2002 David C. Niemi (niemi at tuxers dot net)
 | |
| # The author requires that any copies or derived works include this
 | |
| # copyright notice; no other restrictions are placed on its use.
 | |
| #
 | |
| 
 | |
| set -e
 | |
| set -u
 | |
| 
 | |
| ## Default unzipping command
 | |
| uzcmd='gzip -cd'
 | |
| 
 | |
| case $0 in
 | |
| *uz)
 | |
| 	tarparam="-pxvf"
 | |
| 	zipparam=""
 | |
| 	action="Extracting from "
 | |
| 	;;
 | |
| *lz)
 | |
| 	tarparam="-tvf"
 | |
| 	zipparam="-l"
 | |
| 	action="Reading directory of "
 | |
| 	;;
 | |
| *)
 | |
| 	echo "$0: expect to be named either \"uz\" or \"lz\"." >&2
 | |
| 	exit 1
 | |
| 	;;
 | |
| esac
 | |
| 
 | |
| if [ $# = 0 ]; then
 | |
| 	echo "$action standard input." >&2
 | |
| 	$uzcmd - | tar "$tarparam" -
 | |
| 	exit 0
 | |
| fi
 | |
| 
 | |
| while [ $# -ge 1 ]; do
 | |
| 	echo >&2
 | |
| 	found=
 | |
| 
 | |
| 	for suffix in "" .gz .tgz .tar.gz .z .tar.z .taz .tpz .Z .tar.Z .tar.bz2 tar.lz .zip .jar .war .ear .aar .tar.xz; do
 | |
| 		if [ -r "${1}$suffix" ]; then
 | |
| 			found=$1$suffix
 | |
| 			break
 | |
| 		fi
 | |
| 	done
 | |
| 
 | |
| 	unzip=0
 | |
| 	case $found in
 | |
| 		*.tar.bz2 | *.tb2)
 | |
| 			uzcmd='bzip2 -cd'
 | |
| 			;;
 | |
| 		*.zip | *.jar | *.war | *.ear | *.aar)
 | |
| 			unzip=1
 | |
| 			;;
 | |
| 		*.tar.lz)
 | |
| 			uzcmd='lzip -cd'
 | |
| 			;;
 | |
| 		*.tar.xz)
 | |
| 			uzcmd='xz -cd'
 | |
| 			;;	
 | |
| 	esac
 | |
| 	if [ -z "$found" ]; then
 | |
| 		echo "$0: could not read \"$1\"." >&2
 | |
| 	else
 | |
| 		echo "$action \"$found\"." >&2
 | |
| 		if [ $unzip = 1 ]; then
 | |
| 			unzip $zipparam -- "$found"
 | |
| 		else
 | |
| 			$uzcmd -- "$found" | tar "$tarparam" -
 | |
| 		fi
 | |
| 	fi
 | |
| 	shift
 | |
| done
 | |
| 
 | |
| exit 0
 |