summaryrefslogtreecommitdiff
path: root/scripts/uz
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/uz')
-rwxr-xr-xscripts/uz92
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