Release 4.1
[unix-history] / usr / src / usr.bin / tn3270 / ascii / termin.c
index 1eaf5b1..ff563ed 100644 (file)
@@ -1,27 +1,23 @@
 /*
 /*
- *     Copyright (c) 1984, 1985, 1986 by the Regents of the
- *     University of California and by Gregory Glenn Minshall.
+ * Copyright (c) 1988 Regents of the University of California.
+ * All rights reserved.
  *
  *
- *     Permission to use, copy, modify, and distribute these
- *     programs and their documentation for any purpose and
- *     without fee is hereby granted, provided that this
- *     copyright and permission appear on all copies and
- *     supporting documentation, the name of the Regents of
- *     the University of California not be used in advertising
- *     or publicity pertaining to distribution of the programs
- *     without specific prior permission, and notice be given in
- *     supporting documentation that copying and distribution is
- *     by permission of the Regents of the University of California
- *     and by Gregory Glenn Minshall.  Neither the Regents of the
- *     University of California nor Gregory Glenn Minshall make
- *     representations about the suitability of this software
- *     for any purpose.  It is provided "as is" without
- *     express or implied warranty.
+ * 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.
  */
 
  */
 
-#ifndef        lint
-static char    sccsid[] = "@(#)termin.c        3.1  10/29/86";
-#endif /* ndef lint */
+#ifndef lint
+static char sccsid[] = "@(#)termin.c   4.1 (Berkeley) %G%";
+#endif /* not lint */
 
 /* this takes characters from the keyboard, and produces 3270 keystroke
        codes
 
 /* this takes characters from the keyboard, and produces 3270 keystroke
        codes
@@ -32,12 +28,10 @@ static      char    sccsid[] = "@(#)termin.c        3.1  10/29/86";
 
 #include "../general/general.h"
 #include "../ctlr/function.h"
 
 #include "../general/general.h"
 #include "../ctlr/function.h"
-#include "../ctlr/inbound.ext"
-#include "../ctlr/outbound.ext"
-#include "../telnet.ext"
-#include "termin.ext"
+#include "../ctlr/externs.h"
+#include "../ctlr/declare.h"
 
 
-#include "../apilib/astosc.h"
+#include "../api/astosc.h"
 #include "state.h"
 
 #include "../general/globals.h"
 #include "state.h"
 
 #include "../general/globals.h"
@@ -54,7 +48,8 @@ static        char    sccsid[] = "@(#)termin.c        3.1  10/29/86";
 static unsigned char
        ourBuffer[100],         /* where we store stuff */
        *ourPHead = ourBuffer,  /* first character in buffer */
 static unsigned char
        ourBuffer[100],         /* where we store stuff */
        *ourPHead = ourBuffer,  /* first character in buffer */
-       *ourPTail = ourBuffer;  /* where next character goes */
+       *ourPTail = ourBuffer,  /* where next character goes */
+       *TransPointer = 0;      /* For transparent mode data */
 
 static int InControl;
 static int WaitingForSynch;
 
 static int InControl;
 static int WaitingForSynch;
@@ -131,6 +126,20 @@ FlushChar()
     ourPHead = ourBuffer;
 }
 
     ourPHead = ourBuffer;
 }
 
+/*ARGSUSED*/
+void
+TransInput(onoff, mode)
+int    mode;                   /* Which KIND of transparent input */
+int    onoff;                  /* Going in, or coming out */
+{
+    if (onoff) {
+       /* Flush pending input */
+       FlushChar();
+       TransPointer = ourBuffer;
+    } else {
+    }
+}
+
 int
 TerminalIn()
 {
 int
 TerminalIn()
 {
@@ -171,7 +180,29 @@ register int       count;                  /* how many bytes in this buffer */
     extern int bellwinup;
     static state *controlPointer;
 
     extern int bellwinup;
     static state *controlPointer;
 
+    if (TransPointer) {
+       int i;
+
+       if ((count+TransPointer) >= (ourBuffer+sizeof ourBuffer)) {
+           i = ourBuffer+sizeof ourBuffer-TransPointer;
+       } else {
+           i = count;
+       }
+       while (i--) {
+           c = (*buffer++)&0x7f;
+           *TransPointer++ = c|0x80;
+           if (c == '\r') {
+               SendTransparent((char *)ourBuffer, TransPointer-ourBuffer);
+               TransPointer = 0;               /* Done */
+               break;
+           }
+       }
+       return count;
+    }
+
     if (bellwinup) {
     if (bellwinup) {
+       void BellOff();
+
        BellOff();
     }
 
        BellOff();
     }
 
@@ -209,6 +240,8 @@ register int        count;                  /* how many bytes in this buffer */
                        if (astosc[result].function == FCN_SYNCH) {
                            WaitingForSynch = 0;
                        } else {
                        if (astosc[result].function == FCN_SYNCH) {
                            WaitingForSynch = 0;
                        } else {
+                           void RingBell();
+
                            RingBell("Need to type synch character");
                        }
                    }
                            RingBell("Need to type synch character");
                        }
                    }