> 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.
