[luatex] shell-escape broken?

David Carlisle d.p.carlisle at gmail.com
Wed Jun 8 08:45:22 CEST 2016


On 8 June 2016 at 06:56, Norbert Preining <preining at logic.at> wrote:

> Hi David,
>
> > The first line is
> >
> > \ifx\ProvidesPackage\undefined
>
> That does not suffice:
> [~] pdftex
> This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded
> format=pdftex)
>  restricted \write18 enabled.
> **\relax
> entering extended mode
>
> *\input shellesc.sty
> (/home/norbert/tl/2016/texmf-dist/tex/latex/tools/shellesc.sty
> ! Undefined control sequence.
> l.67   \PackageInfo
>                       {shellesc}{Restricted shell escape ensabled}
> ?
>
>
> All the best
>
> Norbert
>


yes sorry, that's why it was there, but as Joseph also commented, it isn't
enough.
I've fixed that in the latex svn yesterday after your message.

https://latex-project.org/svnroot/latex2e-public/trunk/required/tools/

so you could now go

\catcode`@=11 \input shellesc.sty

in (extended) plain tex (needs \protected still as I haven't guarded that)

I could guard guard \protected and the catcode of @ but really I think it
isn't worth it, the actual code needed is one ifx and a couple of def so
adding too much code to guard latex constructs for plain tex seems out of
proportion.

overloading \write to check for 18 is just a short term compatibility hack
to ease the changeover, and I plan to add an option to shellesc not to do
it, so the real code you need is just a switch between write18 and
os.execute so something like

\ifx\lastsavedimageresourcepages\undefined
  \protected\def\ShellEscape{\immediate\write18 }
\else
  \protected\def\ShellEscape#1{%
    \directlua{os.execute("\luaescapestring{#1}")}}
\fi

and defining that in plain is (even with the changes I just made) is
simpler than loading shellesc.sty

David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/luatex/attachments/20160608/9de81eba/attachment.html>


More information about the luatex mailing list