% tex-ini-files 20223-11-17: luatexconfig.tex

% Load shared (PDF) settings in LuaTeX

\begingroup
 \catcode`\{=1 %
 \catcode`\}=2 %
 \catcode`\#=6 %
 % Settings that were primitives
 % accessed in newer LuaTeX releases via \pdfvariable
 \def\list{%
     {compresslevel}%
     {decimaldigits}%
     {horigin}%
     {minorversion}%
     {objcompresslevel}%
     {pkresolution}%
     {vorigin}%
 }%
 \def\do#1{%
   \ifx\relax#1\else
     \directlua{tex.enableprimitives("", {"pdf#1"})}%
     \expandafter\do
   \fi
 }%
 % Enable all \pdf... primitives in one go
 \expandafter\do\list{output}{pageheight}{pagewidth}{variable}\relax
 % Other required primitives that are not named \pdf...
 \directlua{tex.enableprimitives("",
   {"pageheight", "pagewidth", "outputmode"})}%
 % Newer LuaTeX releases don't have \pdfoutput, etc.:
 % emulate names where appropriate
 \ifx\pdfoutput\undefined
   \global\let\pdfoutput\outputmode
   \global\let\pdfpageheight\pageheight
   \global\let\pdfpagewidth\pagewidth
   \def\do#1{%
     \ifx\relax#1\else
       \expandafter\xdef\csname pdf#1\endcsname{\pdfvariable #1}%
       \expandafter\do
     \fi
   }%
   \expandafter\do\list\relax
 \fi
 % The file pdftexconfig.tex contains only <primitive> = <value> lines
 % so can now be read using the (emulated) primitives
 % This needs to be global so set \globaldefs for this step
 \globaldefs=1 %
 \input{pdftexconfig}%
 \globaldefs=0 %
 % Pick up on a request for DVI mode and apply it whilst \pdfoutput is
 % still defined
 \ifx\dvimode\relax
   \global\pdfoutput=0 %
 \fi
 \global\let\dvimode\undefined
 % Clean up all of the globally-allocated names
 \def\do#1{%
   \ifx\relax#1\else
     \global\expandafter\let\csname pdf#1\endcsname\undefined
     \expandafter\do
   \fi
 }%
 \expandafter\do\list{output}{pageheight}{pagewidth}{variable}\relax
 \global\let\outputmode\undefined
 \global\let\pageheight\undefined
 \global\let\pagewidth\undefined
 \global\let\dvimode\undefined
\endgroup