reset: call "stty sane". Closes bug 1414.
reset_main 26 59 +33 static.args - 12 +12
This commit is contained in:
		| @@ -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; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user