#!/bin/bash
declare -a oldlist newlist dtulist
declare -i numallpatches
add_dtu_upgrade () {
let "numallpatches+=1"
oldlist[numallpatches]=$1
newlist[numallpatches]=$2
dtulist[numallpatches]=$3
}
try_dtu_upgrade () {
if [ -f $3 ]; then
add_dtu_upgrade $1 $2 $3
else
echo "removing $3" >&2
fi
}
add_dtuline () {
patch=$1
output=`edelta -pi $patch`
if [ ! -z "$output" ]; then
fname1=${output% -> *}
output=${output#* -> }
fname2=${output%:*}
if [ "${patch##*.}" = "dtu" ]; then
add_dtu_upgrade $fname1 $fname2 $patch
fi
# if [ "${patch##*.}" = "fdtu" ] &&
# [ "${patch%.*}" = "${fname1%.t*}" ]; then
# add_dtu_upgrade $fname1 $fname2 $patch
# exit
# fi
# if [ "${patch##*.}" = "bdtu" ] &&
# [ "${patch%.*}" = "${fname1%.t*}" ]; then
# add_dtu_upgrade $fname1 $fname2 $patch
# exit
# fi
fi
}
if [ -z $1 ]; then
while read format option1 option2 option3
do
case $format in
"0")
try_dtu_upgrade $option1 $option2 $option3
;;
"1")
try_dtu_upgrade $option1 $option2 ${option1%.t*}.fdtu
;;
"2")
try_dtu_upgrade $option2 $option1 ${option2%.t*}.bdtu
;;
esac
done
for j in *dtu; do
unset found
for i in $(seq $numallpatches); do
if [ "$j" = "${dtulist[i]}" ]; then found="yes"; fi
done
if [ -z $found ]; then
echo "adding $j" >&2
add_dtuline $j
fi
done
else for patch in $*; do
add_dtuline $patch
done
fi
for i in $(seq $numallpatches); do
patch=${dtulist[i]}
if [ "${patch##*.}" = "bdtu" ]; then
echo "2 ${newlist[i]} ${oldlist[i]}"
fi
if [ "${patch##*.}" = "fdtu" ]; then
echo "1 ${oldlist[i]} ${newlist[i]}"
fi
if [ "${patch##*.}" = "dtu" ]; then
echo "0 ${oldlist[i]} ${newlist[i]} $patch"
fi
done
syntax highlighted by Code2HTML, v. 0.9.1