summaryrefslogtreecommitdiff
path: root/examples/scripts.v2/arc2tarz
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scripts.v2/arc2tarz')
-rw-r--r--examples/scripts.v2/arc2tarz85
1 files changed, 85 insertions, 0 deletions
diff --git a/examples/scripts.v2/arc2tarz b/examples/scripts.v2/arc2tarz
new file mode 100644
index 0000000..285bede
--- /dev/null
+++ b/examples/scripts.v2/arc2tarz
@@ -0,0 +1,85 @@
+#! /bin/bash
+#
+# original from:
+# arc2tarz: convert arced file to tarred, compressed form.
+# @(#) arc2tarz.ksh 1.0 92/02/16
+# 91/03/28 john h. dubois iii (john@armory.com)
+# 92/02/16 added -h option for help
+#
+# conversion to bash v2 syntax by Chet Ramey
+
+unset ENV
+Usage="Usage: $0 arcfile [-hcg] [ tarzfile ]"
+
+phelp()
+{
+echo "$Usage
+arcfile is the name of an arc file to convert to tarred, compressed form.
+The file must have a .arc extension, but only the base name needs to be
+given. If no output file name is given, it will be created in the current
+directory with the name being the arcfile basename followed by .tar.EXT.
+If the -c option is given, compress will be used, and EXT will be Z.
+The default (also available with -g) is to use gzip, in which case EXT
+is gz. If the basename is too long the extension may be truncated. All
+uppercase letters in the names of files in the archive are moved to lowercase."
+}
+
+compress=gzip
+ext=gz
+
+while getopts "hcg" opt; do
+ case "$opt" in
+ h) phelp; exit 0;;
+ c) compress=compress; ext=Z;;
+ g) compress=gzip ; ext=gz ;;
+ *) echo "$Usage" 1>&2 ; exit 2;;
+ esac
+done
+
+shift $((OPTIND - 1))
+
+if [ $# = 0 ]; then
+ phelp
+ exit 0
+fi
+
+[ -z "$TMP" ] && tmpdir=/tmp/arc2tarz.$$ || tmpdir=$TMP/arc2tarz.$$
+
+case "$1" in
+*.arc) arcfile=$1 ;;
+*) arcfile=$1.arc ;;
+esac
+
+if [ ! -f $arcfile ] || [ ! -r $arcfile ]; then
+ echo "Could not open arc file \"$arcfile\"."
+ exit 1
+fi
+
+case "$arcfile" in
+/*) ;;
+*) arcfile=$PWD/$arcfile ;;
+esac
+
+basename=${arcfile%.arc}
+basename=${basename##*/}
+[ $# -lt 2 ] && tarzname=$PWD/$basename.tar.$ext || tarzname=$2
+
+trap 'rm -rf $tmpdir $tarzname' 1 2 3 6 15
+
+mkdir $tmpdir
+cd $tmpdir
+echo "unarcing files..."
+arc -ie $arcfile
+
+# lowercase
+for f in *; do
+ new=$(echo $f | tr A-Z a-z)
+ if [ "$f" != "$new" ]; then
+ mv $f $new
+ fi
+done
+
+echo "tarring/compressing files..."
+tar cf - * | $compress > $tarzname
+cd -
+rm -rf $tmpdir