#!/bin/bash # Directory prefix=@prefix@ datarootdir=@datarootdir@ datadir=@datadir@ # Enable NLS export TEXTDOMAIN=proc-rpmnew export TEXTDOMAINDIR=@localedir@ . gettext.sh # Output menu output_menu() { echo "`eval_gettext "S) Show difference"`" echo "`eval_gettext "E) Edit on diff mode of vim"`" echo "`eval_gettext "I) merge Intaractively by sdiff"`" echo "`eval_gettext "R) Replace current file by saved file"`" echo "`eval_gettext "P) Protect current file and remove saved file"`" echo "`eval_gettext "Q) Quit"`" echo "`eval_gettext "N) Next file"`" echo -n "`eval_gettext "What do you do? > "`" } # execute diff exec_diff() { COLUMNS=$(tput cols) HALFCOL=$(expr $COLUMNS / 2 - 2) printf "%-${HALFCOL}s%-${HALFCOL}s\n" $dir/$cur $dir/$sav echo diff --side-by-side -W ${COLUMNS} $dir/$cur $dir/$sav # --suppress-common-lines } # execute sdiff exec_sdiff() { MODE=`stat -c "%a" $dir/$cur` OWNER=`stat -c "%U" $dir/$cur` GROUP=`stat -c "%G" $dir/$cur` sdiff -o $dir/$cur.new -w $(tput cols) $dir/$cur $dir/$sav mv $dir/$cur.new $dir/$cur chmod ${MODE} $dir/$cur chown ${OWNER}:${GROUP} $dir/$cur } # main loop for file in `find /etc 2>/dev/null | @EGREP@ "rpm(new|save)$"` do dir=`dirname $file` sav=`basename $file` cur=`basename $file .rpmnew` if [ $cur = $sav ] then cur=`basename $file .rpmsave` fi if [ -e $cur ] then continue fi ok=0 while [ $ok -eq 0 ] do ctime=`stat -c "%y" $dir/$cur` stime=`stat -c "%y" $dir/$sav` echo "`eval_gettext "current configuration: \\\$dir/\\\$cur (\\\$ctime)"`" echo "`eval_gettext "saved configuration : \\\$file (\\\$stime)"`" output_menu read command echo case "$command" in s|S) exec_diff ;; e|E) vim +r$dir/$cur -d $dir/$cur.new $dir/$sav mv $dir/$cur.new $dir/$cur ;; i|I) exec_sdiff ;; r|R) mv $dir/$sav $dir/$cur ok=1;; p|P) rm $dir/$sav ok=1;; q|Q) exit ;; n|N) ok=1;; *) echo "`eval_gettext "You inputed wrong character."`" echo;; esac done done