| #! /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 |