* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
//config:config MORE
-//config: bool "more"
+//config: bool "more (6.7 kb)"
//config: default y
//config: help
-//config: more is a simple utility which allows you to read text one screen
-//config: sized page at a time. If you want to read text that is larger than
-//config: the screen, and you are using anything faster than a 300 baud modem,
-//config: you will probably find this utility very helpful. If you don't have
-//config: any need to reading text files, you can leave this disabled.
+//config: more is a simple utility which allows you to read text one screen
+//config: sized page at a time. If you want to read text that is larger than
+//config: the screen, and you are using anything faster than a 300 baud modem,
+//config: you will probably find this utility very helpful. If you don't have
+//config: any need to reading text files, you can leave this disabled.
//applet:IF_MORE(APPLET(more, BB_DIR_BIN, BB_SUID_DROP))
unsigned terminal_width;
unsigned terminal_height;
struct termios initial_settings;
- struct termios new_settings;
} FIX_ALIASING;
#define G (*(struct globals*)bb_common_bufsiz1)
#define INIT_G() do { setup_common_bufsiz(); } while (0)
return bb_cat(argv);
G.tty_fileno = fileno(tty);
- tcgetattr(G.tty_fileno, &G.initial_settings);
- G.new_settings = G.initial_settings;
- G.new_settings.c_lflag &= ~(ICANON | ECHO);
- G.new_settings.c_cc[VMIN] = 1;
- G.new_settings.c_cc[VTIME] = 0;
- tcsetattr_tty_TCSANOW(&G.new_settings);
+
+ /* Turn on unbuffered input; turn off echoing */
+ set_termios_to_raw(G.tty_fileno, &G.initial_settings, 0);
bb_signals(BB_FATAL_SIGS, gotsig);
do {