Current File : //usr/share/texlive/texmf-dist/tex/latex/tools/shellesc.sty |
%%
%% This is file `shellesc.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% shellesc.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
%% --------------------------------------------------------------------------
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This file may only be distributed together with a copy of the LaTeX
%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
%% without such generated files.
%%
%% The list of all files belonging to the LaTeX `Tools Bundle' is
%% given in the file `manifest.txt'.
%%
%% Source File: shellesc.dtx
%% Copyright (C) 2015-2020
%%
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file may be distributed under the terms of the LPPL.
%% See README for details.
\ifx\ProvidesPackage\undefined
\def\next#1#2[#3]{\wlog{#2 #3}}
\ifx\PackageInfo\undefined\def\PackageInfo#1#2{\wlog{#1: #2}}\fi
\ifx\PackageWarning\undefined\def\PackageWarning#1#2{\wlog{#1: #2}}\fi
\expandafter\next\fi
\ProvidesPackage{shellesc}
[2019/11/08 v1.0c unified shell escape interface for LaTeX]
\chardef\shellesc@quotecat\catcode`\"
\chardef\shellesc@underscorecat\catcode`\_
\@makeother\"
\@makeother\_
\chardef\ShellEscapeStatus
\ifx\pdfshellescape\@undefined
\ifx\shellescape\@undefined
\ifx\directlua\@undefined
\z@
\else
\directlua{%
tex.sprint((status.shell_escape or os.execute()) .. " ")}
\fi
\else
\shellescape
\fi
\else
\pdfshellescape
\fi
\ifcase\ShellEscapeStatus
\PackageWarning{shellesc}{Shell escape disabled}
\or
\PackageInfo {shellesc}{Unrestricted shell escape enabled}
\else
\PackageInfo {shellesc}{Restricted shell escape enabled}
\fi
\ifx\lastsavedimageresourcepages\@undefined
\protected\def\ShellEscape{\immediate\write18 }
\else
\protected\def\ShellEscape{\directlua\ShellEscape@Lua}
\fi
\ifx\lastsavedimageresourcepages\@undefined
\protected\def\DelayedShellEscape{\relax\write18 }
\else
\protected\def\DelayedShellEscape{\latelua\ShellEscape@Lua}
\fi
\ifx\directlua\@undefined\else
\protected\def\ShellEscape@Lua#1{{%
local status, msg = os.execute("\luaescapestring{#1}")%
if status == nil then
texio.write_nl("log",%
"runsystem(" .. "\luaescapestring{#1}"%
.. ")...(" .. msg .. ")\string\n")
elseif status == 0 then
texio.write_nl("log",%
"runsystem(" .. "\luaescapestring{#1}"%
.. ")...executed\string\n")
else
texio.write_nl("log",%
"runsystem(" .. "\luaescapestring{#1}"%
.. ")...failed " .. (msg or "") .. "\string\n")
end
}}
\fi
\ifx\lastsavedimageresourcepages\@undefined
\catcode`\"\shellesc@quotecat
\catcode`\_\shellesc@underscorecat
\expandafter\endinput
\fi
\directlua{%
shellesc = shellesc or {}
local function write_or_execute()
local s = token.scan_int()
if (s==18) then
tex.sprint(\the\numexpr\catcodetable@atletter\relax,
"\string\\ShellEscape ")
else
tex.sprint(\the\numexpr\catcodetable@atletter\relax,
"\string\\shellesc@write " .. s)
end
end
shellesc.write_or_execute=write_or_execute
}
\let\shellesc@write\write
\protected\def\write{\directlua{shellesc.write_or_execute()}}
\catcode`\"\shellesc@quotecat
\catcode`\_\shellesc@underscorecat
\endinput
%%
%% End of file `shellesc.sty'.