85 lines
1.9 KiB
Bash
85 lines
1.9 KiB
Bash
#! /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
|