Sophie

Sophie

distrib > Mageia > 6 > i586 > by-pkgid > eddfaf3641c8d9067ce258d954757856 > files > 2

etc-update-20020731-18.mga6.src.rpm

--- etc-update-20020731/etc-update.foo	2002-07-31 14:43:21.000000000 +0200
+++ etc-update-20020731/etc-update	2003-09-13 18:55:27.000000000 +0200
@@ -32,16 +32,16 @@
 #
 # Find all "rpmnew" configuration files.
 #
-cfg_files=`find $configdirs -iname '*.rpmnew'`
+#cfg_files=`find $configdirs -iname '*.rpmnew'`
 
 #
 # Ask which one of the given two files to install
 #
 rm_extra_file() {
-	old=$1
-	new=$2
+	old="$1"
+	new="$2"
 	
-	show_diff $old $new
+	show_diff "$old" "$new"
 	menu1
 	
 	# read and echo 1 char from stdin
@@ -50,22 +50,26 @@
 	case $input in
 	1)
 		echo "*** upgrading to $new ..."
-		mv $mv_opts $new $old
+		mv "$mv_opts" "$new" "$old"
 		;;
 	2)
 		echo "*** keeping $old ..."
-		rm $rm_opts $new
+		rm "$rm_opts" "$new"
 		;;
 	3)
-		merge_files $old $new
-		install_merged_file $old $new
+		merge_files "$old" "$new"
+		install_merged_file "$old" "$new"
 		;;
 	4)
-		rm_extra_file $old $new
+		rm_extra_file "$old" "$new"
 		;;
 	5)
 		echo "*** skipping ..."
 		;;
+	6)
+		echo "*** bye ..."
+		exit 1
+		;;
 	*)
 		echo "!!! Please pick a valid choice next time !!!"
 		menu1
@@ -83,10 +87,11 @@
 echo "2) Keep existing $old"
 echo "3) Merge the two files"
 echo "4) Show the difference between the two files again"
-echo "  OR"
 echo "5) Skip (keep all files)"
+echo "  OR"
+echo "6) Quit etc-update"
 echo
-echo -n "Type (1, 2, 3, 4 or 5): "									
+echo -n "Type (1, 2, 3, 4, 5 or 6): "									
 }
 
 #
@@ -110,9 +115,9 @@
 # Install merged file
 #
 install_merged_file() {
-	old=$1
-	merged=$1.merged
-	new=$2
+	old="$1"
+	merged="$1.merged"
+	new="$2"
 
 	menu2
 	# read and echo 1 char from stdin
@@ -121,21 +126,21 @@
 	case $input in
 	1)
 		echo "*** upgrading to $merged ..."
-		chmod --reference=$old $merged
-		mv $mv_opts $merged $old
-		rm $rm_opts $new
+		chmod --reference="$old" "$merged"
+		mv "$mv_opts" "$merged" "$old"
+		rm "$rm_opts" "$new"
 		;;
 	2)
-		show_diff $old $merged
-		install_merged_file $old $new
+		show_diff "$old" "$merged"
+		install_merged_file "$old" "$new"
 		;;
 	3)
-		merge_files $old $new
-		install_merged_file $old $new
+		merge_files "$old" "$new"
+		install_merged_file "$old" "$new"
 		;;
 	4)
 		echo "*** keeping original file ..."
-		rm $rm_opts $merged $new
+		rm "$rm_opts" "$merged" "$new"
 		;;
 	5)
 		echo "*** skipping ..."
@@ -143,11 +148,11 @@
 	6)
 		echo "*** going back to previous menu ..."
 		echo
-		if [ -e $merged ]; then
+		if [ -e "$merged" ]; then
 			echo "*** an (old?) merged file exists. It will be removed ..."
-			rm $rm_opts $merged
+			rm "$rm_opts" "$merged"
 		fi
-		rm_extra_file $old $new
+		rm_extra_file "$old" "$new"
 		;;
 	*)
 		echo "!!! Please pick a valid choice next time !!!"
@@ -163,14 +168,14 @@
 	echo
 	if [ "`echo $pager`" ]; then
 		(echo "*** showing difference between $1 and $2" && echo && \
-		`echo $diff_command | sed \
-		-e s@%file1@$1@g \
-		-e s@%file2@$2@g` ) | $pager
+		eval `echo $diff_command | sed \
+		-e "s@%file1@\"$1\"@g" \
+		-e "s@%file2@\"$2\"@g"` ) | $pager
 	else
 		echo "*** showing difference between $1 and $2" && echo
-		`echo $diff_command | sed \
-		-e s@%file1@$1@g \
-		-e s@%file2@$2@g`
+		eval `echo $diff_command | sed \
+		-e "s@%file1@\"$1\"@g" \
+		-e "s@%file2@\"$2\"@g"`
 	fi
 }
 
@@ -178,9 +183,9 @@
 # Merge two files
 #
 merge_files() {
-	old=$1
-	merged=$1.merged
-	new=$2
+	old="$1"
+	merged="$1.merged"
+	new="$2"
 
 	echo
 	echo "*** merging $old with $new ..."
@@ -189,30 +194,37 @@
 		echo
 		echo "*** an (old?) merged file already exists. It will be removed ..."
 		echo
-		rm $rm_opts $merged
+		rm "$rm_opts" "$merged"
 	fi
 
 	# echo the help message for the merge command if it's defined
 	if [ "`echo $merge_helpmessage`" ]; then
 		echo
-		echo $merge_helpmessage
+		echo "$merge_helpmessage"
 	fi
 
 	# execute the merge command
 	echo
-	`echo $merge_command |sed \
-	-e s@%merged@$merged@g \
-	-e s@%orig@$old@g \
-	-e s@%new@$new@g`
+	eval `echo $merge_command |sed \
+	-e "s@%merged@\"$merged\"@g" \
+	-e "s@%orig@\"$old\"@g" \
+	-e "s@%new@\"$new\"@g"`
 }
 
 #
 # Run the script
 #
-for new_full_path in $cfg_files; do
-	file=${new_full_path##*/}
-	old_full_path=${new_full_path%/*}/${file%.rpmnew}
+find $configdirs -iname '*.rpmnew' > /var/run/etc-update.$$
+trap "rm -f /var/run/etc-update.$$" KILL INT QUIT EXIT
+while read -u 10 new_full_path; do
+	file="${new_full_path##*/}"
+	old_full_path="${new_full_path%/*}/${file%.rpmnew}"
 
-	rm_extra_file ${old_full_path} ${new_full_path}
-done
+	if cmp "${old_full_path}" "${new_full_path}"; then
+		mv -f "${new_full_path}" "${old_full_path}"
+	else
+ 		rm_extra_file "${old_full_path}" "${new_full_path}"
+	fi
+done 10< /var/run/etc-update.$$
+rm -f /var/run/etc-update.$$
 echo "*** script finished ..."