diff options
author | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-22 19:35:53 +0000 |
---|---|---|
committer | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-22 19:35:53 +0000 |
commit | 0f347162b74d945f509955b6c57e506ab800db7b (patch) | |
tree | a5c5fb36dc632b5e2f387058b8170e0811001af8 /builtins.c | |
parent | 77c7fea4cee74562ad60c7ce96ca830a7ebda8b7 (diff) |
Implement halt/0, halt/1, and understand the --no-repl flag
Diffstat (limited to 'builtins.c')
-rw-r--r-- | builtins.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -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; +} |