/[fai]/trunk/bin/ftar
ViewVC logotype

Contents of /trunk/bin/ftar

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4677 - (hide annotations) (download)
Sat Nov 10 13:55:48 2007 UTC (5 years, 7 months ago) by lange
File size: 4316 byte(s)
update FSF address (closes: #444154)
1 lange 406 #! /bin/sh
2    
3     # $Id$
4     #*********************************************************************
5     #
6     # ftar -- extract tar files using FAI classes
7     #
8     # This script is part of FAI (Fully Automatic Installation)
9 lange 3805 # Copyright (C) 2001-2006 Thomas Lange, lange@informatik.uni-koeln.de
10 lange 406 # Universitaet zu Koeln
11     #
12     #*********************************************************************
13     # This program is free software; you can redistribute it and/or modify
14     # it under the terms of the GNU General Public License as published by
15     # the Free Software Foundation; either version 2 of the License, or
16     # (at your option) any later version.
17     #
18     # This program is distributed in the hope that it will be useful, but
19     # WITHOUT ANY WARRANTY; without even the implied warranty of
20     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21     # General Public License for more details.
22     #
23     # A copy of the GNU General Public License is available as
24     # '/usr/share/common-licences/GPL' in the Debian GNU/Linux distribution
25     # or on the World Wide Web at http://www.gnu.org/copyleft/gpl.html. You
26     # can also obtain it by writing to the Free Software Foundation, Inc.,
27 lange 4677 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
28 lange 406 #*********************************************************************
29    
30 lange 3805 version="Version 1.6, 28-aug-2006"
31 lange 406
32 lange 602 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
33 lange 406 die() {
34 lange 1460 echo "ftar died with error: $1"
35 lange 406 exit 99
36     }
37     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
38     extract() {
39    
40 lange 661 local file=$1
41     local catname=$2
42 lange 406
43 lange 446 echo "ftar: extracting $file to $target/$dir"
44 lange 661 $catname $file | tar -C $target/$dir $vflag -xf -
45 lange 462 tardone=1
46 lange 446 # if option -1 is set, only one class will be used
47 lange 3083 [ $single -eq 1 ] && exit 0
48 lange 406 }
49     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
50     usage() {
51    
52 lange 410 cat <<EOF
53     ftar, extract tar files using classes. $version
54    
55 lange 3805 Copyright (C) 2001-2006 by Thomas Lange
56 lange 410
57 lange 461 Usage: ftar [OPTION] ... SOURCE
58 lange 410
59     -1 Use only first tar file matching class name.
60     -c class[class] Define classes (space separated).
61     -d Delete all files in target before extracting.
62     -D Create debug output.
63     -h Show summary of options.
64     -r Recursively remove files in target before extracting.
65     -s source_dir Look for source files relative to source_dir.
66     -t target_dir Extract files relativ to target_dir.
67 lange 446 -v Be verbose. Not yet used.
68 lange 410
69     Report bugs to <lange@informatik.uni-koeln.de>.
70     EOF
71 lange 406 exit 0
72     }
73     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
74    
75 lange 1137 source=$FAI/files
76 lange 406 target=$FAI_ROOT
77 lange 461 deletefiles=0
78     removedir=0
79 lange 462 tardone=0
80 lange 3083 single=0
81 lange 461
82 lange 406 while getopts 1hDdrvs:t:c: opt ; do
83     case "$opt" in
84     d) deletefiles=1 ;;
85     D) debug=1 ;;
86     r) removedir=1 ;;
87 lange 446 # v) verbose=1 ;;
88 lange 406 1) single=1 ;;
89     s) source=$OPTARG ;;
90     t) target=$OPTARG ;;
91     c) classes=$OPTARG ;;
92     h) usage ;;
93     esac
94     done
95     shift $(($OPTIND - 1))
96    
97     [ "$1" ] || usage
98 lange 1146 [ -f $ENV{LOGDIR}/FAI_CLASSES ] && classes=`cat $ENV{LOGDIR}/FAI_CLASSES`
99 lange 487 # last class has highest priority
100 lange 679
101     # reverse order of classes
102     for class in $classes; do
103     revclasses="$class $revclasses"
104     done
105    
106 lange 447 [ "$debug" ] && vflag="-v"
107 lange 679 [ "$debug" ] && echo "ftar: classes : $revclasses"
108 lange 406 [ -z "$source" ] && die "Source directory undefined."
109     [ -z "$target" ] && die "Target directory undefined."
110    
111 lange 461 # currently only one directory is used
112 lange 406 dir=$1
113 lange 410 fpath=$source/$dir
114 lange 1574 [ -d $fpath ] || die "No directory $fpath"
115 lange 406
116 lange 1278 [ $deletefiles -eq 1 ] && cd $target/$dir && rm -f .* * 2>/dev/null
117 lange 406
118 lange 2524 if [ $removedir -eq 1 ]; then
119     cd $target/$dir
120     if [ $PWD = "/" ]; then
121     echo "ftar WARNING: Will not do recursive removal of directory /"
122     else
123     rm -rf .* * 2>/dev/null
124     fi
125     fi
126    
127 lange 679 for c in $revclasses ; do
128 lange 1278 # what if a directory exists which is equal to the hostname or a classname?
129 lange 661 # [ -f $fpath/$c ] && extract $fpath/$c cat
130     [ -f $fpath/$c.tar ] && extract $fpath/$c.tar cat
131     [ -f $fpath/$c.tar.gz ] && extract $fpath/$c.tar.gz zcat
132     [ -f $fpath/$c.tar.bz2 ] && extract $fpath/$c.tar.bz2 bzcat
133 lange 406 done
134 lange 447
135 lange 3805 if [ $tardone -eq 0 ]; then
136     echo "ftar: No matching class found in $fpath"
137     exit 1
138     else
139     exit 0
140     fi
141    

Properties

Name Value
svn:eol-style native
svn:executable *
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.5