summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index b586f45..86597cd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,8 +29,11 @@
#include <stdlib.h>
#include <stdio.h>
#include <sysexits.h>
+#include <sys/ioctl.h>
#include <unistd.h>
+#include <linux/kd.h>
+
#include "ply-answer.h"
#include "ply-boot-server.h"
#include "ply-boot-splash.h"
@@ -385,6 +388,18 @@ initialize_environment (state_t *state)
return true;
}
+static void
+on_crash (int signal)
+{
+ int fd;
+
+ fd = open ("/dev/tty7", O_RDWR | O_NOCTTY);
+
+ ioctl (fd, KDSETMODE, KD_TEXT);
+
+ close (fd);
+}
+
int
main (int argc,
char **argv)
@@ -423,6 +438,9 @@ main (int argc,
return EX_UNAVAILABLE;
}
+ signal (SIGABRT, on_crash);
+ signal (SIGSEGV, on_crash);
+
state.loop = ply_event_loop_new ();
/* before do anything we need to make sure we have a working