clone 822227 -1 reassign -1 texinfo retitle -1 texinfo: texi2dvi doesn't protect the ~ character in the second pass severity -1 normal thanks
OK, I see what is going on. This is a bug in texi2dvi in the "local" build-mode. When you use --clean, this uses the "tidy" mode, where all of the aux files end up in a libext2fs.t2d directory, and in this mode texi2dvi doesn't omit protecting the filename using the catcode hack --- which in fact texi2dvi has support for, but due to a logic bug in catcode_special variable, this gets erroneously set to false the second time it is run. The net result is that the second time tex is run, the ~ character isn't properly protected in local mode. I don't mind working around the bug using texi2dvi --clean in e2fsprogs, but this is technically a bug in the texinfo package, where they need to apply the following patch: --- /usr/bin/texi2dvi 2016-03-05 09:37:09.000000000 -0500 +++ /tmp/texi2dvi 2016-04-24 20:00:49.866328157 -0400 @@ -812,7 +812,7 @@ # do the special catcode trick for ~ in filenames only for Texinfo, # not LaTeX. - if test x"$in_lang" = xtexinfo && test $catcode_special = maybe; then + if test x"$in_lang" = xtexinfo && test $catcode_special != false ; then catcode_special=true else catcode_special=false texinfo maintainers --- this bug can be reproduced by creating a pathname to a texinfo file with a ~ in it, and then running texi2dvi on it. For example: % cd /tmp % rm libext2fs.* % texi2dvi /tmp/e2fsprogs-1.43~WIP.2016.03.15/doc/libext2fs.texinfo and you will get: This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=etex) restricted \write18 enabled. entering extended mode ! I can't find file `/tmp/e2fsprogs-1.43'. <to be read again> \penalty ~->\penalty \@M \ <*> \input /tmp/e2fsprogs-1.43~ WIP.2016.03.15/doc/libext2fs.texinfo (Press Enter to retry, or Control-D to exit) Please type another input file name: The patch above will fix the failure. - Ted