aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--console-tools/reset.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/console-tools/reset.c b/console-tools/reset.c
index bb096cf9f..bc18cd050 100644
--- a/console-tools/reset.c
+++ b/console-tools/reset.c
@@ -8,14 +8,25 @@
8 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 8 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
9 */ 9 */
10 10
11/* no options, no getopt */
12
13#include "libbb.h" 11#include "libbb.h"
14 12
13/* BTW, which "standard" package has this utility? It doesn't seem
14 * to be ncurses, coreutils, console-tools... then what? */
15
16#if ENABLE_STTY
17int stty_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
18#endif
19
15int reset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 20int reset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
16int reset_main(int argc, char **argv) 21int reset_main(int argc, char **argv)
17{ 22{
18 if (isatty(1)) { 23 static const char *const args[] = {
24 "stty", "sane", NULL
25 };
26
27 /* no options, no getopt */
28
29 if (isatty(0) && isatty(1)) {
19 /* See 'man 4 console_codes' for details: 30 /* See 'man 4 console_codes' for details:
20 * "ESC c" -- Reset 31 * "ESC c" -- Reset
21 * "ESC ( K" -- Select user mapping 32 * "ESC ( K" -- Select user mapping
@@ -24,7 +35,13 @@ int reset_main(int argc, char **argv)
24 * "ESC [ ? 25 h" -- Make cursor visible. 35 * "ESC [ ? 25 h" -- Make cursor visible.
25 */ 36 */
26 printf("\033c\033(K\033[J\033[0m\033[?25h"); 37 printf("\033c\033(K\033[J\033[0m\033[?25h");
38 /* http://bugs.busybox.net/view.php?id=1414:
39 * people want it to reset echo etc: */
40#if ENABLE_STTY
41 return stty_main(2, (char**)args);
42#else
43 execvp("stty", args);
44#endif
27 } 45 }
28 return EXIT_SUCCESS; 46 return EXIT_SUCCESS;
29} 47}
30