| 1 | #! /bin/bash
|
|---|
| 2 | #
|
|---|
| 3 | # original from:
|
|---|
| 4 | # arc2tarz: convert arced file to tarred, compressed form.
|
|---|
| 5 | # @(#) arc2tarz.ksh 1.0 92/02/16
|
|---|
| 6 | # 91/03/28 john h. dubois iii (john@armory.com)
|
|---|
| 7 | # 92/02/16 added -h option for help
|
|---|
| 8 | #
|
|---|
| 9 | # conversion to bash v2 syntax by Chet Ramey
|
|---|
| 10 |
|
|---|
| 11 | unset ENV
|
|---|
| 12 | Usage="Usage: $0 arcfile [-hcg] [ tarzfile ]"
|
|---|
| 13 |
|
|---|
| 14 | phelp()
|
|---|
| 15 | {
|
|---|
| 16 | echo "$Usage
|
|---|
| 17 | arcfile is the name of an arc file to convert to tarred, compressed form.
|
|---|
| 18 | The file must have a .arc extension, but only the base name needs to be
|
|---|
| 19 | given. If no output file name is given, it will be created in the current
|
|---|
| 20 | directory with the name being the arcfile basename followed by .tar.EXT.
|
|---|
| 21 | If the -c option is given, compress will be used, and EXT will be Z.
|
|---|
| 22 | The default (also available with -g) is to use gzip, in which case EXT
|
|---|
| 23 | is gz. If the basename is too long the extension may be truncated. All
|
|---|
| 24 | uppercase letters in the names of files in the archive are moved to lowercase."
|
|---|
| 25 | }
|
|---|
| 26 |
|
|---|
| 27 | compress=gzip
|
|---|
| 28 | ext=gz
|
|---|
| 29 |
|
|---|
| 30 | while getopts "hcg" opt; do
|
|---|
| 31 | case "$opt" in
|
|---|
| 32 | h) phelp; exit 0;;
|
|---|
| 33 | c) compress=compress; ext=Z;;
|
|---|
| 34 | g) compress=gzip ; ext=gz ;;
|
|---|
| 35 | *) echo "$Usage" 1>&2 ; exit 2;;
|
|---|
| 36 | esac
|
|---|
| 37 | done
|
|---|
| 38 |
|
|---|
| 39 | shift $((OPTIND - 1))
|
|---|
| 40 |
|
|---|
| 41 | if [ $# = 0 ]; then
|
|---|
| 42 | phelp
|
|---|
| 43 | exit 0
|
|---|
| 44 | fi
|
|---|
| 45 |
|
|---|
| 46 | [ -z "$TMP" ] && tmpdir=/tmp/arc2tarz.$$ || tmpdir=$TMP/arc2tarz.$$
|
|---|
| 47 |
|
|---|
| 48 | case "$1" in
|
|---|
| 49 | *.arc) arcfile=$1 ;;
|
|---|
| 50 | *) arcfile=$1.arc ;;
|
|---|
| 51 | esac
|
|---|
| 52 |
|
|---|
| 53 | if [ ! -f $arcfile ] || [ ! -r $arcfile ]; then
|
|---|
| 54 | echo "Could not open arc file \"$arcfile\"."
|
|---|
| 55 | exit 1
|
|---|
| 56 | fi
|
|---|
| 57 |
|
|---|
| 58 | case "$arcfile" in
|
|---|
| 59 | /*) ;;
|
|---|
| 60 | *) arcfile=$PWD/$arcfile ;;
|
|---|
| 61 | esac
|
|---|
| 62 |
|
|---|
| 63 | basename=${arcfile%.arc}
|
|---|
| 64 | basename=${basename##*/}
|
|---|
| 65 | [ $# -lt 2 ] && tarzname=$PWD/$basename.tar.$ext || tarzname=$2
|
|---|
| 66 |
|
|---|
| 67 | trap 'rm -rf $tmpdir $tarzname' 1 2 3 6 15
|
|---|
| 68 |
|
|---|
| 69 | mkdir $tmpdir
|
|---|
| 70 | cd $tmpdir
|
|---|
| 71 | echo "unarcing files..."
|
|---|
| 72 | arc -ie $arcfile
|
|---|
| 73 |
|
|---|
| 74 | # lowercase
|
|---|
| 75 | for f in *; do
|
|---|
| 76 | new=$(echo $f | tr A-Z a-z)
|
|---|
| 77 | if [ "$f" != "$new" ]; then
|
|---|
| 78 | mv $f $new
|
|---|
| 79 | fi
|
|---|
| 80 | done
|
|---|
| 81 |
|
|---|
| 82 | echo "tarring/compressing files..."
|
|---|
| 83 | tar cf - * | $compress > $tarzname
|
|---|
| 84 | cd -
|
|---|
| 85 | rm -rf $tmpdir
|
|---|