fflush_all();
tcsetattr(G.kbd_fd, TCSANOW, &G.term_orig);
if (ENABLE_FEATURE_CLEAN_UP) {
- free(ptr_to_globals);
close(G.kbd_fd);
}
// Reset attributes
applet_long_options = getopt_longopts;
#endif
INIT_G();
+ strcpy(vcsa_name, "/dev/vcsa");
opt_complementary = "x+:y+"; // numeric params
opts = getopt32(argv, "vcsndfx:y:", &G.x, &G.y);
ttynum = 0;
if (argv[0]) {
ttynum = xatou_range(argv[0], 0, 63);
+ sprintf(vcsa_name + sizeof("/dev/vcsa")-1, "%u", ttynum);
}
- sprintf(vcsa_name, "/dev/vcsa%u", ttynum);
sprintf(tty_name, "%s%u", "/dev/tty", ttynum);
if (opts & FLAG(c)) {
if ((opts & (FLAG(s)|FLAG(v))) != FLAG(v))
}
get_initial_data(vcsa_name);
- G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY);
if (opts & FLAG(d)) {
screen_dump();
bb_putchar('\n');
- if (ENABLE_FEATURE_CLEAN_UP) {
- free(ptr_to_globals);
- close(G.kbd_fd);
- }
return 0;
}
bb_signals(BB_FATAL_SIGS, cleanup);
+
// All characters must be passed through to us unaltered
+ G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY);
tcgetattr(G.kbd_fd, &G.term_orig);
termbuf = G.term_orig;
termbuf.c_iflag &= ~(BRKINT|INLCR|ICRNL|IXON|IXOFF|IUCLC|IXANY|IMAXBEL);