static void to_echo(void) { /* if server requests ECHO, don't agree */ if (G.telwish == DO) { put_iac2(WONT, TELOPT_ECHO); return; } if (G.telwish == DONT) return; if (G.telflags & UF_ECHO) { if (G.telwish == WILL) return; } else if (G.telwish == WONT) return; if (G.charmode != CHM_OFF) G.telflags ^= UF_ECHO; if (G.telflags & UF_ECHO) put_iac2(DO, TELOPT_ECHO); else put_iac2(DONT, TELOPT_ECHO); setConMode(); write_str(1, "\r\n"); /* sudden modec */ }
static void to_notsup(char c) { if (G.telwish == WILL) put_iac2(DONT, c); else if (G.telwish == DO) put_iac2(WONT, c); }
static void to_new_environ(void) { /* Tell server we will (or will not) do AUTOLOGIN */ if (G.autologin) put_iac2(WILL, TELOPT_NEW_ENVIRON); else put_iac2(WONT, TELOPT_NEW_ENVIRON); }
static void to_ttype(void) { /* Tell server we will (or won't) do TTYPE */ if (G.ttype) put_iac2(WILL, TELOPT_TTYPE); else put_iac2(WONT, TELOPT_TTYPE); }
static void do_linemode(void) { G.charmode = CHM_TRY; G.telflags &= ~(UF_ECHO | UF_SGA); setConMode(); put_iac2(DONT, TELOPT_ECHO); put_iac2(DONT, TELOPT_SGA); iac_flush(); }
static void will_charmode(void) { G.charmode = CHM_TRY; G.telflags |= (UF_ECHO | UF_SGA); setConMode(); put_iac2(DO, TELOPT_ECHO); put_iac2(DO, TELOPT_SGA); iac_flush(); }
static void to_sga(void) { /* daemon always sends will/wont, client do/dont */ if (G.telflags & UF_SGA) { if (G.telwish == WILL) return; } else if (G.telwish == WONT) return; G.telflags ^= UF_SGA; /* toggle */ if (G.telflags & UF_SGA) put_iac2(DO, TELOPT_SGA); else put_iac2(DONT, TELOPT_SGA); }
static void to_naws(void) { /* Tell server we will do NAWS */ put_iac2(WILL, TELOPT_NAWS); }