hush: get rid of charmap[]
[oweals/busybox.git] / libbb / get_console.c
index 9797ad6f09b3fcd55768a6d306ce62a0f6419665..74022b5437e35a174c1b885fa7f339193a3d2b4b 100644 (file)
@@ -8,14 +8,11 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include <sys/ioctl.h>
 #include "libbb.h"
 
-
 /* From <linux/kd.h> */
 enum { KDGKBTYPE = 0x4B33 };  /* get keyboard type */
 
-
 static int open_a_console(const char *fnam)
 {
        int fd;
@@ -39,8 +36,7 @@ static int open_a_console(const char *fnam)
  * We try several things because opening /dev/console will fail
  * if someone else used X (which does a chown on /dev/console).
  */
-
-int get_console_fd(void)
+int FAST_FUNC get_console_fd_or_die(void)
 {
        static const char *const console_names[] = {
                DEV_CONSOLE, CURRENT_VC, CURRENT_TTY
@@ -67,6 +63,18 @@ int get_console_fd(void)
                }
        }
 
-       bb_error_msg("cannot get file descriptor referring to console");
-       return fd;                      /* total failure */
+       bb_error_msg_and_die("can't open console");
+       /*return fd; - total failure */
+}
+
+/* From <linux/vt.h> */
+enum {
+       VT_ACTIVATE = 0x5606,   /* make vt active */
+       VT_WAITACTIVE = 0x5607  /* wait for vt active */
+};
+
+void FAST_FUNC console_make_active(int fd, const int vt_num)
+{
+       xioctl(fd, VT_ACTIVATE, (void *)(ptrdiff_t)vt_num);
+       xioctl(fd, VT_WAITACTIVE, (void *)(ptrdiff_t)vt_num);
 }