aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpgf <pgf@69ca8d6d-28ef-0310-b511-8ec308f3f277>2005-07-20 19:55:19 +0000
committerpgf <pgf@69ca8d6d-28ef-0310-b511-8ec308f3f277>2005-07-20 19:55:19 +0000
commit2cd67f4d7d031f91543cae5e440a9d214ba13c96 (patch)
treee9bbe264cf281ba5c26f1161603e7ebc9414d867
parent0ebaa7eb765859d2a6d929b134e39e0866c55d6b (diff)
downloadbusybox-w32-2cd67f4d7d031f91543cae5e440a9d214ba13c96.tar.gz
busybox-w32-2cd67f4d7d031f91543cae5e440a9d214ba13c96.tar.bz2
busybox-w32-2cd67f4d7d031f91543cae5e440a9d214ba13c96.zip
applying fix for:
0000026: poor man's "scriptable" telnet git-svn-id: svn://busybox.net/trunk/busybox@10886 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--networking/telnet.c14
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
617static void rawmode(void) 618static 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
622static void cookmode(void) 623static 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
627extern int telnet_main(int argc, char** argv) 628extern 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();