diff options
| -rw-r--r-- | lali.c | 25 |
1 files changed, 21 insertions, 4 deletions
@@ -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 |
