summaryrefslogtreecommitdiff
path: root/console-tools
diff options
context:
space:
mode:
Diffstat (limited to 'console-tools')
-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 bb096cf..bc18cd0 100644
--- a/console-tools/reset.c
+++ b/console-tools/reset.c
@@ -8,14 +8,25 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-/* no options, no getopt */
-
#include "libbb.h"
+/* BTW, which "standard" package has this utility? It doesn't seem
+ * to be ncurses, coreutils, console-tools... then what? */
+
+#if ENABLE_STTY
+int stty_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+#endif
+
int reset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int reset_main(int argc, char **argv)
{
- if (isatty(1)) {
+ static const char *const args[] = {
+ "stty", "sane", NULL
+ };
+
+ /* no options, no getopt */
+
+ if (isatty(0) && isatty(1)) {
/* See 'man 4 console_codes' for details:
* "ESC c" -- Reset
* "ESC ( K" -- Select user mapping
@@ -24,7 +35,13 @@ int reset_main(int argc, char **argv)
* "ESC [ ? 25 h" -- Make cursor visible.
*/
printf("\033c\033(K\033[J\033[0m\033[?25h");
+ /* http://bugs.busybox.net/view.php?id=1414:
+ * people want it to reset echo etc: */
+#if ENABLE_STTY
+ return stty_main(2, (char**)args);
+#else
+ execvp("stty", args);
+#endif
}
return EXIT_SUCCESS;
}
-