On Wed, Mar 08, 2023 at 11:01:33AM +0100, Arsen Arsenović wrote: > * 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.
Looks good to me. In the ChangeLog, "ignore a possible ./- subdirectory." does not seem so clear to me. I would prefer something like "do not consider that it can be a directory, even if it exists as a directory" or something like that, to be clearer that it is not ignored, but considered as a file. > --- > 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 > >