summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-02-26 15:33:10 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-02-26 15:33:10 +0000
commitd4f0b9476af1dc9dc20a1c2ca0bbcf9a16288851 (patch)
tree8b353c27fa6ece6d334135af850d10eec59a3688
parentd686482d050da3a71eb9a50617b16d509c78b7c3 (diff)
downloadbusybox-w32-d4f0b9476af1dc9dc20a1c2ca0bbcf9a16288851.tar.gz
busybox-w32-d4f0b9476af1dc9dc20a1c2ca0bbcf9a16288851.tar.bz2
busybox-w32-d4f0b9476af1dc9dc20a1c2ca0bbcf9a16288851.zip
reset: call "stty sane". Closes bug 1414.
reset_main 26 59 +33 static.args - 12 +12
-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