summaryrefslogtreecommitdiff
path: root/tex/context/base/core-uti.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/core-uti.tex')
-rw-r--r--tex/context/base/core-uti.tex44
1 files changed, 37 insertions, 7 deletions
diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex
index 3988e1ff9..25e05b560 100644
--- a/tex/context/base/core-uti.tex
+++ b/tex/context/base/core-uti.tex
@@ -46,15 +46,33 @@
\newif\ifutilitydone
\def\@@utilityerrormessage%
- {\showmessage{\m!systems}{8}{}%
- \global\let\@@utilityerrormessage=\relax}
+ {\showmessage\m!systems{8}{}%
+ \global\let\@@utilityerrormessage\relax}
\def\thisisutilityversion#1%
- {\doifnot{\utilityversion}{#1}%
+ {\doifelse\utilityversion{#1}%
+ {\checksectionseparator}
{\@@utilityerrormessage
\resetutilities
\endinput}}
+\def\checksectionseparator % catches backward compatibility conflict
+ {\doifnot\sectionseparator:\endinput}
+
+\def\thisissectionseparator#1%
+ {\bgroup
+ \global\let\checksectionseparator\relax
+ \convertcommand \sectionseparator\to\asciiA
+ \convertargument #1\to\asciiB
+ \ifx\asciiA\asciiB
+ \egroup
+ \else
+ \egroup
+ % todo \@@utilityerrormessage
+ \resetutilities
+ \endinput
+ \fi}
+
\def\writeutility%
{\write\uti}
@@ -67,9 +85,14 @@
\def\immediatewriteutilitycommand#1%
{\immediate\write\uti{c \string#1}}
-\def\openutilities%
+%\def\openutilities%
+% {\immediate\openout\uti=\jobname.\f!inputextension
+% \immediatewriteutilitycommand{\thisisutilityversion{\utilityversion}}}
+
+\def\openutilities
{\immediate\openout\uti=\jobname.\f!inputextension
- \immediatewriteutilitycommand{\thisisutilityversion{\utilityversion}}}
+ \immediatewriteutilitycommand{\thisissectionseparator{\sectionseparator}}%
+ \immediatewriteutilitycommand{\thisisutilityversion {\utilityversion}}}
\def\closeutilities%
{%\savenofsubpages
@@ -80,6 +103,10 @@
\let\immediatewriteutilitycommand\gobbleoneargument
\let\immediatewriteutility\gobbleoneargument}
+\def\reopenutilities
+ {\immediate\closeout\uti
+ \openutilities}
+
\def\abortutilitygeneration%
{\immediatewriteutilitycommand{\utilitygenerationaborted}%
\immediatewriteutility{q {quit}}}
@@ -328,11 +355,14 @@
\def\doloadtwopassdata#1%
{\doifundefined{#1:\s!list}
- {\global\letvalue{#1:\s!list}\empty
+ {\startnointerference
+ \global\letvalue{#1:\s!list}\empty
+ \protectlabels
\doutilities{#1\s!pass}{\jobname}{}{}{}%
\ifx\twopassdata\empty\else
\appendtwopasselement{#1}{0}\twopassdata
- \fi}}
+ \fi
+ \stopnointerference}}
\def\loadtwopassdata%
{\ifx\alltwopasslists\empty\else