static void conescape(void) { char b; if (G.gotsig) /* came from line mode... go raw */ rawmode(); WriteCS(1, "\r\nConsole escape. Commands are:\r\n\n" " l go to line mode\r\n" " c go to character mode\r\n" " z suspend telnet\r\n" " e exit telnet\r\n"); if (read(0, &b, 1) <= 0) doexit(1); switch (b) { case 'l': if (!G.gotsig) { do_linemode(); goto rrturn; } break; case 'c': if (G.gotsig) { will_charmode(); goto rrturn; } break; case 'z': cookmode(); kill(0, SIGTSTP); rawmode(); break; case 'e': doexit(0); } WriteCS(1, "continuing...\r\n"); if (G.gotsig) cookmode(); rrturn: G.gotsig = 0; }
static void con_escape(void) { char b; if (bb_got_signal) /* came from line mode... go raw */ rawmode(); write_str(1, "\r\nConsole escape. Commands are:\r\n\n" " l go to line mode\r\n" " c go to character mode\r\n" " z suspend telnet\r\n" " e exit telnet\r\n"); if (read(STDIN_FILENO, &b, 1) <= 0) doexit(EXIT_FAILURE); switch (b) { case 'l': if (!bb_got_signal) { do_linemode(); goto ret; } break; case 'c': if (bb_got_signal) { will_charmode(); goto ret; } break; case 'z': cookmode(); kill(0, SIGTSTP); rawmode(); break; case 'e': doexit(EXIT_SUCCESS); } write_str(1, "continuing...\r\n"); if (bb_got_signal) cookmode(); ret: bb_got_signal = 0; }
static void setConMode(void) { if (G.telflags & UF_ECHO) { if (G.charmode == CHM_TRY) { G.charmode = CHM_ON; printf("\r\nEntering character mode%s'^]'.\r\n", escapecharis); rawmode(); } } else { if (G.charmode != CHM_OFF) { G.charmode = CHM_OFF; printf("\r\nEntering line mode%s'^C'.\r\n", escapecharis); cookmode(); } } }
static void setConMode(void) { if (G.telflags & UF_ECHO) { if (G.charmode == CHM_TRY) { G.charmode = CHM_ON; printf("\r\nEntering %s mode" "\r\nEscape character is '^%c'.\r\n", "character", ']'); rawmode(); } } else { if (G.charmode != CHM_OFF) { G.charmode = CHM_OFF; printf("\r\nEntering %s mode" "\r\nEscape character is '^%c'.\r\n", "line", 'C'); cookmode(); } } }
static void doexit(int ev) { cookmode(); exit(ev); }
void __attribute__((noreturn)) reset_cpu(unsigned long addr) { cookmode(); exit(0); }