summaryrefslogtreecommitdiff
path: root/lali.c
diff options
context:
space:
mode:
authorDaniel Cerqueira <dan.git@lispclub.com>2026-08-23 13:44:47 +0100
committerDaniel Cerqueira <dan.git@lispclub.com>2026-08-24 15:46:13 +0100
commit956ea5c79884e4adde9076fd2251b77af5d27c5c (patch)
tree14c82a83b407f9202a9e80ae01cf1b95c6b7b0b5 /lali.c
parent10795731901a9c0fc5fb82f037e18def9bb2011d (diff)
signal and new exit codesv.0.4.0
- redo numbers of previous exit codes - handle SIGINT and SIGTERM signals - ignore SIGHUP signal
Diffstat (limited to 'lali.c')
-rw-r--r--lali.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/lali.c b/lali.c
index 2b67f2a..b480c55 100644
--- a/lali.c
+++ b/lali.c
@@ -34,6 +34,7 @@
#include "liblali.h"
+#include <signal.h>
#include <getopt.h>
#include <readline/readline.h>
@@ -42,10 +43,13 @@
#define YEARS "2025, 2026"
#define SOURCE_URL "https://gitlab.com/alexandre1985/lali/"
-#define EXIT_FAIL_UNKNOWN_ARGOPT 2
-#define EXIT_FAIL_OPEN_FILE 3
-#define EXIT_FAIL_REPL_WITH_PIPING 4
-#define EXIT_FAIL_LANG 5
+#define EXIT_FAIL_UNKNOWN_ARGOPT -1
+#define EXIT_FAIL_OPEN_FILE -2
+#define EXIT_FAIL_REPL_WITH_PIPING -3
+#define EXIT_FAIL_LANG -4
+
+#define EXIT_SIGINT 2
+#define EXIT_SIGTERM 3
// MAIN ///////////////////////////////////////////////////////////////////////
@@ -105,8 +109,21 @@ void runREPL(int infd, Object **env, GC_PARAM) {
free(replLine);
}
+void sig_int_handler(int sig) {
+ exit(EXIT_SIGINT);
+}
+
+void sig_term_handler(int sig) {
+ exit(EXIT_SIGTERM);
+}
+
int main(int argc, char *argv[]) {
+ /// Signals
+ signal(SIGINT, sig_int_handler);
+ signal(SIGTERM, sig_term_handler);
+ signal(SIGHUP, SIG_IGN); // ignore this signal
+
/// Options processing
int opt_repl = 0; // false