OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
2.7 KiB

# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: target/share/functions.in
# Copyright (C) 2006 The OpenSDE Project
# Copyright (C) 2004 - 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- SDE-COPYRIGHT-NOTE-END ---
# copy, with special files
# from to file-list
copy_with_list_from_file ()
{
( cd $1 ; tar cSp --no-recursion --files-from=$3 ) |
( cd $2 ; tar xvSP ) |
( x=`wc -l` ; echo "$x files transfered." )
}
# copy out of T2 source without .svn files
# from to
copy_from_source ()
{
list=`mktemp`
# the sed is a work around for a find issue, outputting empty rows
# in some versions ...
find $1 -name '.svn' -prune -o -printf "%P\n" | sed '/^$/d' > $list
cat $list
copy_with_list_from_file $1 $2 $list
rm -f $list
}
# copy out of T2 source without .svn files and does honor special files to
# apply patches, change owner:group or permissions
# from to
copy_and_parse_from_source ()
{
# the sed is a work around for a find issue, outputting empty rows
# in some versions ...
find $1 -name '.svn' -prune -o -printf "%P\n" | sed '/^$/d' | sort |
while read file; do
if [ -d $1/$file ]; then
echo "Dir: $file"
mkdir -p $2/$file
else
cmd=`sed 2q $1/$file`
if [[ $cmd = \#\![a-y]* ]]; then
cmd=${cmd#\#\!};
code=${cmd%% *}
echo "Code $code Command: $cmd File: $file"
args=`echo $cmd | wc -w`
dirname=${file%/*}
basename=${file##*/}
pushd $2/$dirname > /dev/null #; set -x
case $code in
ln|cp)
if [ $args -le 3 ]; then
eval $cmd $basename
else
eval $cmd
fi ;;
chmod|chown|rm)
if [ $args -le 2 ]; then
eval $cmd $basename
else
eval $cmd
fi ;;
patch) patch -f < $1/$file
;;
*) echo "Code: $code unknown" ; exit 1 ;;
esac #; set +x ;
popd > /dev/null
elif [[ $cmd = \#\!* ]]; then
echo Script $file
cp -afv $1/$file $2/$file
chmod +x $2/$file
else
echo File $file
cp -afv $1/$file $2/$file
fi
fi
done
}
# link indentical files to save space
link_identical_files()
{
(
while read ck fn ; do
if [ "$oldck" = "$ck" -a -s $fn ] ; then
echo "\"$fn -> $oldfn\""
rm $fn ; ln $oldfn $fn
else
oldck=$ck ; oldfn=$fn
fi
done < <( find -type f | xargs md5sum | sort )
) | ( x=`wc -l` ; echo "$x links created." )
}