On Thu, 4 Jun 2026 at 12:50, David Carlisle <[email protected]> wrote:
> a simpler non-latex example
>
> wr.tex
>
> %%%
> aaaa
>
> \newwrite\wfile
>
> \immediate\openout\wfile=\jobname.aux
>
> \immediate\write\wfile{boo}
>
> bbb
>
> \bye
> %%
>
> if you run this once so a .aux file is written, then
>
> chmod a-w wr.aux
>
> to remove write permission, then using pdftex and hitting return on error
> produces:
>
> $ pdftex wr
> This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded
> format=pdftex)
> restricted \write18 enabled.
> entering extended mode
> (./wr.tex
> ! I can't write on file `wr.aux'.
> l.5 \immediate\openout\wfile=\jobname.aux
>
> (Press Enter to retry, or Control-D to exit; default file extension is
> `.tex')
> Please type another output file name:
> ! I can't write on file `wr.aux'.
> l.5 \immediate\openout\wfile=\jobname.aux
>
> (Press Enter to retry, or Control-D to exit; default file extension is
> `.tex')
> Please type another output file name:
> ! I can't write on file `wr.aux'.
> l.5 \immediate\openout\wfile=\jobname.aux
>
> (Press Enter to retry, or Control-D to exit; default file extension is
> `.tex')
> Please type another output file name:
> ! I can't write on file `wr.aux'.
> l.5 \immediate\openout\wfile=\jobname.aux
>
> (Press Enter to retry, or Control-D to exit; default file extension is
> `.tex')
> Please type another output file name:
>
> and it loops until you give it a file that it can write to.
>
> with luatex you get
>
> $ luatex wr
> This is LuaTeX, Version 1.24.0 (TeX Live 2026)
> restricted system commands enabled.
> (./wr.tex
> ! I can't write on file `wr.aux'.
> l.5 \immediate\openout\wfile=\jobname.aux
>
> Please type another output file name:
>
> [1{/usr/local/texlive/2026/texmf-var/fonts/map/pdftex/updmap/pdftex.map}])</usr
> /local/texlive/2026/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
> Output written on wr.pdf (1 page, 9886 bytes).
> Transcript written on wr.log.
>
> and the source file is over-written.
>
Yes, but the point is that the code says it explicitly:
source/texk/web2c/luatexdir/tex/filename.c:
309│ end_name();
310│ if (cur_ext == get_nullstr())
311│ cur_ext = maketexstring(e);
312│ if (str_length(cur_name) == 0)
313│ cur_name = saved_cur_name;
314│ return pack_file_name(cur_name, cur_area, cur_ext);
315│ }
--
luigi