📄 externs.h
字号:
/* * Copyright (c) 1988, 1990 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. 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 BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: @(#)externs.h 5.3 (Berkeley) 3/22/91 * $Id: externs.h,v 1.20 1999/08/19 09:34:15 dholland Exp $ */#ifndef BSD#define BSD 43#endif#include <stdio.h>#include <setjmp.h>#include <sys/ioctl.h>#include <features.h>#include <termios.h>#if defined(NO_CC_T)typedef unsigned char cc_t;#endif#ifdef __linux__#include <unistd.h> /* get _POSIX_VDISABLE */#endif#ifndef _POSIX_VDISABLE#error "Please fix externs.h to define _POSIX_VDISABLE"#endif#define SUBBUFSIZE 256extern int autologin; /* Autologin enabled */extern int skiprc; /* Don't process the ~/.telnetrc file */extern int eight; /* use eight bit mode (binary in and/or out */extern int flushout; /* flush output */extern int connected; /* Are we connected to the other side? */extern int globalmode; /* Mode tty should be in */extern int In3270; /* Are we in 3270 mode? */extern int telnetport; /* Are we connected to the telnet port? */extern int localflow; /* Flow control handled locally */extern int localchars; /* we recognize interrupt/quit */extern int donelclchars; /* the user has set "localchars" */extern int showoptions;extern int crlf; /* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */extern int autoflush; /* flush output when interrupting? */extern int autosynch; /* send interrupt characters with SYNCH? */extern int SYNCHing; /* Is the stream in telnet SYNCH mode? */extern int donebinarytoggle; /* the user has put us in binary */extern int dontlecho; /* do we suppress local echoing right now? */extern int crmod;//extern int netdata; /* Print out network data flow *///extern int prettydump; /* Print "netdata" output in user readable format */extern int debug; /* Debug level */#ifdef TN3270extern int cursesdata; /* Print out curses data flow */#endif /* unix and TN3270 */extern cc_t escapechar; /* Escape to command mode */extern cc_t rlogin; /* Rlogin mode escape character */#ifdef KLUDGELINEMODEextern cc_t echoc; /* Toggle local echoing */#endifextern char *prompt; /* Prompt for command. */extern char doopt[];extern char dont[];extern char will[];extern char wont[];extern char options[]; /* All the little options */extern char *hostname; /* Who are we connected to? *//* * We keep track of each side of the option negotiation. */#define MY_STATE_WILL 0x01#define MY_WANT_STATE_WILL 0x02#define MY_STATE_DO 0x04#define MY_WANT_STATE_DO 0x08/* * Macros to check the current state of things */#define my_state_is_do(opt) (options[opt]&MY_STATE_DO)#define my_state_is_will(opt) (options[opt]&MY_STATE_WILL)#define my_want_state_is_do(opt) (options[opt]&MY_WANT_STATE_DO)#define my_want_state_is_will(opt) (options[opt]&MY_WANT_STATE_WILL)#define my_state_is_dont(opt) (!my_state_is_do(opt))#define my_state_is_wont(opt) (!my_state_is_will(opt))#define my_want_state_is_dont(opt) (!my_want_state_is_do(opt))#define my_want_state_is_wont(opt) (!my_want_state_is_will(opt))#define set_my_state_do(opt) {options[opt] |= MY_STATE_DO;}#define set_my_state_will(opt) {options[opt] |= MY_STATE_WILL;}#define set_my_want_state_do(opt) {options[opt] |= MY_WANT_STATE_DO;}#define set_my_want_state_will(opt) {options[opt] |= MY_WANT_STATE_WILL;}#define set_my_state_dont(opt) {options[opt] &= ~MY_STATE_DO;}#define set_my_state_wont(opt) {options[opt] &= ~MY_STATE_WILL;}#define set_my_want_state_dont(opt) {options[opt] &= ~MY_WANT_STATE_DO;}#define set_my_want_state_wont(opt) {options[opt] &= ~MY_WANT_STATE_WILL;}/* * Make everything symmetric */#define HIS_STATE_WILL MY_STATE_DO#define HIS_WANT_STATE_WILL MY_WANT_STATE_DO#define HIS_STATE_DO MY_STATE_WILL#define HIS_WANT_STATE_DO MY_WANT_STATE_WILL#define his_state_is_do my_state_is_will#define his_state_is_will my_state_is_do#define his_want_state_is_do my_want_state_is_will#define his_want_state_is_will my_want_state_is_do#define his_state_is_dont my_state_is_wont#define his_state_is_wont my_state_is_dont#define his_want_state_is_dont my_want_state_is_wont#define his_want_state_is_wont my_want_state_is_dont#define set_his_state_do set_my_state_will#define set_his_state_will set_my_state_do#define set_his_want_state_do set_my_want_state_will#define set_his_want_state_will set_my_want_state_do#define set_his_state_dont set_my_state_wont#define set_his_state_wont set_my_state_dont#define set_his_want_state_dont set_my_want_state_wont#define set_his_want_state_wont set_my_want_state_dontextern FILE *NetTrace; /* Where debugging output goes */extern char NetTraceFile[]; /* Name of file where debugging output goes */void SetNetTrace(const char *); /* Function to change where debugging goes */extern sigjmp_buf peerdied;extern sigjmp_buf toplevel; /* For error conditions. */void command(int, const char *, int);void Dump (int, char *, int);void init_3270 (void);void printoption(const char *, int, int);void printsub (int, unsigned char *, int);void sendnaws (void);void setconnmode(int);void setcommandmode (void);void setneturg (void);void sys_telnet_init (void);void telnet(const char *);void tel_enter_binary(int);void TerminalFlushOutput(void);void TerminalNewMode(int);void TerminalRestoreState(void);void TerminalSaveState(void);void tninit(void);void upcase(char *);void willoption(int);void wontoption(int);void lm_will(unsigned char *, int);void lm_wont(unsigned char *, int);void lm_do(unsigned char *, int);void lm_dont(unsigned char *, int);void lm_mode(unsigned char *, int, int);void slc_init(void);void slcstate(void);void slc_mode_export(void);void slc_mode_import(int);void slc_import(int);void slc_export(void);void slc(unsigned char *, int);void slc_check(void);void slc_start_reply(void);void slc_add_reply(int, int, int);void slc_end_reply(void);int slc_update(void);void env_opt(unsigned char *, int);void env_opt_start(void);void env_opt_start_info(void);void env_opt_add(const char *);void env_opt_end(int);int get_status(const char *, const char *);int dosynch(void);cc_t *tcval(int);//#if 0extern struct termios new_tc;#define termEofChar new_tc.c_cc[VEOF]#define termEraseChar new_tc.c_cc[VERASE]#define termIntChar new_tc.c_cc[VINTR]#define termKillChar new_tc.c_cc[VKILL]#define termQuitChar new_tc.c_cc[VQUIT]#ifndef VSUSPextern cc_t termSuspChar;#else#define termSuspChar new_tc.c_cc[VSUSP]#endif#if defined(VFLUSHO) && !defined(VDISCARD)#define VDISCARD VFLUSHO#endif#ifndef VDISCARDextern cc_t termFlushChar;#else#define termFlushChar new_tc.c_cc[VDISCARD]#endif#ifndef VWERASEextern cc_t termWerasChar;#else#define termWerasChar new_tc.c_cc[VWERASE]#endif#ifndef VREPRINTextern cc_t termRprntChar;#else#define termRprntChar new_tc.c_cc[VREPRINT]#endif#ifndef VLNEXTextern cc_t termLiteralNextChar;#else#define termLiteralNextChar new_tc.c_cc[VLNEXT]#endif#ifndef VSTARTextern cc_t termStartChar;#else#define termStartChar new_tc.c_cc[VSTART]#endif#ifndef VSTOPextern cc_t termStopChar;#else#define termStopChar new_tc.c_cc[VSTOP]#endif#ifndef VEOLextern cc_t termForw1Char;#else#define termForw1Char new_tc.c_cc[VEOL]#endif#ifndef VEOL2extern cc_t termForw2Char;#else#define termForw2Char new_tc.c_cc[VEOL]#endif#ifndef VSTATUSextern cc_t termAytChar;#else#define termAytChar new_tc.c_cc[VSTATUS]#endif//#endif /* 0 *///#if 0#if !defined(CRAY) || defined(__STDC__)#define termEofCharp &termEofChar#define termEraseCharp &termEraseChar#define termIntCharp &termIntChar#define termKillCharp &termKillChar#define termQuitCharp &termQuitChar#define termSuspCharp &termSuspChar#define termFlushCharp &termFlushChar#define termWerasCharp &termWerasChar#define termRprntCharp &termRprntChar#define termLiteralNextCharp &termLiteralNextChar#define termStartCharp &termStartChar#define termStopCharp &termStopChar#define termForw1Charp &termForw1Char#define termForw2Charp &termForw2Char#define termAytCharp &termAytChar#else /* Work around a compiler bug */#define termEofCharp 0#define termEraseCharp 0#define termIntCharp 0#define termKillCharp 0#define termQuitCharp 0#define termSuspCharp 0#define termFlushCharp 0#define termWerasCharp 0#define termRprntCharp 0#define termLiteralNextCharp 0#define termStartCharp 0#define termStopCharp 0#define termForw1Charp 0#define termForw2Charp 0#define termAytCharp 0#endif//#endif /* 0 *//* Ring buffer structures which are shared */extern ringbuf netoring;extern ringbuf netiring;extern ringbuf ttyoring;extern ringbuf ttyiring;/* Tn3270 section */#if defined(TN3270)extern int HaveInput; /* Whether an asynchronous I/O indication came in */extern int noasynchtty; /* Don't do signals on I/O (SIGURG, SIGIO) */extern int noasynchnet; /* Don't do signals on I/O (SIGURG, SIGIO) */extern int sigiocount; /* Count of SIGIO receptions */extern int shell_active; /* Subshell is active */extern char *Ibackp; /* Oldest byte of 3270 data */extern char Ibuf[]; /* 3270 buffer */extern char *Ifrontp; /* Where next 3270 byte goes */extern char tline[];extern char *transcom; /* Transparent command */void settranscom(int, char**);int shell(int, char**);void inputAvailable(void);#endif /* defined(TN3270) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -