diff options
-rw-r--r-- | console-tools/reset.c | 25 |
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 | ||
17 | int stty_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | ||
18 | #endif | ||
19 | |||
15 | int reset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 20 | int reset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
16 | int reset_main(int argc, char **argv) | 21 | int 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 | |||