summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpgen <p.gen.progs@gmail.com>2018-07-20 22:01:51 +0200
committerpgen <p.gen.progs@gmail.com>2018-07-21 00:28:10 +0200
commit8da7653da8336c4d169a8b67562e736326316c1a (patch)
treeed0c16233db90f3cd86c632981701ffd84b90432
parent5c7577af5072f4b911796e0ed9984804cda772dd (diff)
Improve signals handling
-rw-r--r--smenu.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/smenu.c b/smenu.c
index 11d15bb..5c232cc 100644
--- a/smenu.c
+++ b/smenu.c
@@ -5856,9 +5856,19 @@ sig_handler(int s)
{
/* Standard termination signals */
/* """""""""""""""""""""""""""" */
+ case SIGSEGV:
+ fputs("SIGSEGV received!\n", stderr);
+ tputs(TPARM1(carriage_return), 1, outch);
+ tputs(TPARM1(cursor_visible), 1, outch);
+ restore_term(fileno(stdin));
+
+ exit(EXIT_FAILURE);
+
case SIGTERM:
case SIGHUP:
fputs("Interrupted!\n", stderr);
+ tputs(TPARM1(carriage_return), 1, outch);
+ tputs(TPARM1(cursor_visible), 1, outch);
restore_term(fileno(stdin));
exit(EXIT_FAILURE);
@@ -7555,6 +7565,7 @@ main(int argc, char * argv[])
sigaction(SIGALRM, &sa, NULL);
sigaction(SIGTERM, &sa, NULL);
sigaction(SIGHUP, &sa, NULL);
+ sigaction(SIGSEGV, &sa, NULL);
term.color_method = 1; /* we default to setaf/setbf to set colors */
term.curs_line = term.curs_column = 0;