Made command-line errors flush stdout and stderr

This commit is contained in:
Graham Nelson 2021-03-01 19:26:25 +00:00
parent 6360a9d97e
commit 3fd3a1d19d
5 changed files with 7 additions and 3 deletions

View file

@ -1,6 +1,6 @@
# Inweb 7
v7-alpha.1+1A70 'Escape to Danger' (26 February 2021)
v7-alpha.1+1A71 'Escape to Danger' (1 March 2021)
## About Inweb

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 26 February 2021
Build Number: 1A70
Build Date: 1 March 2021
Build Number: 1A71

View file

@ -74,9 +74,11 @@ issued. If this returns <span class="extract"><span class="extract-syntax">FALSE
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Errors::issue</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Errors::issue</span></span>:<br/><a href="3-em.html#SP2">&#167;2</a>, <a href="3-em.html#SP6">&#167;6</a>, <a href="3-em.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">fatality</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">errors_handler</span><span class="plain-syntax">) </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = (*</span><span class="identifier-syntax">errors_handler</span><span class="plain-syntax">)(</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="identifier-syntax">fatality</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="constant-syntax">STDERR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fatality</span><span class="plain-syntax">) </span><a href="3-em.html#SP4" class="function-link"><span class="function-syntax">Errors::die</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax">}</span>
</pre>

Binary file not shown.

View file

@ -24,9 +24,11 @@ int Errors::have_occurred(void) {
}
void Errors::issue(text_stream *message, int fatality) {
STREAM_FLUSH(STDOUT);
int rv = TRUE;
if (errors_handler) rv = (*errors_handler)(message, fatality);
if (rv) WRITE_TO(STDERR, "%S", message);
STREAM_FLUSH(STDERR);
if (fatality) Errors::die(); else problem_count++;
}