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? Thanks. Aditya
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 Wolfgang
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
On Sat, Oct 30, 2010 at 07:27:02PM -0400, Aditya Mahajan wrote:
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}
Well, the first thought that came in my mind is using os.exit(1): \def\ERROR{\directlua{os.exit(1)}} But since this is pretty obvious, I'm sure I'm missing something. Regards, Khaled -- Khaled Hosny Arabic localiser and member of Arabeyes.org team Free font developer
On Sun, 31 Oct 2010, Khaled Hosny wrote:
On Sat, Oct 30, 2010 at 07:27:02PM -0400, Aditya Mahajan wrote:
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}
Well, the first thought that came in my mind is using os.exit(1):
\def\ERROR{\directlua{os.exit(1)}}
But since this is pretty obvious, I'm sure I'm missing something.
I want the code to also work with MkII, so I did not even think of a lua solution :) Aditya
On Sun, Oct 31, 2010 at 01:08:40AM -0400, Aditya Mahajan wrote:
On Sun, 31 Oct 2010, Khaled Hosny wrote:
On Sat, Oct 30, 2010 at 07:27:02PM -0400, Aditya Mahajan wrote:
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}
Well, the first thought that came in my mind is using os.exit(1):
\def\ERROR{\directlua{os.exit(1)}}
But since this is pretty obvious, I'm sure I'm missing something.
I want the code to also work with MkII, so I did not even think of a lua solution :)
For some reason I was assuming the external filter module is MkIV only thing, now I wounder from where I got that impression. Regards, Khaled -- Khaled Hosny Arabic localiser and member of Arabeyes.org team Free font developer
On Sun, 31 Oct 2010, Khaled Hosny wrote:
On Sun, Oct 31, 2010 at 01:08:40AM -0400, Aditya Mahajan wrote:
On Sun, 31 Oct 2010, Khaled Hosny wrote:
On Sat, Oct 30, 2010 at 07:27:02PM -0400, Aditya Mahajan wrote:
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}
Well, the first thought that came in my mind is using os.exit(1):
\def\ERROR{\directlua{os.exit(1)}}
But since this is pretty obvious, I'm sure I'm missing something.
I want the code to also work with MkII, so I did not even think of a lua solution :)
For some reason I was assuming the external filter module is MkIV only thing, now I wounder from where I got that impression.
I had some functionality (running content through webservers) that was MkIV only, but I decided to remove that. Maybe that is what give you the MkIV only imression. Aditya
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 \scrollmode\errmessage{...} \stoptext Wolfgang
participants (3)
-
Aditya Mahajan
-
Khaled Hosny
-
Wolfgang Schuster