diff options
| author | Daniel Cerqueira <dan.git@lispclub.com> | 2026-08-23 13:44:47 +0100 |
|---|---|---|
| committer | Daniel Cerqueira <dan.git@lispclub.com> | 2026-08-24 15:46:13 +0100 |
| commit | 956ea5c79884e4adde9076fd2251b77af5d27c5c (patch) | |
| tree | 14c82a83b407f9202a9e80ae01cf1b95c6b7b0b5 | |
| parent | 10795731901a9c0fc5fb82f037e18def9bb2011d (diff) | |
signal and new exit codesv.0.4.0
- redo numbers of previous exit codes
- handle SIGINT and SIGTERM signals
- ignore SIGHUP signal
| -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 |
