This fixes two issues:
 
https://bugzilla.redhat.com/show_bug.cgi?id=1592433
This is a bug in fix-info-dir --delete
(Hunk 3)
 
https://bugzilla.redhat.com/show_bug.cgi?id=1614162
This is a weird infinite loop that happens when fix-info-dir is run with stderr
redirected to /dev/null while /dev/null doesn't exist (or isn't a device)
(Hunks 1 and 2)
 
diff --git a/contrib/fix-info-dir b/contrib/fix-info-dir
index 4439ada..9240060 100755
--- a/contrib/fix-info-dir
+++ b/contrib/fix-info-dir
@@ -124,6 +124,7 @@ if test "$CREATE_NODE"; then
 		fi
 		shift
 	else
+		SKIP_READ=yes
 		SKELETON=/dev/null
 
 	fi
@@ -188,7 +189,7 @@ DIR_FILE_END_OF_FILE
 
 	# Read one line from the file.  This is so that we can echo lines with
 	# whitespace and quoted characters in them.
-	while read fileline; do
+	while test -z "$SKIP_READ" && read fileline; do
 		# flag fancy features
 		if test ! -z "$echoline"; then        # echo line
 			echo "$fileline"
@@ -294,7 +295,7 @@ else
 	DONE_MSG="total invalid menu item(s) were removed from `pwd`/$DIR_FILE"
 	for Info_Name in `comm -23 $TMP_FILE1 $TMP_FILE2`; do
 		Changed="y"
-		if install-info --remove $Info_Name $DIR_FILE; then
+		if install-info --remove --remove-exactly $Info_Name $DIR_FILE; then
 			Total=`expr "$Total" + "1"`
 		fi
 	done
