]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
return to text mode on crash
authorRay Strode <rstrode@redhat.com>
Thu, 19 Jun 2008 14:53:08 +0000 (10:53 -0400)
committerRay Strode <rstrode@redhat.com>
Thu, 19 Jun 2008 14:53:08 +0000 (10:53 -0400)
src/main.c

index b586f45c054415e9e96407093ce8ae098ccf3259..86597cd608c619d447f5b9f59c37dc3e3946f21d 100644 (file)
 #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