* Copyright (C) many different people. If you wrote this, please
* acknowledge your work.
*
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
-//#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;
* 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
}
}
- bb_error_msg("can't open 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);
}