> From: Gavin Smith <[email protected]>
> Date: Wed, 23 Sep 2026 18:24:18 +0100
> 
> It seems that -o has two different modes, which would be easily confused
> by users.  The one which is the obvious mode is to give the name of the
> output file, or if the output is a directory, to give the name of the output
> directory.  The other mode is to give the directory location if
> the output is a file.  (The rules for EPUB are different again and specific
> to EPUB.)
> 
> Based on the description in the manual, the same invocation of texi2any
> can switch from one mode to another based on what files exist in the
> file system.  For example:
> 
> texi2any foo.texi -o foo.info
> 
> This should output the file foo.info.  But if foo.info already exists and
> is a directory, the output file is placed inside the directory foo.info
> instead.  If the user creates such a directory by mistake they may
> unintentionally produce their output file with texi2any in the wrong place.
> Likewise if they want to place the output file inside that directory but
> the directory doesn't exist, then the output file will not be in the user's
> intended location.

The same happens with 'cp', no?  So why do you think this logic is so
outlandish or confusing?

> I'd suggest making it an error if the output should be a single file and the
> argument of -o exists and is a directory.

That's a backward-incompatible change, so my recommendation would be
not to do it, as it runs the risk of breaking someone's setup.

> > We should make sure that this does not break the emacs manual, but I
> > think that it should not, as this use of @setfilename probably predates
> > having -o recognize directories, which, I believe, started with Texinfo
> > 5.0.  Therefore I doubt that the emacs build system also uses -o DIR
> > (except for split HTML).  I had a look at emacs sources, and I found
> > only non-split output with -o output_file being used that should be ok.
> > It is very likely that there are other places where the emacs manuals
> > are built, though, as the HTML manual linked to from the main emacs page
> > is split.
> > 
> > In the manuals tested that where downloaded in early 2025, mainly from
> > https://www.gnu.org/manual/manual.html, emacs is the only project that
> > uses leading paths in @setfilename.  I did not manage to get all the
> > manuals in thoses tests, including for GNU projects that have Texinfo
> > manuals (lilypond, maxima, gnupg, octave...) and there aren't any
> > non-GNU manual, so we still should be cautious and document any change.
> 
> If the current behaviour is broken or harmful and isn't much used, then
> it would be better to change it now to reduce the chance that somebody
> starts relying on it in the future.

I respectfully disagree.  IME, what is "broken" in your eyes might be
a useful feature in someone else's.  Backward-incompatible changes
should only be done when the current behavior is utterly broken, IMO.

Reply via email to