On Sun, 31 Oct 2010, Wolfgang Schuster wrote:
Am 31.10.2010 um 01:27 schrieb Aditya Mahajan:
Hi,
I want to write a macro that checks for some settings and if the settings are wrong stop the current compilation and terminate with an error message. Right now I have
\def\ERROR {\writeline \showmessage\??externalfilter??{forbidden}\getexternalfilterdirectory \batchmode \normalend}
This prints the error message on the terminal and exits. However the exit status (the value of $?) is 0, if the tui file has changed the document is compiled a second time anyways.
How can I force context (the macro package) to exit with a status of 1 so that context (the program) does not attempt a second compilation?
\starttext
one
\scrollmode\undefined\forcequitjob{bye}
two
\stoptext
\forcequitjob is defined in the same manner as my definition \def\forcequitjob#1% {\writestatus\m!systems{forcing quit: #1}% \batchmode \dorecurse\textlevel{\stoptext} \normalend} and suffers from the same problem. It does not send the program's error code to 1. After compiling \starttext \forcequitjob{bye} \stoptext the output of `echo $?` is 0, so context thinks that the program compiled sucessfully. Now add \section{one} on the first line and compile again. Context does two runs of the program (because no error signal is generated at the end of the first run). I want to avoid this second run. Aditya