⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ckuus5.c

📁 linux终端仿真程序
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "ckcsym.h"#ifndef NOICP/*  C K U U S 5 --  "User Interface" for C-Kermit, part 5  */ /*  Author: Frank da Cruz <fdc@columbia.edu>,  Columbia University Academic Information Systems, New York City.  Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New  York.  The C-Kermit software may not be, in whole or in part, licensed or  sold for profit as a software product itself, nor may it be included in or  distributed with commercial products or otherwise distributed by commercial  concerns to their clients or customers without written permission of the  Office of Kermit Development and Distribution, Columbia University.  This  copyright notice must not be removed, altered, or obscured.*//* Includes */#include "ckcdeb.h"#include "ckcasc.h"#include "ckcker.h"#include "ckuusr.h"#include "ckcnet.h"#ifndef NOCSETS#include "ckcxla.h"#endif /* NOCSETS */#ifdef MAC#include "ckmasm.h"#endif /* MAC */#ifdef OS2#include "ckoetc.h"#ifndef NT#define INCL_NOPM#define INCL_VIO /* Needed for ckocon.h */#include <os2.h>#else /* NT */#define APIRET ULONGextern int DialerHandle;extern int StartedFromDialer;#endif /* NT */#include "ckouni.h"#include "ckocon.h"#include "ckokey.h"#ifdef putchar#undef putchar#endif /* putchar */#define putchar(x) conoc(x)extern int cursor_save ;extern bool cursorena[] ;#endif /* OS2 *//* For formatted screens, "more?" prompting, etc. */#ifdef FT18#define isxdigit(c) isdigit(c)#endif /* FT18 */#ifdef STRATUS				/* Stratus Computer, Inc.  VOS */#ifdef putchar#undef putchar#endif /* putchar */#define putchar(x) conoc(x)#ifdef getchar#undef getchar#endif /* getchar */#define getchar(x) coninc(0)#endif /* STRATUS *//* External variables */extern int carrier, cdtimo, local, quiet, backgrd, bgset, sosi, suspend,  displa, binary, deblog, escape, xargs, flow, cmdmsk, bye_active,  duplex, ckxech, pktlog, seslog, tralog, what, protocol,  keep, warn, tlevel, cwdf, nfuncs, unkcs, msgflg, remfile, rempipe, remappd,  mdmtyp, zincnt, cmask, rcflag, success, xitsta, pflag, lf_opts, tnlm, tn_nlm,  xfrcan, xfrchr, xfrnum, xitwarn, debses, pktpaus, moving, autodl, xaskmore;extern int ngetpath, exitonclose;extern char * getpath[];#ifndef NOSERVER  extern char * x_user, * x_passwd, * x_acct;#endif /* NOSERVER */#ifndef NOSPLextern int cfilef, DeleteStartupFile;extern char cmdfil[];struct localvar * localhead[MACLEVEL];struct localvar * localtail = NULL;struct localvar * localnext = NULL;_PROTOTYP( static char gettok,   (void) );_PROTOTYP( static VOID factor,   (void) );_PROTOTYP( static VOID term,     (void) );_PROTOTYP( static VOID termp,    (void) );_PROTOTYP( static VOID exprp,    (void) );_PROTOTYP( static VOID expr,     (void) );_PROTOTYP( static VOID simple,   (void) );_PROTOTYP( static VOID simpler,  (void) );_PROTOTYP( static VOID simplest, (void) );_PROTOTYP( static long xparse,   (void) );#endif /* NOSPL */#ifdef MACchar * ckprompt = "Mac-Kermit>";	/* Default prompt for Macintosh */#else  /* Not MAC */#ifdef NOSPL#ifdef NTchar * ckprompt = "K-95> ";		/* Default prompt for Win32 */#elsechar * ckprompt = "C-Kermit>";#endif /* NT */#else  /* NOSPL */#ifdef NTchar * ckprompt = "[\\v(dir)] K-95> ";	/* Default prompt for Windows NT */#else#ifdef VMSchar * ckprompt = "\\v(dir) C-Kermit>";	/* Default prompt VMS */#elsechar * ckprompt = "[\\v(dir)] C-Kermit>";	/* Default prompt for others */#endif /* VMS */#endif /* NT */#endif /* NOSPL */#endif /* MAC */#ifndef CCHMAXPATH#define CCHMAXPATH 257#endif /* CCHMAXPATH */char inidir[CCHMAXPATH] = { NUL, NUL };	/* Directory INI file executed from */#ifdef TCPSOCKET extern int tn_b_nlm;			/* TELNET BINARY newline mode */extern int me_binary, u_binary;#endif /* TCPSOCKET */#ifndef NOKVERBSextern struct keytab kverbs[];		/* Table of \Kverbs */extern int nkverbs;			/* Number of \Kverbs */#endif /* NOKVERBS */#ifndef NOPUSHextern int nopush;#endif /* NOPUSH */#ifdef CK_RECALLextern int cm_recall;#endif /* CK_RECALL */extern char *ccntab[];extern char *printfile;extern int printpipe;#ifdef OS2_PROTOTYP (int os2getcp, (void) );_PROTOTYP (int os2getcplist, (int *, int) );#ifdef OS2MOUSEextern int tt_mouse;#endif /* OS2MOUSE */extern int tt_update, tt_updmode, tt_font, updmode;extern struct keytab termfont[];extern int ntermfont;extern unsigned char colornormal, colorunderline, colorstatus,    colorhelp, colorselect, colorborder, colorgraphic, colordebug,    colorreverse;extern int priority;extern struct keytab prtytab[];extern int nprty;char * cmdmac = NULL;#endif /* OS2 */#ifdef VMS_PROTOTYP (int zkermini, (char *, int, char *) );#endif /* VMS */#ifndef NOFRILLSextern int en_asg, en_cwd, en_cpy, en_del, en_dir, en_fin, en_bye, en_ret,  en_get, en_hos, en_que, en_ren, en_sen, en_set, en_spa, en_typ, en_who,  en_mai, en_pri;#endif /* NOFRILLS */extern long vernum;extern int srvtim, srvdis, inecho, insilence, inbufsize, nvars, verwho;extern char *protv, *fnsv, *cmdv, *userv, *ckxv, *ckzv, *ckzsys, *xlav, *cknetv, *clcmds;#ifdef OS2extern char *ckonetv;#ifdef CK_NETBIOSextern char *ckonbiv;#endif /* CK_NETBIOS */#ifdef OS2MOUSEextern char *ckomouv;#endif /* OS2MOUSE */#endif /* OS2 */extern char *connv, *dialv, *loginv, *nvlook();#ifndef NOSCRIPTextern int secho;#endif /* NOSCRIPT */#ifndef NODIALextern int nmdm, dirline;extern struct keytab mdmtab[];#endif /* NODIAL */#ifdef NETCONNextern int network, ttnproto;#endif /* NETCONN */#ifdef OS2/* SET TERMINAL items... */extern int tt_type, tt_arrow, tt_keypad, tt_wrap, tt_answer, tt_scrsize[];extern int tt_bell, tt_roll[], tt_ctstmo, tt_cursor, tt_pacing;extern char answerback[];  #ifdef COMMENTextern int tt_hide;#endif /* COMMENT */extern struct tt_info_rec tt_info[];	/* Indexed by terminal type */extern int max_tt;#endif /* OS2 */#ifdef CK_TTGWSIZ_PROTOTYP( int ttgwsiz, (void) );#endif /* CK_TTGWSIZ */_PROTOTYP( VOID shotrm, (void) );_PROTOTYP( VOID shofea, (void) );#ifdef OS2extern int tt_rows[], tt_cols[];#else /* OS2 */extern int tt_rows, tt_cols;#endif /* OS2 */int cmd_rows = 24, cmd_cols = 80;#ifdef CK_TMPDIRextern int f_tmpdir;			/* Directory changed temporarily */extern char savdir[];			/* Temporary directory */#endif /* CK_TMPDIR */#ifndef NOLOCALextern int tt_crd, tt_escape;#endif /* NOLOCAL */#ifndef NOCSETSextern int language, nfilc, tcsr, tcsl;extern struct keytab fcstab[];extern struct csinfo fcsinfo[];#ifndef MACextern struct keytab ttcstab[];#endif /* MAC */#endif /* NOCSETS */extern int atcapr,  atenci, atenco, atdati, atdato, atleni, atleno, atblki, atblko,  attypi, attypo, atsidi, atsido, atsysi, atsyso, atdisi, atdiso; #ifdef STRATUSextern int atfrmi, atfrmo, atcrei, atcreo, atacti, atacto;#endif /* STRATUS */extern long speed;extern char *DIRCMD, *PWDCMD, *DELCMD;#ifndef NOXMITextern int xmitf, xmitl, xmitp, xmitx, xmits, xmitw;extern char xmitbuf[];#endif /* NOXMIT */extern char **xargv, *versio, *ckxsys, *dftty, *cmarg, *lp;#ifdef DCMDBUFextern char *cmdbuf, *atmbuf;		/* Command buffers */#ifndef NOSPLextern char *savbuf;			/* Command buffers */#endif /* NOSPL */#elseextern char cmdbuf[], atmbuf[];		/* Command buffers */#ifndef NOSPLextern char savbuf[];			/* Command buffers */#endif /* NOSPL */#endif /* DCMDBUF */extern char toktab[], ttname[], psave[];extern CHAR sstate, feol;extern int cmflgs, techo, repars, ncmd;extern struct keytab cmdtab[];#ifndef NOSETKEYKEY *keymap;#ifndef OS2#define mapkey(x) keymap[x]#endif /* OS2 */MACRO *macrotab;_PROTOTYP( VOID shostrdef, (CHAR *) );#endif /* NOSETKEY */#ifndef NOSPLextern struct mtab *mactab;extern struct keytab vartab[], fnctab[];extern int cmdlvl, maclvl, nmac, mecho;#endif /* NOSPL */FILE *tfile[MAXTAKE];			/* TAKE file stack */char *tfnam[MAXTAKE];int tfline[MAXTAKE];#ifdef DCMDBUF				/* Initialization filespec */char *kermrc = NULL;#elsechar kermrcb[KERMRCL];char *kermrc = kermrcb;#endif /* DCMDBUF */int noherald = 0;int cm_retry = 1;			/* Command retry enabled */xx_strp xxstring = zzstring;#ifndef NOSPLextern long ck_alarm;extern char alrm_date[], alrm_time[];extern int query;			/* QUERY active *//* Local declarations */static int nulcmd = 0;			/* Flag for next cmd to be ignored *//* Definitions for predefined macros *//* First, the single-line macros, installed with addmac()... *//* IBM-LINEMODE macro */char *m_ibm = "set parity mark, set dupl half, set handsh xon, set flow none";/* FATAL macro */char *m_fat = "if def \\%1 echo \\%1, if not = \\v(local) 0 hangup, stop 1";#ifdef CK_SPEED#ifdef pdp11char *m_fast = "set win 3, set rec pack 1024, set prefix minimal";#else#ifdef BIGBUFOKchar *m_fast = "set win 20, set rec pack 4096, set prefix minimal";#elsechar *m_fast = "set win 4, set rec pack 2200, set prefix minimal";#endif /* BIGBUFOK */#endif /* pdp11 */#ifdef pdp11char *m_cautious = "set win 2, set rec pack 512, set prefixing cautious";#elsechar *m_cautious = "set win 4, set rec pack 1000, set prefixing cautious";#endif /* pdp11 */char *m_robust = "set win 1, set rec pack 90, set prefixing all";#else#ifdef BIGBUFOKchar *m_fast = "set win 20, set rec pack 4096";#elsechar *m_fast = "set win 4, set rec pack 2200";#endif /* BIGBUFOK */char *m_cautious = "set win 4, set rec pack 1000";char *m_robust = "set win 1, set rec pack 90";#endif /* CK_SPEED *//* Now the multiline macros, defined with addmmac()... *//* FOR macro */char *for_def[] = { "_assign _for\\v(cmdlevel) { _getargs,","define \\\\\\%1 \\feval(\\%2),:_..top,if \\%5 \\\\\\%1 \\%3 goto _..bot,","\\%6,:_..inc,incr \\\\\\%1 \\%4,goto _..top,:_..bot,_putargs},","def break goto _..bot, def continue goto _..inc,","do _for\\v(cmdlevel) \\%1 \\%2 \\%3 \\%4 { \\%5 },_assign _for\\v(cmdlevel)",""};/* WHILE macro */char *whil_def[] = { "_assign _whi\\v(cmdlevel) {_getargs,",":_..inc,\\%1,\\%2,goto _..inc,:_..bot,_putargs},","_def break goto _..bot, _def continue goto _..inc,","do _whi\\v(cmdlevel),_assign _whi\\v(cmdlevel)",""};/* SWITCH macro */char *sw_def[] = { "_assign _sw_\\v(cmdlevel) {_getargs,","_forward \\%1,\\%2,:_..bot,_putargs},_def break goto _..bot,","do _sw_\\v(cmdlevel),_assign _sw_\\v(cmdlevel)",""};/* XIF macro */char *xif_def[] = {"_assign _if\\v(cmdlevel) {_getargs,\\%1,_putargs},","do _if\\v(cmdlevel),_assign _if\\v(cmdlevel)",""};/*  Variables declared here for use by other ckuus*.c modules.  Space is allocated here to save room in ckuusr.c.*/#ifdef DCMDBUFstruct cmdptr *cmdstk;int *ifcmd, *count, *iftest, *intime, *inpcas, *takerr, *merror;#elsestruct cmdptr cmdstk[CMDSTKL];int ifcmd[CMDSTKL], count[CMDSTKL], iftest[CMDSTKL], intime[CMDSTKL],  inpcas[CMDSTKL], takerr[CMDSTKL], merror[CMDSTKL];#endif /* DCMDBUF */char *m_arg[MACLEVEL][NARGS];char *g_var[GVARS], *macp[MACLEVEL], *mrval[MACLEVEL];int macargc[MACLEVEL];char *macx[MACLEVEL];extern char varnam[];/* Dimension must be 'z' - ARRAYBASE + 1 */char **a_ptr[28];			/* Array pointers, for arrays a-z */int a_dim[28];				/* Dimensions for each array */char * inpbuf = NULL;			/* Buffer for INPUT and REINPUT */extern char * inpbp;			/* Global/static pointer to it  */char inchar[2] = { NUL, NUL };		/* Last character that was INPUT */int  incount = 0;			/* INPUT character count */extern int instatus;			/* INPUT status */static char * i_text[] = {		/* INPUT status text */    "success", "timeout", "interrupted", "internal error", "i/o error"};char lblbuf[LBLSIZ];			/* Buffer for labels */#elseint takerr[MAXTAKE];#endif /* NOSPL */int pacing = 0;				/* OUTPUT pacing */#ifdef DCMDBUFchar *line;				/* Character buffer for anything */char *tmpbuf;#elsechar line[LINBUFSIZ];char tmpbuf[TMPBUFSIZ];			/* Temporary buffer */#endif /* DCMDBUF */char *tp;				/* Temporary buffer pointer */#ifdef CK_APC				/* Application Program Command (APC) */int apcactive = APC_INACTIVE;int apcstatus = APC_OFF;		/* OFF by default everywhere */#ifdef DCMDBUFchar *apcbuf;#elsechar apcbuf[APCBUFLEN];#endif /* DCMDBUF */#endif /* CK_APC */extern char pktfil[],#ifdef DEBUG  debfil[],#endif /* DEBUG */#ifdef TLOG  trafil[],#endif /* TLOG */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -