diff options
Diffstat (limited to 'scripts/uz')
-rwxr-xr-x | scripts/uz | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/scripts/uz b/scripts/uz new file mode 100755 index 0000000..3594130 --- /dev/null +++ b/scripts/uz @@ -0,0 +1,92 @@ +#!/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" + action="Extracting from " + ;; +*lz) + tarparam="-tvf" + 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 ; do + if [ -r "${1}$suffix" ]; then + found=$1$suffix + break + fi + done + + case $found in + *.tar.bz2 | *.tb2) + uzcmd='bzip2 -cd' + ;; + *.tar.lz) + uzcmd='lzip -cd' + ;; + esac + if [ -z "$found" ]; then + echo "$0: could not read \"$1\"." >&2 + else + echo "$action \"$found\"." >&2 + $uzcmd -- "$found" | tar "$tarparam" - + fi + shift +done + +exit 0 |