[BACK]Return to externs.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / telnet

Annotation of src/usr.bin/telnet/externs.h, Revision 1.1.1.1

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