From 0f347162b74d945f509955b6c57e506ab800db7b Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Thu, 22 Jul 2021 19:35:53 +0000 Subject: Implement halt/0, halt/1, and understand the --no-repl flag --- builtins.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'builtins.c') diff --git a/builtins.c b/builtins.c index d1f70b9..79c71f0 100644 --- a/builtins.c +++ b/builtins.c @@ -70,6 +70,7 @@ BuiltinProto(builtinsetstreamposition); BuiltinProto(builtinop); BuiltinProto(builtincurrentops); BuiltinProto(builtinnewemptymodule); +BuiltinProto(builtinhalt); int compareterms(Term *, Term *); @@ -199,6 +200,8 @@ findbuiltin(Term *goal) return builtincurrentops; if(Match(L"$new_empty_module", 1)) return builtinnewemptymodule; + if(Match(L"$halt", 1)) + return builtinhalt; return nil; } @@ -1649,3 +1652,17 @@ builtinnewemptymodule(Term *goal, Binding **bindings, Module *module) addemptymodule(name); return 1; } + +int +builtinhalt(Term *goal, Binding **bindings, Module *module) +{ + USED(bindings); + USED(module); + vlong exitcode = goal->children->ival; + char *msg = nil; + if(exitcode != 0) + msg = smprint("pprolog exit code: %lld\n", exitcode); + + exits(msg); + return 1; +} -- cgit v1.2.3