From 0aa515730f73092e402bb65e6258e772fd2ad7bd Mon Sep 17 00:00:00 2001
From: McKay Marston <smazga@greymanlabs.com>
Date: Fri, 3 Feb 2023 17:19:46 -0800
Subject: [PATCH] Fix exit call on plan9/9front * make sure exits is passed a
 nil on success * make sure main exits with a proper exits call

---
 main.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/main.c b/main.c
index 39109932..9ee0aff6 100644
--- a/main.c
+++ b/main.c
@@ -25,10 +25,11 @@
 
 #ifdef PLAN9
 #define exit_failure() exits("ERROR")
+#define exit_success() exits(nil)
 #else
 #define exit_failure() exit(70)
-#endif
 #define exit_success() exit(0)
+#endif
 
 #if SEXP_USE_MAIN_HELP
 void sexp_usage(int err) {
@@ -682,7 +683,12 @@ int main (int argc, char **argv) {
   sexp_scheme_init();
   res = run_main(argc, argv);
   if (sexp_fixnump(res)) {
-    return sexp_unbox_fixnum(res);
+    int code = sexp_unbox_fixnum(res);
+    if (code == 0) {
+      exit_success();
+    } else {
+      exit_failure();
+    }
   } else if (res == SEXP_FALSE) {
     exit_failure();
   } else {