updated
[charm.git] / src / scripts / gathertree
1 #!/bin/sh
2
3 [ -x ./gathertree.local ]  && exec ./gathertree.local $@
4
5 if [ "x$SYSTEMLN" = "x" ]; then SYSTEMLN="./system_ln"; fi
6
7 SRC=$1
8 DST=$2
9
10 [ ! -d $SRC ] && exit 0;
11
12 # remove all temporary files
13 rm -f temp.d temp.f temp.m temp.l tmp*.awk
14 # find all directories including and below SRC
15 (cd $SRC ; find . -name CVS -prune -o -type d -print )|sed -e s@.@@> temp.d
16 # find all files below SRC
17 (cd $SRC ; find . -name CVS -prune -o -type f -print )|sed -e s@.@@> temp.f
18 # generate shell script to make directories if they do not exist
19 awk '{print "if [ ! -d '$DST'"$1" ] ; then mkdir '$DST'"$1" ; fi";}' <temp.d >temp.m
20 # generate shell script to symlink files
21 # Count the number of directories up we have to go; print out list
22 echo '{ nUp=0; for (i=1;i<NF;i++)
23                 if ($i=="..") nUp--;
24                 else if ($i!=".")nUp++;
25         pah=""; for (i=0;i<nUp;i++) {pah=pah"../"}; print pah
26 } ' > tmp1.awk
27 echo '{print "pah=`echo '$DST'"$1" | awk -F/ -f tmp1.awk`" ;' > tmp2.awk
28 echo ' print "'$SYSTEMLN' $pah'$SRC'"$1" '$DST'"$1 }' >> tmp2.awk
29 awk -f tmp2.awk <temp.f >temp.l
30 # execute shell script to create directories
31 sh temp.m
32 # execute shell script to link files 
33 sh temp.l
34 [ -f $SRC/gather.tree ] && sh $SRC/gather.tree
35 # remove temporary files
36 rm -f temp.d temp.f temp.m temp.l tmp*.awk