[luatex] Strange behavior for io.popen

Br. Samuel Springuel rpspringuel at gmail.com
Tue Jun 6 21:02:42 CEST 2017


In working with the TeXLive 2017 pretest, we (the Gregorio developers) 
came across what appears to be a bug in io.popen: it's passing the 
statement `all commands are permitted` to the sh instance that it was 
creating, resulting in an `all: command not found` error.  After some 
considerable testing (see conversation here: 
https://github.com/gregorio-project/gregorio/issues/1362), we isolated 
the problem to the `--shell-escape` switch.  If the simple document 
below is compiled *without* the switch, it is behaves as expected and is 
able to retrieve the gregorio version number (gregorio is on the list of 
commands permitted without shell-escape in texmf.cnf for TeXLive 2017). 
When compiled with the switch, however, the error crops up and the 
document reads `l is nil`.


```
\documentclass{article}
\begin{document}
\directlua{
     f = io.popen('gregorio --version', 'r')
     if f then
         l = f:read('*l')
         if l then
             tex.print('got '..l)
         else
             tex.print('l is nil')
         end
     else
         tex.print('f is nil')
     end
}
\end{document}
```

Besides the original Ubuntu 16.04 system this was seen on, we've also 
been able to confirm it on Gentoo, Mac 10.10 (Yosemite), and Windows 10 
and so believe the problem to be platform independent.

-- 
✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝✝
Br. Samuel, OSB
St. Anselm’s Abbey
Washington, DC
(R. Padraic Springuel)

PAX ☧ ΧΡΙΣΤΟΣ


More information about the luatex mailing list