applying patch for bug 72: 0000072: Add applet to redirect console output via ioctl(..., TIOCCONS) applet name changed to setconsole, since suse has a very similar utility. better to treat differences as bugs than invent a new command.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -26,6 +26,9 @@ Laurence Anderson <[email protected]> | |
| Jeff Angielski <[email protected]> | |
| ftpput, ftpget | |
| + | Enrik Berkhan <[email protected]> |
| + | setconsole |
| + | |
| Edward Betts <[email protected]> | |
| expr, hostid, logname, whoami | |
| @@ -31,6 +31,13 @@ config CONFIG_DUMPKMAP | |
| This program dumps the kernel's keyboard translation table to | |
| stdout, in binary format. You can then use loadkmap to load it. | |
| + | config CONFIG_SETCONSOLE |
| + | bool "setconsole" |
| + | default n |
| + | help |
| + | This program redirects the system console to another device, |
| + | like the current tty while logged in via telnet. |
| + | |
| config CONFIG_LOADFONT | |
| bool "loadfont" | |
| default n | |
| @@ -28,6 +28,7 @@ CONSOLETOOLS_DIR-$(CONFIG_CHVT) += chvt.o | |
| CONSOLETOOLS_DIR-$(CONFIG_CLEAR) += clear.o | |
| CONSOLETOOLS_DIR-$(CONFIG_DEALLOCVT) += deallocvt.o | |
| CONSOLETOOLS_DIR-$(CONFIG_DUMPKMAP) += dumpkmap.o | |
| + | CONSOLETOOLS_DIR-$(CONFIG_SETCONSOLE) += setconsole.o |
| CONSOLETOOLS_DIR-$(CONFIG_LOADFONT) += loadfont.o | |
| CONSOLETOOLS_DIR-$(CONFIG_LOADKMAP) += loadkmap.o | |
| CONSOLETOOLS_DIR-$(CONFIG_OPENVT) += openvt.o | |
| @@ -0,0 +1,74 @@ | |
| + | /* vi: set sw=4 ts=4: */ |
| + | /* |
| + | * setconsole.c - redirect system console output |
| + | * |
| + | * Copyright (C) 2004,2005 Enrik Berkhan <[email protected]> |
| + | * |
| + | * This program is free software; you can redistribute it and/or modify |
| + | * it under the terms of the GNU General Public License as published by |
| + | * the Free Software Foundation; either version 2 of the License, or |
| + | * (at your option) any later version. |
| + | * |
| + | * This program is distributed in the hope that it will be useful, |
| + | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + | * GNU General Public License for more details. |
| + | * |
| + | * You should have received a copy of the GNU General Public License |
| + | * along with this program; if not, write to the Free Software |
| + | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
| + | */ |
| + | |
| + | #include <sys/ioctl.h> |
| + | #include <sys/stat.h> |
| + | #include <sys/types.h> |
| + | #include <fcntl.h> |
| + | #include <stdio.h> |
| + | #include <getopt.h> |
| + | |
| + | #include "busybox.h" |
| + | |
| + | static const struct option setconsole_long_options[] = { |
| + | { "reset", 0, NULL, 'r' }, |
| + | { 0, 0, 0, 0 } |
| + | }; |
| + | |
| + | #define OPT_SETCONS_RESET 1 |
| + | |
| + | int setconsole_main(int argc, char **argv) |
| + | { |
| + | int con; |
| + | unsigned long flags; |
| + | const char *device = "/dev/tty"; |
| + | |
| + | bb_applet_long_options = setconsole_long_options; |
| + | flags = bb_getopt_ulflags(argc, argv, "r"); |
| + | |
| + | if (argc - optind > 1) |
| + | bb_show_usage(); |
| + | |
| + | if (argc - optind == 1) { |
| + | if (flags & OPT_SETCONS_RESET) |
| + | bb_show_usage(); |
| + | device = argv[optind]; |
| + | } else { |
| + | if (flags & OPT_SETCONS_RESET) |
| + | device = "/dev/console"; |
| + | } |
| + | |
| + | if (-1 == (con = open(device, O_RDONLY))) { |
| + | bb_perror_msg_and_die("open %s", device); |
| + | } |
| + | if (-1 == ioctl(con, TIOCCONS)) { |
| + | bb_perror_msg_and_die("ioctl TIOCCONS"); |
| + | } |
| + | return EXIT_SUCCESS; |
| + | } |
| + | |
| + | /* |
| + | Local Variables: |
| + | c-file-style: "linux" |
| + | c-basic-offset: 4 |
| + | tab-width: 4 |
| + | End: |
| + | */ |
| @@ -552,6 +552,9 @@ | |
| #ifdef CONFIG_SEQ | |
| APPLET(seq, seq_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER) | |
| #endif | |
| + | #ifdef CONFIG_SETCONSOLE |
| + | APPLET(setconsole, setconsole_main, _BB_DIR_SBIN, _BB_SUID_NEVER) |
| + | #endif |
| #ifdef CONFIG_SETKEYCODES | |
| APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER) | |
| #endif | |
| @@ -2351,6 +2351,13 @@ | |
| "\tFIRST\tLAST\n" \ | |
| "\tFIRST\tINCREMENT\tLAST" | |
| + | #define setconsole_trivial_usage \ |
| + | "[-r|--reset] [DEVICE]" |
| + | #define setconsole_full_usage \ |
| + | "Redirects system console output to DEVICE (default: /dev/tty).\n\n" \ |
| + | "Options:\n" \ |
| + | "\t-r\tReset output to /dev/console." |
| + | |
| #define setkeycodes_trivial_usage \ | |
| "SCANCODE KEYCODE ..." | |
| #define setkeycodes_full_usage \ | |