* tp/texi2any.pl (output|out|o=s): If the filename argument is specifically '-', ignore a possible ./- subdirectory. This prevents programs that generate info in a pipeline from being confused in weird working directories. --- Morning,
I was doing some math in Octave last night, and I typed in "help log", only to be met with a strange error: octave:2> help log makeinfo: could not open -/octave-help-Q3PsCd.txt for writing: Permission denied makeinfo: could not open -/octave-help-Q3PsCd.txt for writing: Permission denied warning: help: Texinfo formatting filter exited abnormally; raw Texinfo source of help text follows... 'log' is a built-in function from the file libinterp/corefcn/mappers.cc This puzzled me for a bit, so I straced the makeinfo invocations Octave was making and found that makeinfo stats - in my home directory. I was quite confused by having a ~/- owned by root, but, it was there, apparently. The issue this introduced could be easily replicated as follows: ~$ mkdir --mode=000 ./- ~$ makeinfo --output=- --plaintext /dev/null makeinfo: could not open -/null.txt for writing: Permission denied It is common practice to unconditionally interpret "-" as stdin despite an existing file, however, and this patch fixes that behavior up, and fixes Octave: ~$ mkdir --mode=000 ./- ~$ ./gnu/texinfo/pre-inst-env octave --silent octave:1> help log 'log' is a built-in function from the file libinterp/corefcn/mappers.cc -- log (X) Compute the natural logarithm, ‘ln (X)’, for each element of X. To compute the matrix logarithm, see Linear Algebra. See also: exp, log1p, log2, log10, logspace. OK for master? Thanks in advance, have a lovely day. ChangeLog | 8 ++++++++ tp/texi2any.pl | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 04d3020001..b3f69b6eec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2023-03-08 Arsen Arsenović <ar...@aarsen.me> + + texi2any: Don't switch to subdir mode if '-' exists + * tp/texi2any.pl (output|out|o=s): If the filename argument is + specifically '-', ignore a possible ./- subdirectory. This + prevents programs that generate info in a pipeline from being + confused in weird working directories. + 2023-03-07 Patrice Dumas <pertu...@free.fr> * tp/Texinfo/Convert/HTML.pm (output_internal_links): determine if diff --git a/tp/texi2any.pl b/tp/texi2any.pl index 8d7af9554d..aad7ba4c3f 100755 --- a/tp/texi2any.pl +++ b/tp/texi2any.pl @@ -1009,7 +1009,7 @@ There is NO WARRANTY, to the extent permitted by law.\n"), "2022"); $format = 'plaintext' if (!$_[1] and $format eq 'info'); }, 'output|out|o=s' => sub { my $var = 'OUTFILE'; - if ($_[1] =~ m:/$: or -d $_[1]) { + if ($_[1] ne '-' and ($_[1] =~ m:/$: or -d $_[1])) { set_from_cmdline($var, undef); $var = 'SUBDIR'; } -- 2.39.2