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
|
---|