From 956ea5c79884e4adde9076fd2251b77af5d27c5c Mon Sep 17 00:00:00 2001 From: Daniel Cerqueira Date: Sun, 23 Aug 2026 13:44:47 +0100 Subject: signal and new exit codes - redo numbers of previous exit codes - handle SIGINT and SIGTERM signals - ignore SIGHUP signal --- lali.c | 25 +++++++++++++++++++++---- 1 file 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 #include #include @@ -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 -- cgit