texinfo/texinfo-6.5-fix-info-dir.patch
Jason Tibbitts 3ac1f4efbe Fix potential infloop in fix-info-dir.
This modifies the existing patch to fix-info-dir to also fix an odd
infinite loop that can occur when /dev/null is not a device and  stderr
is redirected there.  https://bugzilla.redhat.com/show_bug.cgi?id=1614162
2018-10-04 15:17:45 -05:00

42 lines
1.3 KiB
Diff

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