📄 ckuusr.c
字号:
#ifdef DCMDBUFextern char *cmdbuf; /* Command buffers */extern char *atmbuf;extern char *line; /* Character buffer for anything */extern char *tmpbuf; /* Short temporary string buffer */extern int *ifcmd;extern int *intime;extern int *inpcas;#elseextern char cmdbuf[]; /* Command buffers */extern char atmbuf[];extern char line[]; /* Character buffer for anything */extern char tmpbuf[]; /* Temporary buffer */extern int ifcmd[];extern int intime[];extern int inpcas[];#endif /* DCMDBUF */#ifndef NOSPLextern char * prstring[];#endif /* NOSPL */char *lp; /* Pointer to line buffer */#ifndef NOSPLint unkmacro = 0; /* Flag for in ON_UNKNOWN_COMMAND */int oldeval = 0;char evalbuf[33]; /* EVALUATE result */extern char * inpbuf; /* Buffer for INPUT and REINPUT */char *inpbp; /* And pointer to same */extern char lblbuf[]; /* Buffer for labels */int m_found; /* MINPUT result */int i_active = 0; /* INPUT command is active */char *ms[MINPMAX]; /* Pointers to MINPUT strings */static int mp[MINPMAX]; /* and flags */extern int fndiags, fnerror, fnsuccess; /* Function diagnostics */#ifndef NOSEXPchar * lastsexp = NULL; /* S-Expressions */char * sexpval = NULL;int sexpecho = SET_AUTO;#endif /* NOSEXP */#endif /* NOSPL */char psave[PROMPTL] = { NUL }; /* For saving & restoring prompt */extern int success; /* Command success/failure flag */extern int cmdlvl; /* Current position in command stack */#ifndef NOSPLint /* SET INPUT parameters. *//* Note, INPUT TIMEOUT, intime[], is on the command-level stack. */ inbufsize = 0, /* INPUT buffer size */ indef = 1, /* default timeout, seconds */ inecho = 1, /* 1 = echo on */ inautodl = 0, /* INPUT autodownload */ inintr = 1, /* INPUT interrupion allowed */ innomatch = 0, /* INPUT /NOMATCH */ insilence = 0; /* 0 = no silence constraint */#ifdef CKFLOATCKFLOAT inscale = 1.0; /* Timeout scale factor */#endif /* CKFLOAT */#ifdef OS2int interm = 1; /* Terminal emulator displays input */#endif /* OS2 */int maclvl = -1; /* Macro nesting level */int mecho = 0; /* Macro echo, 0 = don't */char varnam[6]; /* For variable names */extern int macargc[]; /* ARGC from macro invocation */extern char *m_arg[MACLEVEL][NARGS]; /* Stack of macro arguments */extern char *mrval[];extern char **a_ptr[]; /* Array pointers */extern int a_dim[]; /* Array dimensions */extern int a_link[];#ifdef DCMDBUFextern struct cmdptr *cmdstk; /* The command stack itself */#elseextern struct cmdptr cmdstk[]; /* The command stack itself */#endif /* DCMDBUF */long ck_alarm = 0; /* SET ALARM value */char alrm_date[24] = { ' ',' ',' ',' ',' ',' ',' ',' ',' ' };char alrm_time[24] = { ' ',' ',' ',' ',' ',' ',' ' };#define INPSW_NOM 1struct keytab inputsw[] = { { "/nomatch", INPSW_NOM, 0 }};static int ninputsw = sizeof(inputsw)/sizeof(struct keytab);#endif /* NOSPL */static int x, y, z = 0; /* Local workers */static char *s;#ifdef CK_MINPUTstatic char c1chars[] = { /* C1 control chars escept NUL */ 001,002,003,004,005,006,007,010,011,012,013,014,015,016,017,020, 021,022,023,024,025,026,027,030,031,032,033,034,035,036,037};#endif /* CK_MINPUT */#define xsystem(s) zsyscmd(s)/* Top-Level Interactive Command Keyword Table *//* Keywords must be in lowercase and in alphabetical order. */struct keytab cmdtab[] = {#ifndef NOPUSH { "!", XXSHE, CM_INV|CM_PSH }, /* Shell escape */#else { "!", XXNOTAV, CM_INV|CM_PSH },#endif /* NOPUSH */ { "#", XXCOM, CM_INV }, /* Comment */#ifndef NOSPL { "(", XXSEXP,CM_INV }, /* S-Expression */ { ".", XXDEF, CM_INV }, /* Assignment */ { ":", XXLBL, CM_INV }, /* Label */#endif /* NOSPL */#ifdef CK_REDIR#ifndef NOPUSH { "<", XXFUN, CM_INV|CM_PSH }, /* REDIRECT */#else { "<", XXNOTAV, CM_INV|CM_PSH }, /* REDIRECT */#endif /* NOPUSH */#endif /* CK_REDIR */#ifndef NOPUSH { "@", XXSHE, CM_INV|CM_PSH }, /* DCL escape */#else { "@", XXNOTAV, CM_INV|CM_PSH }, /* DCL escape */#endif /* NOPUSH */#ifdef CK_RECALL { "^", XXREDO,CM_INV|CM_NOR }, /* Synonym for REDO */#endif /* CK_RECALL */#ifndef NOSPL { "_asg", XXASX, CM_INV }, /* Used internally by FOR, etc */ { "_assign", XXASX, CM_INV }, /* Used internally by FOR, etc */ { "_decrement", XX_DECR, CM_INV }, { "_define", XXDFX, CM_INV }, /* Used internally by FOR, etc */ { "_evaluate", XX_EVAL, CM_INV }, { "_forward", XXXFWD, CM_INV }, /* Used internally by SWITCH */ { "_getargs", XXGTA, CM_INV }, /* Used internally by FOR, etc */ { "_increment", XX_INCR, CM_INV }, { "_putargs", XXPTA, CM_INV }, /* Used internally by FOR, etc */ { "_undefine", XXUNDFX, CM_INV },#endif /* NOSPL */ { "about", XXVER, CM_INV }, /* Synonym for VERSION */#ifndef NOSPL#ifdef NEWFTP { "account", XXACCT, CM_INV }, /* (FTP) Account */#endif /* NEWFTP */#ifdef ADDCMD { "add", XXADD, 0 }, /* ADD */#endif /* ADDCMD */#ifndef NODIAL { "answer", XXANSW, CM_LOC }, /* ANSWER the phone */#else { "answer", XXNOTAV, CM_INV|CM_LOC }, /* ANSWER the phone */#endif /* NODIAL */ { "apc", XXAPC, 0 }, /* Application Program Command */#ifndef NOSPL { "array", XXARRAY, 0 }, /* Array operations */#endif /* NOSPL */ { "ascii", XXASC, CM_INV }, /* == SET FILE TYPE TEXT */ { "asg", XXASS, CM_INV }, /* Invisible synonym for ASSIGN */ { "ask", XXASK, 0 }, /* ASK for text, assign to variable */ { "askq", XXASKQ,0 }, /* ASK quietly (no echo) */#ifndef NOSPL { "ass", XXASS, CM_INV|CM_ABR }, /* ASSIGN */ { "assert", XXASSER, CM_INV }, /* ASSERT */ { "assign", XXASS, 0 }, /* ASSIGN */#endif /* NOSPL */#ifndef NOXFER#ifndef NOCSETS { "associate", XXASSOC, 0 }, /* ASSOCIATE */#else { "associate", XXNOTAV, CM_INV }, /* ASSOCIATE */#endif /* NOCSETS */#endif /* NOXFER */#ifdef CK_KERBEROS#ifdef CK_AUTHENTICATION { "authenticate",XXAUTH, 0 }, /* Authentication */#else { "authenticate",XXAUTH, CM_INV },#endif /* CK_AUTHENTICATION */#endif /* CK_KERBEROS */#endif /* NOSPL */#ifndef NOFRILLS { "back", XXBACK, 0 }, /* BACK to previous directory */#else { "back", XXNOTAV,CM_INV },#endif /* NOFRILLS */ { "beep", XXBEEP,CM_INV }, /* BEEP */#ifndef NOXFER { "binary", XXBIN, CM_INV }, /* == SET FILE TYPE BINARY */#endif /* NOXFER */#ifndef NOFRILLS { "bug", XXBUG, CM_INV }, /* BUG report instructions */#else { "bug", XXNOTAV, CM_INV },#endif /* NOFRILLS */#ifdef BROWSER { "browse", XXBROWS, CM_PSH|CM_LOC }, /* BROWSE (start browser) */#else { "browse", XXNOTAV, CM_INV|CM_PSH|CM_LOC },#endif /* BROWSER */#ifndef NOXFER { "bye", XXBYE, 0 }, /* BYE to remote server */#endif /* NOXFER */#ifndef NOLOCAL { "c", XXCON, CM_INV|CM_ABR|CM_LOC }, /* (CONNECT) */#endif /* NOLOCAL */#ifndef NOFRILLS { "cat", XXCAT, CM_INV }, /* Invisible synonym for TYPE */#endif /* NOFRILLS */#ifndef NOSPL#ifndef NOXFER { "cautious", XXCAU, CM_INV },#endif /* NOXFER */#endif /* NOSPL */ { "cd", XXCWD, 0 }, /* Change Directory */ { "cdup", XXCDUP, CM_INV }, /* Change Directory Up */#ifndef NOXFER#ifdef PIPESEND { "cget", XXCGET, CM_INV|CM_PSH }, /* CGET */#else { "cget", XXNOTAV, CM_INV|CM_PSH }, /* CGET */#endif /* PIPESEND */#endif /* NOXFER */ { "ch", XXCHK, CM_INV|CM_ABR }, { "check", XXCHK, 0 }, /* CHECK for a feature */#ifdef CK_PERMS#ifdef UNIX { "chmod", XXCHMOD, 0 }, /* CHMOD */#else { "chmod", XXNOTAV, CM_INV },#endif /* UNIX */#else { "chmod", XXNOTAV, CM_INV },#endif /* CK_PERMS */#ifdef CKROOT { "chroot", XXCHRT, CM_INV }, /* CHROOT */#endif /* CKROOT */ { "ckermit", XXKERMI, CM_INV }, /* CKERMIT (like KERMIT) */ { "cl", XXCLO, CM_ABR|CM_INV },#ifndef NOFRILLS { "clear", XXCLE, 0 }, /* CLEAR input and/or device buffer */#else { "clear", XXNOTAV, CM_INV },#endif /* NOFRILLS */ { "close", XXCLO, 0 }, /* CLOSE a log or other file */ { "cls", XXCLS, CM_INV }, /* Clear Screen (CLS) */ { "comment", XXCOM, CM_INV }, /* Introduce a comment */#ifndef NOLOCAL { "connect", XXCON, CM_LOC }, /* Begin terminal connection */#else { "connect", XXNOTAV, CM_LOC },#endif /* NOLOCAL */ { "continue", XXCONT, CM_INV }, /* CONTINUE */#ifndef NOFRILLS#ifdef ZCOPY { "co", XXCPY, CM_INV|CM_ABR }, { "cop", XXCPY, CM_INV|CM_ABR }, { "copy", XXCPY, 0 }, /* COPY a file */#else { "copy", XXNOTAV, CM_INV },#endif /* ZCOPY */ { "copyright", XXCPR, CM_INV }, /* COPYRIGHT */#ifdef ZCOPY { "cp", XXCPY, CM_INV }, /* COPY a file */#endif /* ZCOPY */#ifndef NOLOCAL#ifndef OS2 { "cq", XXCQ, CM_INV|CM_LOC }, /* CQ (connect quietly) */#endif /* OS2 */#endif /* NOLOCAL */#ifndef NOXFER#ifdef PIPESEND { "creceive", XXCREC,CM_INV|CM_PSH }, /* RECEIVE to a command */ { "csend", XXCSEN,CM_INV|CM_PSH }, /* SEND from command */#else { "creceive", XXNOTAV,CM_INV|CM_PSH }, { "csend", XXNOTAV,CM_INV|CM_PSH },#endif /* PIPESEND */#endif /* NOXFER */#endif /* NOFRILLS */ { "cwd", XXCWD, CM_INV }, /* Traditional synonym for cd */#ifndef NOSPL { "date", XXDATE, 0 }, /* DATE */ { "dcl", XXDCL, CM_INV }, /* DECLARE an array (see ARRAY) */ { "debug", XXDEBUG, CM_INV }, { "declare", XXDCL, CM_INV }, /* DECLARE an array (see ARRAY) */ { "decrement", XXDEC, 0 }, /* DECREMENT a numeric variable */ { "define", XXDEF, 0 }, /* DEFINE a macro or variable */#else { "date", XXNOTAV, CM_INV }, { "dcl", XXNOTAV, CM_INV }, { "declare", XXNOTAV, CM_INV }, { "decrement", XXNOTAV, CM_INV }, { "define", XXNOTAV, CM_INV },#endif /* NOSPL */#ifndef NOFRILLS { "delete", XXDEL, 0 }, /* DELETE a file */#else { "delete", XXNOTAV, CM_INV },#endif /* NOFRILLS */#ifndef NODIAL { "dial", XXDIAL, CM_LOC }, /* DIAL a phone number */#else { "dial", XXNOTAV, CM_INV|CM_LOC },#endif /* NODIAL */#ifdef NT { "dialer", XXDIALER, CM_INV }, /* K95 Dialer */#endif /* NT */ { "directory", XXDIR, 0 }, /* DIRECTORY of files */#ifndef NOFRILLS#ifndef NOSERVER { "disable", XXDIS, 0 }, /* DISABLE a server function */#else { "disable", XXNOTAV, CM_INV },#endif /* NOSERVER */#endif /* NOFRILLS */#ifndef NOSPL { "do", XXDO, 0 }, /* DO (execute) a macro */#else { "do", XXNOTAV, CM_INV },#endif /* NOSPL */ { "e", XXEXI, CM_INV|CM_ABR },#ifndef NOFRILLS#ifndef NOXFER { "e-packet", XXERR, CM_INV }, /* Send an Error-Packet */#endif /* NOXFER */#endif /* NOFRILLS */ { "echo", XXECH, 0 }, /* ECHO text */#ifndef NOFRILLS#ifndef NOPUSH { "edit", XXEDIT, CM_PSH }, /* EDIT */#else { "edit", XXNOTAV, CM_INV|CM_PSH }, /* EDIT */#endif /* NOPUSH */#endif /* NOFRILLS */ { "eightbit", XXEIGHT, CM_INV }, /* EIGHTBIT */#ifndef NOSPL { "else", XXELS, CM_INV }, /* ELSE part of IF statement */#else { "else", XXNOTAV, CM_INV }, /* ELSE part of IF statement */#endif /* NOSPL */#ifndef NOSERVER#ifndef NOFRILLS { "enable", XXENA, 0 }, /* ENABLE a server function */#else { "enable", XXNOTAV, CM_INV },#endif /* NOFRILLS */#endif /* NOSERVER */#ifndef NOSPL { "end", XXEND, 0 }, /* END command file or macro */#else { "end", XXNOTAV, CM_INV },#endif /* NOSPL */ { "erase", XXDEL, CM_INV }, /* Synonym for DELETE */#ifndef NOSPL { "evaluate", XXEVAL, 0 }, /* EVALUATE */#else { "evaluate", XXNOTAV, CM_INV },#endif /* NOSPL */ { "ex", XXEXI, CM_INV|CM_ABR }, /* Let "ex" still be EXIT */#ifdef CKEXEC { "exec", XXEXEC, CM_INV|CM_LOC }, /* exec() */#else { "exec", XXNOTAV, CM_INV|CM_LOC },#endif /* CKEXEC */ { "exit", XXEXI, 0 }, /* EXIT from C-Kermit */ { "extended-options", XXXOPTS,CM_INV|CM_HLP }, /* Extended-Options */#ifdef OS2 { "extproc", XXCOM, CM_INV }, /* Dummy command for OS/2 */#endif /* OS2 */#ifndef NOXFER { "f", XXFIN, CM_INV|CM_ABR }, /* Invisible abbrev for FIN */#endif /* NOXFER */#ifndef NOSPL { "fail", XXFAIL, CM_INV }, /* FAIL */#ifndef NOXFER { "fast", XXFAST, CM_INV },#endif /* NOXFER */#ifdef CKCHANNELIO { "fclose", XXF_CL, CM_INV }, /* FCLOSE */ { "fcount", XXF_CO, CM_INV }, /* FCOUNT */ { "fflush", XXF_FL, CM_INV }, /* FFLUSH */#endif /* CKCHANNELIO */#ifndef NOXFER { "fi", XXFIN, CM_INV|CM_ABR }, /* FINISH */#endif /* NOXFER */#ifdef CKCHANNELIO { "file", XXFILE, 0 }, /* FILE */#endif /* CKCHANNELIO */#endif /* NOSPL */#ifndef NOXFER { "fin", XXFIN, CM_INV|CM_ABR }, /* FINISH */#endif /* NOXFER */#ifndef UNIXOROSK { "find", XXGREP, 0 }, /* FIND (grep) */#else { "find", XXGREP,CM_INV },#endif /* UNIXOROSK */#ifndef NOXFER { "finish", XXFIN, 0 }, /* FINISH */#endif /* NOXFER */#ifdef TCPSOCKET { "firewall", XXFIREW, CM_INV|CM_HLP },#endif /* TCPSOCKET */#ifdef CKCHANNELIO { "flist", XXF_LI, CM_INV }, /* FLIST */ { "fopen", XXF_OP, CM_INV }, /* FOPEN */#endif /* CKCHANNELIO */#ifndef NOSPL { "fo", XXFOR, CM_INV|CM_ABR }, /* Invisible abbrev for... */ { "for", XXFOR, 0 }, /* FOR loop */ { "forward", XXFWD, CM_INV }, /* FORWARD */#endif /* NOSPL */#ifndef NOFRILLS { "fot", XXDIR, CM_INV }, /* "fot" = "dir" (for Chris) */#endif /* NOFRILLS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -