BSD 4_3_Reno release
[unix-history] / usr / src / usr.bin / telnet / tn3270.c
index 74e855d..db6c361 100644 (file)
@@ -2,21 +2,23 @@
  * Copyright (c) 1988 Regents of the University of California.
  * All rights reserved.
  *
  * Copyright (c) 1988 Regents of the University of California.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * Redistribution and use in source and binary forms are permitted provided
+ * that: (1) source distributions retain this entire copyright notice and
+ * comment, and (2) distributions including binaries display the following
+ * acknowledgement:  ``This product includes software developed by the
+ * University of California, Berkeley and its contributors'' in the
+ * documentation or other materials provided with the distribution and in
+ * all advertising materials mentioning features or use of this software.
+ * Neither the name of the University nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)tn3270.c   1.16 (Berkeley) %G%";
+static char sccsid[] = "@(#)tn3270.c   1.21 (Berkeley) 6/28/90";
 #endif /* not lint */
 
 #include <sys/types.h>
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -40,6 +42,7 @@ static char sccsid[] = "@(#)tn3270.c  1.16 (Berkeley) %G%";
 #if    defined(unix)
 int
        HaveInput,              /* There is input available to scan */
 #if    defined(unix)
 int
        HaveInput,              /* There is input available to scan */
+       cursesdata,             /* Do we dump curses data? */
        sigiocount;             /* Number of times we got a SIGIO */
 
 char   tline[200];
        sigiocount;             /* Number of times we got a SIGIO */
 
 char   tline[200];
@@ -157,7 +160,7 @@ inputAvailable()
 void
 outputPurge()
 {
 void
 outputPurge()
 {
-    ttyflush(1);
+    (void) ttyflush(1);
 }
 
 
 }
 
 
@@ -190,14 +193,14 @@ register int      count;                  /* how much to send */
 
            FD_ZERO(&o);
 #endif /* defined(unix) */
 
            FD_ZERO(&o);
 #endif /* defined(unix) */
-           ttyflush(0);
+           (void) ttyflush(0);
            while (TTYROOM() == 0) {
 #if    defined(unix)
                FD_SET(tout, &o);
                (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,
                                                (struct timeval *) 0);
 #endif /* defined(unix) */
            while (TTYROOM() == 0) {
 #if    defined(unix)
                FD_SET(tout, &o);
                (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,
                                                (struct timeval *) 0);
 #endif /* defined(unix) */
-               ttyflush(0);
+               (void) ttyflush(0);
            }
        }
        c = TTYROOM();
            }
        }
        c = TTYROOM();
@@ -230,7 +233,7 @@ Push3270()
            }
        }
        if (Ifrontp+save < Ibuf+sizeof Ibuf) {
            }
        }
        if (Ifrontp+save < Ibuf+sizeof Ibuf) {
-           telrcv();
+           (void)telrcv();
        }
     }
     return save != ring_full_count(&netiring);
        }
     }
     return save != ring_full_count(&netiring);
@@ -281,6 +284,9 @@ char c;
 #if    defined(sun)            /* SunOS 4.0 bug */
     c &= 0x7f;
 #endif /* defined(sun) */
 #if    defined(sun)            /* SunOS 4.0 bug */
     c &= 0x7f;
 #endif /* defined(sun) */
+    if (cursesdata) {
+       Dump('>', &c, 1);
+    }
     if (!TTYROOM()) {
        (void) DataToTerminal(&c, 1);
     } else {
     if (!TTYROOM()) {
        (void) DataToTerminal(&c, 1);
     } else {
@@ -292,21 +298,21 @@ char c;
 void
 SetIn3270()
 {
 void
 SetIn3270()
 {
-    if (Sent3270TerminalType && myopts[TELOPT_BINARY]
-                           && hisopts[TELOPT_BINARY] && !donebinarytoggle) {
+    if (Sent3270TerminalType && my_want_state_is_will(TELOPT_BINARY)
+               && my_want_state_is_do(TELOPT_BINARY) && !donebinarytoggle) {
        if (!In3270) {
            In3270 = 1;
            Init3270();         /* Initialize 3270 functions */
            /* initialize terminal key mapping */
            InitTerminal();     /* Start terminal going */
        if (!In3270) {
            In3270 = 1;
            Init3270();         /* Initialize 3270 functions */
            /* initialize terminal key mapping */
            InitTerminal();     /* Start terminal going */
-           setconnmode();
+           setconnmode(0);
        }
     } else {
        if (In3270) {
            StopScreen(1);
            In3270 = 0;
            Stop3270();         /* Tell 3270 we aren't here anymore */
        }
     } else {
        if (In3270) {
            StopScreen(1);
            In3270 = 0;
            Stop3270();         /* Tell 3270 we aren't here anymore */
-           setconnmode();
+           setconnmode(0);
        }
     }
 }
        }
     }
 }
@@ -355,7 +361,7 @@ tn3270_ttype()
                                                                1);
            /*NOTREACHED*/
        }
                                                                1);
            /*NOTREACHED*/
        }
-       printsub(">", sb_terminal+2, sizeof sb_terminal-2);
+       printsub('>', sb_terminal+2, sizeof sb_terminal-2);
        ring_supply_data(&netoring, sb_terminal, sizeof sb_terminal);
        return 1;
     } else {
        ring_supply_data(&netoring, sb_terminal, sizeof sb_terminal);
        return 1;
     } else {