Home | History | Annotate | Line # | Download | only in telnet
externs.h revision 1.9
      1  1.9  christos /*	$NetBSD: externs.h,v 1.9 1998/02/27 10:44:13 christos Exp $	*/
      2  1.8   thorpej 
      3  1.1       cgd /*
      4  1.3       cgd  * Copyright (c) 1988, 1990, 1993
      5  1.3       cgd  *	The Regents of the University of California.  All rights reserved.
      6  1.1       cgd  *
      7  1.1       cgd  * Redistribution and use in source and binary forms, with or without
      8  1.1       cgd  * modification, are permitted provided that the following conditions
      9  1.1       cgd  * are met:
     10  1.1       cgd  * 1. Redistributions of source code must retain the above copyright
     11  1.1       cgd  *    notice, this list of conditions and the following disclaimer.
     12  1.1       cgd  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1       cgd  *    notice, this list of conditions and the following disclaimer in the
     14  1.1       cgd  *    documentation and/or other materials provided with the distribution.
     15  1.1       cgd  * 3. All advertising materials mentioning features or use of this software
     16  1.1       cgd  *    must display the following acknowledgement:
     17  1.1       cgd  *	This product includes software developed by the University of
     18  1.1       cgd  *	California, Berkeley and its contributors.
     19  1.1       cgd  * 4. Neither the name of the University nor the names of its contributors
     20  1.1       cgd  *    may be used to endorse or promote products derived from this software
     21  1.1       cgd  *    without specific prior written permission.
     22  1.1       cgd  *
     23  1.1       cgd  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     24  1.1       cgd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     25  1.1       cgd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26  1.1       cgd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     27  1.1       cgd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28  1.1       cgd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     29  1.1       cgd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     30  1.1       cgd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     31  1.1       cgd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     32  1.1       cgd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     33  1.1       cgd  * SUCH DAMAGE.
     34  1.1       cgd  *
     35  1.6       jtk  *	from: @(#)externs.h	8.3 (Berkeley) 5/30/95
     36  1.1       cgd  */
     37  1.1       cgd 
     38  1.1       cgd #ifndef	BSD
     39  1.1       cgd # define BSD 43
     40  1.1       cgd #endif
     41  1.1       cgd 
     42  1.3       cgd /*
     43  1.3       cgd  * ucb stdio.h defines BSD as something wierd
     44  1.3       cgd  */
     45  1.3       cgd #if defined(sun) && defined(__svr4__)
     46  1.3       cgd #define BSD 43
     47  1.3       cgd #endif
     48  1.3       cgd 
     49  1.3       cgd #ifndef	USE_TERMIO
     50  1.3       cgd # if BSD > 43 || defined(SYSV_TERMIO)
     51  1.3       cgd #  define USE_TERMIO
     52  1.3       cgd # endif
     53  1.1       cgd #endif
     54  1.1       cgd 
     55  1.1       cgd #include <stdio.h>
     56  1.4       cgd #include <stdlib.h>
     57  1.1       cgd #include <setjmp.h>
     58  1.3       cgd #if defined(CRAY) && !defined(NO_BSD_SETJMP)
     59  1.3       cgd #include <bsdsetjmp.h>
     60  1.3       cgd #endif
     61  1.1       cgd #ifndef	FILIO_H
     62  1.1       cgd #include <sys/ioctl.h>
     63  1.1       cgd #else
     64  1.1       cgd #include <sys/filio.h>
     65  1.1       cgd #endif
     66  1.3       cgd #ifdef CRAY
     67  1.3       cgd # include <errno.h>
     68  1.3       cgd #endif /* CRAY */
     69  1.1       cgd #ifdef	USE_TERMIO
     70  1.1       cgd # ifndef	VINTR
     71  1.1       cgd #  ifdef SYSV_TERMIO
     72  1.1       cgd #   include <sys/termio.h>
     73  1.1       cgd #  else
     74  1.1       cgd #   include <sys/termios.h>
     75  1.1       cgd #   define termio termios
     76  1.1       cgd #  endif
     77  1.1       cgd # endif
     78  1.1       cgd #endif
     79  1.1       cgd #if defined(NO_CC_T) || !defined(USE_TERMIO)
     80  1.1       cgd # if !defined(USE_TERMIO)
     81  1.1       cgd typedef char cc_t;
     82  1.1       cgd # else
     83  1.1       cgd typedef unsigned char cc_t;
     84  1.1       cgd # endif
     85  1.1       cgd #endif
     86  1.1       cgd 
     87  1.1       cgd #ifndef	NO_STRING_H
     88  1.1       cgd #include <string.h>
     89  1.6       jtk #else
     90  1.6       jtk #include <strings.h>
     91  1.1       cgd #endif
     92  1.1       cgd 
     93  1.1       cgd #ifndef	_POSIX_VDISABLE
     94  1.1       cgd # ifdef sun
     95  1.1       cgd #  include <sys/param.h>	/* pick up VDISABLE definition, mayby */
     96  1.1       cgd # endif
     97  1.1       cgd # ifdef VDISABLE
     98  1.1       cgd #  define _POSIX_VDISABLE VDISABLE
     99  1.1       cgd # else
    100  1.1       cgd #  define _POSIX_VDISABLE ((cc_t)'\377')
    101  1.1       cgd # endif
    102  1.1       cgd #endif
    103  1.1       cgd 
    104  1.1       cgd #define	SUBBUFSIZE	256
    105  1.1       cgd 
    106  1.3       cgd #ifndef CRAY
    107  1.1       cgd extern int errno;		/* outside this world */
    108  1.3       cgd #endif /* !CRAY */
    109  1.1       cgd 
    110  1.6       jtk #include <sys/cdefs.h>
    111  1.6       jtk #define P __P
    112  1.1       cgd 
    113  1.1       cgd extern int
    114  1.1       cgd     autologin,		/* Autologin enabled */
    115  1.1       cgd     skiprc,		/* Don't process the ~/.telnetrc file */
    116  1.1       cgd     eight,		/* use eight bit mode (binary in and/or out */
    117  1.1       cgd     flushout,		/* flush output */
    118  1.1       cgd     connected,		/* Are we connected to the other side? */
    119  1.1       cgd     globalmode,		/* Mode tty should be in */
    120  1.6       jtk     In3270,		/* Are we in 3270 mode? */
    121  1.1       cgd     telnetport,		/* Are we connected to the telnet port? */
    122  1.1       cgd     localflow,		/* Flow control handled locally */
    123  1.3       cgd     restartany,		/* If flow control, restart output on any character */
    124  1.1       cgd     localchars,		/* we recognize interrupt/quit */
    125  1.6       jtk     donelclchars,	/* the user has set "localchars" */
    126  1.1       cgd     showoptions,
    127  1.1       cgd     net,		/* Network file descriptor */
    128  1.1       cgd     tin,		/* Terminal input file descriptor */
    129  1.1       cgd     tout,		/* Terminal output file descriptor */
    130  1.1       cgd     crlf,		/* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */
    131  1.1       cgd     autoflush,		/* flush output when interrupting? */
    132  1.1       cgd     autosynch,		/* send interrupt characters with SYNCH? */
    133  1.1       cgd     SYNCHing,		/* Is the stream in telnet SYNCH mode? */
    134  1.1       cgd     donebinarytoggle,	/* the user has put us in binary */
    135  1.1       cgd     dontlecho,		/* do we suppress local echoing right now? */
    136  1.1       cgd     crmod,
    137  1.1       cgd     netdata,		/* Print out network data flow */
    138  1.1       cgd     prettydump,		/* Print "netdata" output in user readable format */
    139  1.1       cgd #if	defined(unix)
    140  1.1       cgd #if	defined(TN3270)
    141  1.1       cgd     cursesdata,		/* Print out curses data flow */
    142  1.1       cgd     apitrace,		/* Trace API transactions */
    143  1.1       cgd #endif	/* defined(TN3270) */
    144  1.1       cgd     termdata,		/* Print out terminal data flow */
    145  1.1       cgd #endif	/* defined(unix) */
    146  1.7       jtk     debug,		/* Debug level */
    147  1.7       jtk     clienteof;		/* Client received EOF */
    148  1.1       cgd 
    149  1.1       cgd extern cc_t escape;	/* Escape to command mode */
    150  1.1       cgd extern cc_t rlogin;	/* Rlogin mode escape character */
    151  1.1       cgd #ifdef	KLUDGELINEMODE
    152  1.1       cgd extern cc_t echoc;	/* Toggle local echoing */
    153  1.1       cgd #endif
    154  1.1       cgd 
    155  1.1       cgd extern char
    156  1.1       cgd     *prompt;		/* Prompt for command. */
    157  1.1       cgd 
    158  1.1       cgd extern char
    159  1.1       cgd     doopt[],
    160  1.1       cgd     dont[],
    161  1.1       cgd     will[],
    162  1.1       cgd     wont[],
    163  1.1       cgd     options[],		/* All the little options */
    164  1.1       cgd     *hostname;		/* Who are we connected to? */
    165  1.1       cgd 
    166  1.1       cgd /*
    167  1.1       cgd  * We keep track of each side of the option negotiation.
    168  1.1       cgd  */
    169  1.1       cgd 
    170  1.1       cgd #define	MY_STATE_WILL		0x01
    171  1.1       cgd #define	MY_WANT_STATE_WILL	0x02
    172  1.1       cgd #define	MY_STATE_DO		0x04
    173  1.1       cgd #define	MY_WANT_STATE_DO	0x08
    174  1.1       cgd 
    175  1.1       cgd /*
    176  1.1       cgd  * Macros to check the current state of things
    177  1.1       cgd  */
    178  1.1       cgd 
    179  1.1       cgd #define	my_state_is_do(opt)		(options[opt]&MY_STATE_DO)
    180  1.1       cgd #define	my_state_is_will(opt)		(options[opt]&MY_STATE_WILL)
    181  1.1       cgd #define my_want_state_is_do(opt)	(options[opt]&MY_WANT_STATE_DO)
    182  1.1       cgd #define my_want_state_is_will(opt)	(options[opt]&MY_WANT_STATE_WILL)
    183  1.1       cgd 
    184  1.1       cgd #define	my_state_is_dont(opt)		(!my_state_is_do(opt))
    185  1.1       cgd #define	my_state_is_wont(opt)		(!my_state_is_will(opt))
    186  1.1       cgd #define my_want_state_is_dont(opt)	(!my_want_state_is_do(opt))
    187  1.1       cgd #define my_want_state_is_wont(opt)	(!my_want_state_is_will(opt))
    188  1.1       cgd 
    189  1.1       cgd #define	set_my_state_do(opt)		{options[opt] |= MY_STATE_DO;}
    190  1.1       cgd #define	set_my_state_will(opt)		{options[opt] |= MY_STATE_WILL;}
    191  1.1       cgd #define	set_my_want_state_do(opt)	{options[opt] |= MY_WANT_STATE_DO;}
    192  1.1       cgd #define	set_my_want_state_will(opt)	{options[opt] |= MY_WANT_STATE_WILL;}
    193  1.1       cgd 
    194  1.1       cgd #define	set_my_state_dont(opt)		{options[opt] &= ~MY_STATE_DO;}
    195  1.1       cgd #define	set_my_state_wont(opt)		{options[opt] &= ~MY_STATE_WILL;}
    196  1.1       cgd #define	set_my_want_state_dont(opt)	{options[opt] &= ~MY_WANT_STATE_DO;}
    197  1.1       cgd #define	set_my_want_state_wont(opt)	{options[opt] &= ~MY_WANT_STATE_WILL;}
    198  1.1       cgd 
    199  1.1       cgd /*
    200  1.1       cgd  * Make everything symetrical
    201  1.1       cgd  */
    202  1.1       cgd 
    203  1.1       cgd #define	HIS_STATE_WILL			MY_STATE_DO
    204  1.1       cgd #define	HIS_WANT_STATE_WILL		MY_WANT_STATE_DO
    205  1.1       cgd #define HIS_STATE_DO			MY_STATE_WILL
    206  1.1       cgd #define HIS_WANT_STATE_DO		MY_WANT_STATE_WILL
    207  1.1       cgd 
    208  1.1       cgd #define	his_state_is_do			my_state_is_will
    209  1.1       cgd #define	his_state_is_will		my_state_is_do
    210  1.1       cgd #define his_want_state_is_do		my_want_state_is_will
    211  1.1       cgd #define his_want_state_is_will		my_want_state_is_do
    212  1.1       cgd 
    213  1.1       cgd #define	his_state_is_dont		my_state_is_wont
    214  1.1       cgd #define	his_state_is_wont		my_state_is_dont
    215  1.1       cgd #define his_want_state_is_dont		my_want_state_is_wont
    216  1.1       cgd #define his_want_state_is_wont		my_want_state_is_dont
    217  1.1       cgd 
    218  1.1       cgd #define	set_his_state_do		set_my_state_will
    219  1.1       cgd #define	set_his_state_will		set_my_state_do
    220  1.1       cgd #define	set_his_want_state_do		set_my_want_state_will
    221  1.1       cgd #define	set_his_want_state_will		set_my_want_state_do
    222  1.1       cgd 
    223  1.1       cgd #define	set_his_state_dont		set_my_state_wont
    224  1.1       cgd #define	set_his_state_wont		set_my_state_dont
    225  1.1       cgd #define	set_his_want_state_dont		set_my_want_state_wont
    226  1.1       cgd #define	set_his_want_state_wont		set_my_want_state_dont
    227  1.1       cgd 
    228  1.1       cgd 
    229  1.1       cgd extern FILE
    230  1.1       cgd     *NetTrace;		/* Where debugging output goes */
    231  1.1       cgd extern unsigned char
    232  1.1       cgd     NetTraceFile[];	/* Name of file where debugging output goes */
    233  1.1       cgd 
    234  1.1       cgd extern jmp_buf
    235  1.1       cgd     peerdied,
    236  1.1       cgd     toplevel;		/* For error conditions. */
    237  1.1       cgd 
    238  1.1       cgd 
    239  1.9  christos /* authenc.c */
    240  1.9  christos int net_write P((unsigned char *, int));
    241  1.9  christos void net_encrypt P((void));
    242  1.9  christos int telnet_spin P((void));
    243  1.9  christos char *telnet_getenv P((char *));
    244  1.9  christos char *telnet_gets P((char *, char *, int, int));
    245  1.9  christos 
    246  1.9  christos /* commands.c */
    247  1.9  christos int send_tncmd P((void (*)(int, int), char *, char *));
    248  1.9  christos void _setlist_init P((void));
    249  1.9  christos void set_escape_char P((char *));
    250  1.9  christos int set_mode P((int));
    251  1.9  christos int clear_mode P((int));
    252  1.9  christos int modehelp P((int));
    253  1.9  christos int suspend P((int, char *[]));
    254  1.9  christos int shell P((int, char *[]));
    255  1.9  christos int quit P((int, char *[]));
    256  1.9  christos int logout P((int, char *[]));
    257  1.9  christos int env_cmd P((int, char *[]));
    258  1.9  christos struct env_lst *env_find P((unsigned char *));
    259  1.9  christos void env_init P((void));
    260  1.9  christos struct env_lst *env_define P((unsigned char *, unsigned char *));
    261  1.9  christos struct env_lst *env_undefine P((unsigned char *, unsigned char *));
    262  1.9  christos struct env_lst *env_export P((unsigned char *, unsigned char *));
    263  1.9  christos struct env_lst *env_unexport P((unsigned char *, unsigned char *));
    264  1.9  christos struct env_lst *env_send P((unsigned char *, unsigned char *));
    265  1.9  christos struct env_lst *env_list P((unsigned char *, unsigned char *));
    266  1.9  christos unsigned char *env_default P((int, int ));
    267  1.9  christos unsigned char *env_getvalue P((unsigned char *));
    268  1.9  christos void env_varval P((unsigned char *));
    269  1.9  christos int auth_cmd P((int, char *[]));
    270  1.9  christos int ayt_status P((void));
    271  1.9  christos int tn P((int, char *[]));
    272  1.9  christos void command P((int, char *, int));
    273  1.9  christos void cmdrc P((char *, char *));
    274  1.9  christos unsigned long sourceroute P((char *, char **, unsigned long *));
    275  1.9  christos 
    276  1.9  christos /* main.c */
    277  1.9  christos void tninit P((void));
    278  1.9  christos void usage P((void));
    279  1.9  christos 
    280  1.9  christos /* network.c */
    281  1.9  christos void init_network P((void));
    282  1.9  christos int stilloob P((void));
    283  1.9  christos void setneturg P((void));
    284  1.9  christos int netflush P((void));
    285  1.9  christos 
    286  1.9  christos /* sys_bsd.c */
    287  1.9  christos void init_sys P((void));
    288  1.9  christos int TerminalWrite P((char *, int));
    289  1.9  christos int TerminalRead P((unsigned char *, int));
    290  1.9  christos int TerminalAutoFlush P((void));
    291  1.9  christos int TerminalSpecialChars P((int));
    292  1.9  christos void TerminalFlushOutput P((void));
    293  1.9  christos void TerminalSaveState P((void));
    294  1.9  christos cc_t *tcval P((int));
    295  1.9  christos void TerminalDefaultChars P((void));
    296  1.9  christos void TerminalRestoreState P((void));
    297  1.9  christos void TerminalNewMode P((int));
    298  1.9  christos void TerminalSpeeds P((long *, long *));
    299  1.9  christos int TerminalWindowSize P((long *, long *));
    300  1.9  christos int NetClose P((int));
    301  1.9  christos void NetNonblockingIO P((int, int));
    302  1.9  christos void NetSigIO P((int, int));
    303  1.9  christos void NetSetPgrp P((int));
    304  1.9  christos void sys_telnet_init P((void));
    305  1.9  christos int process_rings P((int , int , int , int , int , int));
    306  1.9  christos 
    307  1.9  christos /* telnet.c */
    308  1.9  christos void init_telnet P((void));
    309  1.9  christos void send_do P((int, int ));
    310  1.9  christos void send_dont P((int, int ));
    311  1.9  christos void send_will P((int, int ));
    312  1.9  christos void send_wont P((int, int ));
    313  1.9  christos void willoption P((int));
    314  1.9  christos void wontoption P((int));
    315  1.9  christos char **mklist P((char *, char *));
    316  1.9  christos int is_unique P((char *, char **, char **));
    317  1.9  christos int setupterm P((char *, int, int *));
    318  1.9  christos char *gettermname P((void));
    319  1.9  christos void lm_will P((unsigned char *, int));
    320  1.9  christos void lm_wont P((unsigned char *, int));
    321  1.9  christos void lm_do P((unsigned char *, int));
    322  1.9  christos void lm_dont P((unsigned char *, int));
    323  1.9  christos void lm_mode P((unsigned char *, int, int ));
    324  1.9  christos void slc_init P((void));
    325  1.9  christos void slcstate P((void));
    326  1.9  christos void slc_mode_export P((int));
    327  1.9  christos void slc_mode_import P((int));
    328  1.9  christos void slc_import P((int));
    329  1.9  christos void slc_export P((void));
    330  1.9  christos void slc P((unsigned char *, int));
    331  1.9  christos void slc_check P((void));
    332  1.9  christos void slc_start_reply P((void));
    333  1.9  christos void slc_add_reply P((unsigned int, unsigned int, cc_t));
    334  1.9  christos void slc_end_reply P((void));
    335  1.9  christos int slc_update P((void));
    336  1.9  christos void env_opt P((unsigned char *, int));
    337  1.9  christos void env_opt_start P((void));
    338  1.9  christos void env_opt_start_info P((void));
    339  1.9  christos void env_opt_add P((unsigned char *));
    340  1.9  christos int opt_welldefined P((char *));
    341  1.9  christos void env_opt_end P((int));
    342  1.9  christos int telrcv P((void));
    343  1.9  christos int rlogin_susp P((void));
    344  1.9  christos int Scheduler P((int));
    345  1.9  christos void telnet P((char *));
    346  1.9  christos void xmitAO P((void));
    347  1.9  christos void xmitEL P((void));
    348  1.9  christos void xmitEC P((void));
    349  1.9  christos int dosynch P((char *));
    350  1.9  christos int get_status P((char *));
    351  1.9  christos void intp P((void));
    352  1.9  christos void sendbrk P((void));
    353  1.9  christos void sendabort P((void));
    354  1.9  christos void sendsusp P((void));
    355  1.9  christos void sendeof P((void));
    356  1.9  christos void sendayt P((void));
    357  1.9  christos void sendnaws P((void));
    358  1.9  christos void tel_enter_binary P((int));
    359  1.9  christos void tel_leave_binary P((int));
    360  1.9  christos 
    361  1.9  christos /* terminal.c */
    362  1.9  christos void init_terminal P((void));
    363  1.9  christos int ttyflush P((int));
    364  1.9  christos int getconnmode P((void));
    365  1.9  christos void setconnmode P((int));
    366  1.9  christos void setcommandmode P((void));
    367  1.9  christos 
    368  1.9  christos /* utilities.c */
    369  1.9  christos void upcase P((char *));
    370  1.9  christos int SetSockOpt P((int, int , int , int ));
    371  1.9  christos void SetNetTrace P((char *));
    372  1.9  christos void Dump P((int, unsigned char *, int));
    373  1.9  christos void printoption P((char *, int, int ));
    374  1.9  christos void optionstatus P((void));
    375  1.9  christos void printsub P((int, unsigned char *, int));
    376  1.9  christos void EmptyTerminal P((void));
    377  1.9  christos void SetForExit P((void));
    378  1.9  christos void Exit P((int)) __attribute__((__noreturn__));
    379  1.9  christos void ExitString P((char *, int)) __attribute__((__noreturn__));
    380  1.1       cgd 
    381  1.1       cgd #ifndef	USE_TERMIO
    382  1.1       cgd 
    383  1.1       cgd extern struct	tchars ntc;
    384  1.1       cgd extern struct	ltchars nltc;
    385  1.1       cgd extern struct	sgttyb nttyb;
    386  1.1       cgd 
    387  1.1       cgd # define termEofChar		ntc.t_eofc
    388  1.1       cgd # define termEraseChar		nttyb.sg_erase
    389  1.1       cgd # define termFlushChar		nltc.t_flushc
    390  1.1       cgd # define termIntChar		ntc.t_intrc
    391  1.1       cgd # define termKillChar		nttyb.sg_kill
    392  1.1       cgd # define termLiteralNextChar	nltc.t_lnextc
    393  1.1       cgd # define termQuitChar		ntc.t_quitc
    394  1.1       cgd # define termSuspChar		nltc.t_suspc
    395  1.1       cgd # define termRprntChar		nltc.t_rprntc
    396  1.1       cgd # define termWerasChar		nltc.t_werasc
    397  1.1       cgd # define termStartChar		ntc.t_startc
    398  1.1       cgd # define termStopChar		ntc.t_stopc
    399  1.1       cgd # define termForw1Char		ntc.t_brkc
    400  1.1       cgd extern cc_t termForw2Char;
    401  1.1       cgd extern cc_t termAytChar;
    402  1.1       cgd 
    403  1.1       cgd # define termEofCharp		(cc_t *)&ntc.t_eofc
    404  1.1       cgd # define termEraseCharp		(cc_t *)&nttyb.sg_erase
    405  1.1       cgd # define termFlushCharp		(cc_t *)&nltc.t_flushc
    406  1.1       cgd # define termIntCharp		(cc_t *)&ntc.t_intrc
    407  1.1       cgd # define termKillCharp		(cc_t *)&nttyb.sg_kill
    408  1.1       cgd # define termLiteralNextCharp	(cc_t *)&nltc.t_lnextc
    409  1.1       cgd # define termQuitCharp		(cc_t *)&ntc.t_quitc
    410  1.1       cgd # define termSuspCharp		(cc_t *)&nltc.t_suspc
    411  1.1       cgd # define termRprntCharp		(cc_t *)&nltc.t_rprntc
    412  1.1       cgd # define termWerasCharp		(cc_t *)&nltc.t_werasc
    413  1.1       cgd # define termStartCharp		(cc_t *)&ntc.t_startc
    414  1.1       cgd # define termStopCharp		(cc_t *)&ntc.t_stopc
    415  1.1       cgd # define termForw1Charp		(cc_t *)&ntc.t_brkc
    416  1.1       cgd # define termForw2Charp		(cc_t *)&termForw2Char
    417  1.1       cgd # define termAytCharp		(cc_t *)&termAytChar
    418  1.1       cgd 
    419  1.1       cgd # else
    420  1.1       cgd 
    421  1.1       cgd extern struct	termio new_tc;
    422  1.1       cgd 
    423  1.1       cgd # define termEofChar		new_tc.c_cc[VEOF]
    424  1.1       cgd # define termEraseChar		new_tc.c_cc[VERASE]
    425  1.1       cgd # define termIntChar		new_tc.c_cc[VINTR]
    426  1.1       cgd # define termKillChar		new_tc.c_cc[VKILL]
    427  1.1       cgd # define termQuitChar		new_tc.c_cc[VQUIT]
    428  1.1       cgd 
    429  1.1       cgd # ifndef	VSUSP
    430  1.1       cgd extern cc_t termSuspChar;
    431  1.1       cgd # else
    432  1.1       cgd #  define termSuspChar		new_tc.c_cc[VSUSP]
    433  1.1       cgd # endif
    434  1.1       cgd # if	defined(VFLUSHO) && !defined(VDISCARD)
    435  1.1       cgd #  define VDISCARD VFLUSHO
    436  1.1       cgd # endif
    437  1.1       cgd # ifndef	VDISCARD
    438  1.1       cgd extern cc_t termFlushChar;
    439  1.1       cgd # else
    440  1.1       cgd #  define termFlushChar		new_tc.c_cc[VDISCARD]
    441  1.1       cgd # endif
    442  1.1       cgd # ifndef VWERASE
    443  1.1       cgd extern cc_t termWerasChar;
    444  1.1       cgd # else
    445  1.1       cgd #  define termWerasChar		new_tc.c_cc[VWERASE]
    446  1.1       cgd # endif
    447  1.1       cgd # ifndef	VREPRINT
    448  1.1       cgd extern cc_t termRprntChar;
    449  1.1       cgd # else
    450  1.1       cgd #  define termRprntChar		new_tc.c_cc[VREPRINT]
    451  1.1       cgd # endif
    452  1.1       cgd # ifndef	VLNEXT
    453  1.1       cgd extern cc_t termLiteralNextChar;
    454  1.1       cgd # else
    455  1.1       cgd #  define termLiteralNextChar	new_tc.c_cc[VLNEXT]
    456  1.1       cgd # endif
    457  1.1       cgd # ifndef	VSTART
    458  1.1       cgd extern cc_t termStartChar;
    459  1.1       cgd # else
    460  1.1       cgd #  define termStartChar		new_tc.c_cc[VSTART]
    461  1.1       cgd # endif
    462  1.1       cgd # ifndef	VSTOP
    463  1.1       cgd extern cc_t termStopChar;
    464  1.1       cgd # else
    465  1.1       cgd #  define termStopChar		new_tc.c_cc[VSTOP]
    466  1.1       cgd # endif
    467  1.1       cgd # ifndef	VEOL
    468  1.1       cgd extern cc_t termForw1Char;
    469  1.1       cgd # else
    470  1.1       cgd #  define termForw1Char		new_tc.c_cc[VEOL]
    471  1.1       cgd # endif
    472  1.1       cgd # ifndef	VEOL2
    473  1.1       cgd extern cc_t termForw2Char;
    474  1.1       cgd # else
    475  1.1       cgd #  define termForw2Char		new_tc.c_cc[VEOL]
    476  1.1       cgd # endif
    477  1.1       cgd # ifndef	VSTATUS
    478  1.1       cgd extern cc_t termAytChar;
    479  1.1       cgd #else
    480  1.1       cgd #  define termAytChar		new_tc.c_cc[VSTATUS]
    481  1.1       cgd #endif
    482  1.1       cgd 
    483  1.1       cgd # if !defined(CRAY) || defined(__STDC__)
    484  1.1       cgd #  define termEofCharp		&termEofChar
    485  1.1       cgd #  define termEraseCharp	&termEraseChar
    486  1.1       cgd #  define termIntCharp		&termIntChar
    487  1.1       cgd #  define termKillCharp		&termKillChar
    488  1.1       cgd #  define termQuitCharp		&termQuitChar
    489  1.1       cgd #  define termSuspCharp		&termSuspChar
    490  1.1       cgd #  define termFlushCharp	&termFlushChar
    491  1.1       cgd #  define termWerasCharp	&termWerasChar
    492  1.1       cgd #  define termRprntCharp	&termRprntChar
    493  1.1       cgd #  define termLiteralNextCharp	&termLiteralNextChar
    494  1.1       cgd #  define termStartCharp	&termStartChar
    495  1.1       cgd #  define termStopCharp		&termStopChar
    496  1.1       cgd #  define termForw1Charp	&termForw1Char
    497  1.1       cgd #  define termForw2Charp	&termForw2Char
    498  1.1       cgd #  define termAytCharp		&termAytChar
    499  1.1       cgd # else
    500  1.1       cgd 	/* Work around a compiler bug */
    501  1.1       cgd #  define termEofCharp		0
    502  1.1       cgd #  define termEraseCharp	0
    503  1.1       cgd #  define termIntCharp		0
    504  1.1       cgd #  define termKillCharp		0
    505  1.1       cgd #  define termQuitCharp		0
    506  1.1       cgd #  define termSuspCharp		0
    507  1.1       cgd #  define termFlushCharp	0
    508  1.1       cgd #  define termWerasCharp	0
    509  1.1       cgd #  define termRprntCharp	0
    510  1.1       cgd #  define termLiteralNextCharp	0
    511  1.1       cgd #  define termStartCharp	0
    512  1.1       cgd #  define termStopCharp		0
    513  1.1       cgd #  define termForw1Charp	0
    514  1.1       cgd #  define termForw2Charp	0
    515  1.1       cgd #  define termAytCharp		0
    516  1.1       cgd # endif
    517  1.1       cgd #endif
    518  1.1       cgd 
    519  1.1       cgd 
    520  1.1       cgd /* Ring buffer structures which are shared */
    521  1.1       cgd 
    522  1.1       cgd extern Ring
    523  1.1       cgd     netoring,
    524  1.1       cgd     netiring,
    525  1.1       cgd     ttyoring,
    526  1.1       cgd     ttyiring;
    527  1.1       cgd 
    528  1.1       cgd /* Tn3270 section */
    529  1.1       cgd #if	defined(TN3270)
    530  1.1       cgd 
    531  1.1       cgd extern int
    532  1.1       cgd     HaveInput,		/* Whether an asynchronous I/O indication came in */
    533  1.1       cgd     noasynchtty,	/* Don't do signals on I/O (SIGURG, SIGIO) */
    534  1.1       cgd     noasynchnet,	/* Don't do signals on I/O (SIGURG, SIGIO) */
    535  1.1       cgd     sigiocount,		/* Count of SIGIO receptions */
    536  1.1       cgd     shell_active;	/* Subshell is active */
    537  1.1       cgd 
    538  1.1       cgd extern char
    539  1.1       cgd     *Ibackp,		/* Oldest byte of 3270 data */
    540  1.1       cgd     Ibuf[],		/* 3270 buffer */
    541  1.1       cgd     *Ifrontp,		/* Where next 3270 byte goes */
    542  1.1       cgd     tline[],
    543  1.1       cgd     *transcom;		/* Transparent command */
    544  1.1       cgd 
    545  1.9  christos /* tn3270.c */
    546  1.9  christos void init_3270 P((void));
    547  1.9  christos int DataToNetwork P((char *, int, int));
    548  1.9  christos void inputAvailable P((int));
    549  1.9  christos void outputPurge P((void));
    550  1.9  christos int DataToTerminal P((char *, int));
    551  1.9  christos int Push3270 P((void));
    552  1.9  christos void Finish3270 P((void));
    553  1.9  christos void StringToTerminal P((char *));
    554  1.9  christos void _putchar P((int));
    555  1.9  christos void SetIn3270 P((void));
    556  1.9  christos int tn3270_ttype P((void));
    557  1.9  christos int settranscom P((int, char *[]));
    558  1.1       cgd 
    559  1.1       cgd #endif	/* defined(TN3270) */
    560