[NTG-context] Stop with an error signal

Aditya Mahajan adityam at umich.edu
Sun Oct 31 05:44:19 CET 2010


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


More information about the ntg-context mailing list