#!/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