On Fri, Jul 11, 2003 at 01:08:47PM +0200, Martin Schroeder wrote:
On 2003-07-11 01:37:20 +0200, Heiko Oberdiek wrote:
Patch ShellEscapeIfeof18
Sounds good.
A short discussion about the two methods \shellescape vs. \ifeof18:
* \ifeof18: the temptation for enabling the \write18 feature at
macro level, because this interface only provides asking/reading
and not writing. For security reasons the \write18 feature
must not be enabled at macro level.
* The implementation is easier and more portable,
because there is no need for the nasty magic *_code number of
a new primitive that would also affect change files of other
TeX enginges.
* \ifeof18 avoids a new primitive. The "namespace" problem, however,
could be solved by funny names, eg.: "\.web2c.shellescape".
* But there is also a disadvantage of the \ifeof18 method:
TeX generates a error message, if \ifeof18 is not supported.
Unhappily TeX does not provide an exception mechanism, so this
error cannot be catched.
For "tex" and "etex" I see no way to avoid this without a new
primitive that can easily checked for existence. The primitive
can be either a command that indicates the presence of the
feature or returns the version number of web2c.
For "pdf(e)tex" this is not a problem, because here
\pdfversion and \pdfrevision can be asked. So packages such
as pdftricks, pdftex.def, ... will be happy.
Yours sincerely
Heiko