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(); |
