diff options
author | Paul Fox <pgf@brightstareng.com> | 2005-07-20 19:55:19 +0000 |
---|---|---|
committer | Paul Fox <pgf@brightstareng.com> | 2005-07-20 19:55:19 +0000 |
commit | f2ddc05ee77a2f5ab9a2be318c694d2f3d4e852c (patch) | |
tree | e9bbe264cf281ba5c26f1161603e7ebc9414d867 | |
parent | 1d4c88c8a5d2c8ffed5555c79d2c654f1287ddd8 (diff) | |
download | busybox-w32-f2ddc05ee77a2f5ab9a2be318c694d2f3d4e852c.tar.gz busybox-w32-f2ddc05ee77a2f5ab9a2be318c694d2f3d4e852c.tar.bz2 busybox-w32-f2ddc05ee77a2f5ab9a2be318c694d2f3d4e852c.zip |
applying fix for:
0000026: poor man's "scriptable" telnet
-rw-r--r-- | networking/telnet.c | 14 |
1 files 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 { | |||
96 | byte charmode; | 96 | byte charmode; |
97 | byte telflags; | 97 | byte telflags; |
98 | byte gotsig; | 98 | byte gotsig; |
99 | byte do_termios; | ||
99 | /* buffer to handle telnet negotiations */ | 100 | /* buffer to handle telnet negotiations */ |
100 | char iacbuf[IACBUFSIZE]; | 101 | char iacbuf[IACBUFSIZE]; |
101 | short iaclen; /* could even use byte */ | 102 | short iaclen; /* could even use byte */ |
@@ -616,12 +617,12 @@ static void fgotsig(int sig) | |||
616 | 617 | ||
617 | static void rawmode(void) | 618 | static void rawmode(void) |
618 | { | 619 | { |
619 | tcsetattr(0, TCSADRAIN, &G.termios_raw); | 620 | if (G.do_termios) tcsetattr(0, TCSADRAIN, &G.termios_raw); |
620 | } | 621 | } |
621 | 622 | ||
622 | static void cookmode(void) | 623 | static void cookmode(void) |
623 | { | 624 | { |
624 | tcsetattr(0, TCSADRAIN, &G.termios_def); | 625 | if (G.do_termios) tcsetattr(0, TCSADRAIN, &G.termios_def); |
625 | } | 626 | } |
626 | 627 | ||
627 | extern int telnet_main(int argc, char** argv) | 628 | extern int telnet_main(int argc, char** argv) |
@@ -649,11 +650,12 @@ extern int telnet_main(int argc, char** argv) | |||
649 | 650 | ||
650 | memset(&G, 0, sizeof G); | 651 | memset(&G, 0, sizeof G); |
651 | 652 | ||
652 | if (tcgetattr(0, &G.termios_def) < 0) | 653 | if (tcgetattr(0, &G.termios_def) >= 0) { |
653 | exit(1); | 654 | G.do_termios = 1; |
654 | 655 | ||
655 | G.termios_raw = G.termios_def; | 656 | G.termios_raw = G.termios_def; |
656 | cfmakeraw(&G.termios_raw); | 657 | cfmakeraw(&G.termios_raw); |
658 | } | ||
657 | 659 | ||
658 | if (argc < 2) | 660 | if (argc < 2) |
659 | bb_show_usage(); | 661 | bb_show_usage(); |