1
/* vi: set sw=4 ts=4: */
3
* setconsole.c - redirect system console output
5
* Copyright (C) 2004,2005 Enrik Berkhan <Enrik.Berkhan@inka.de>
6
* Copyright (C) 2008 Bernhard Reutner-Fischer
8
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
10
//config:config SETCONSOLE
11
//config: bool "setconsole (3.6 kb)"
14
//config: Redirect writes to /dev/console to another device,
15
//config: like the current tty while logged in via telnet.
16
//config: This does not redirect kernel log, only writes
17
//config: from user space.
19
//config:config FEATURE_SETCONSOLE_LONG_OPTIONS
20
//config: bool "Enable long options"
22
//config: depends on SETCONSOLE && LONG_OPTS
24
//applet:IF_SETCONSOLE(APPLET_NOEXEC(setconsole, setconsole, BB_DIR_SBIN, BB_SUID_DROP, setconsole))
26
//kbuild:lib-$(CONFIG_SETCONSOLE) += setconsole.o
28
//usage:#define setconsole_trivial_usage
29
//usage: "[-r] [DEVICE]"
30
//usage:#define setconsole_full_usage "\n\n"
31
//usage: "Make writes to /dev/console appear on DEVICE (default: /dev/tty)."
32
//usage: "\n""Does not redirect kernel log output or reads from /dev/console."
34
//usage: "\n"" -r Reset: writes to /dev/console go to kernel log tty(s)"
36
/* It was a bbox-specific invention, but SUSE does have a similar utility.
37
* SUSE has no -r option, though.
42
int setconsole_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
43
int setconsole_main(int argc UNUSED_PARAM, char **argv)
45
const char *device = CURRENT_TTY;
48
/* at most one non-option argument */
49
reset = getopt32(argv, "^" "r" "\0" "?1");
59
//TODO: fails if TIOCCONS redir is already active to some tty.
60
//I think SUSE version first does TIOCCONS on /dev/console fd (iow: resets)
61
//then TIOCCONS to new tty?
62
xioctl(xopen(device, O_WRONLY), TIOCCONS, NULL);