From f2ddc05ee77a2f5ab9a2be318c694d2f3d4e852c Mon Sep 17 00:00:00 2001 From: Paul Fox Date: Wed, 20 Jul 2005 19:55:19 +0000 Subject: applying fix for: 0000026: poor man's "scriptable" telnet --- networking/telnet.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/networking/telnet.c b/networking/telnet.c index 6ad7712ab..24160057b 100644 --- a/networking/telnet.c +++ b/networking/telnet.c @@ -96,6 +96,7 @@ static struct Globalvars { byte charmode; byte telflags; byte gotsig; + byte do_termios; /* buffer to handle telnet negotiations */ char iacbuf[IACBUFSIZE]; short iaclen; /* could even use byte */ @@ -616,12 +617,12 @@ static void fgotsig(int sig) static void rawmode(void) { - tcsetattr(0, TCSADRAIN, &G.termios_raw); + if (G.do_termios) tcsetattr(0, TCSADRAIN, &G.termios_raw); } static void cookmode(void) { - tcsetattr(0, TCSADRAIN, &G.termios_def); + if (G.do_termios) tcsetattr(0, TCSADRAIN, &G.termios_def); } extern int telnet_main(int argc, char** argv) @@ -649,11 +650,12 @@ extern int telnet_main(int argc, char** argv) memset(&G, 0, sizeof G); - if (tcgetattr(0, &G.termios_def) < 0) - exit(1); + if (tcgetattr(0, &G.termios_def) >= 0) { + G.do_termios = 1; - G.termios_raw = G.termios_def; - cfmakeraw(&G.termios_raw); + G.termios_raw = G.termios_def; + cfmakeraw(&G.termios_raw); + } if (argc < 2) bb_show_usage(); -- cgit v1.2.3