📄 ckuusr.c
字号:
"ok", 1, 0, "yes", 1, 0};int nyesno = (sizeof(yesno) / sizeof(struct keytab));#endif /* NOFRILLS */#endif /* NOSPL *//* Parameter keyword table */ struct keytab prmtab[] = { "attributes", XYATTR, 0, "b", XYBACK, CM_INV|CM_ABR, "ba", XYBACK, CM_INV|CM_ABR, "background", XYBACK, 0, "baud", XYSPEE, CM_INV, "block-check", XYCHKT, 0,#ifdef DYNAMIC "buffers", XYBUF, 0,#endif /* DYNAMIC */#ifndef MAC "carrier", XYCARR, 0,#endif /* MAC */#ifndef NOSPL "case", XYCASE, 0,#endif /* NOSPL */ "command", XYCMD, 0,#ifndef NOSPL "count", XYCOUN, 0,#endif /* NOSPL */ "d", XYDELA, CM_INV|CM_ABR, "de", XYDELA, CM_INV|CM_ABR, "debug", XYDEBU, CM_INV,#ifdef VMS "default", XYDFLT, 0,#else#ifndef MAC "default", XYDFLT, CM_INV,#endif /* MAC */#endif /* VMS */ "delay", XYDELA, 0,#ifndef NODIAL "dial", XYDIAL, 0,#endif /* NODIAL */ "duplex", XYDUPL, 0, "escape-character", XYESC, 0, "file", XYFILE, 0, "flow-control", XYFLOW, 0, "handshake", XYHAND, 0,#ifdef NETCONN "host", XYHOST, 0,#endif /* NETCONN */ "incomplete", XYIFD, CM_INV,#ifndef NOSPL "i", XYINPU, CM_INV|CM_ABR, "in", XYINPU, CM_INV|CM_ABR, "input", XYINPU, 0,#ifndef MAC#ifndef NOSETKEY "key", XYKEY, 0,#endif /* NOSETKEY */#endif /* MAC */#endif /* NOSPL */ "l", XYLINE, CM_INV|CM_ABR,#ifndef NOCSETS "language", XYLANG, 0,#endif /* NOCSETS */ "line", XYLINE, 0, "local-echo", XYLCLE, CM_INV,#ifndef NOSPL "macro", XYMACR, 0,#endif /* NOSPL */#ifdef COMMENT#ifdef VMS "messages", XYMSGS, 0,#endif /* VMS */#endif /* COMMENT */#ifndef NODIAL "modem-dialer", XYMODM, 0,#endif#ifdef NETCONN "network", XYNET, 0,#endif /* NETCONN */#ifdef SUNX25 "pad", XYPAD, 0,#endif /* SUNX25 */ "parity", XYPARI, 0, "port", XYLINE, CM_INV,#ifndef NOFRILLS "prompt", XYPROM, 0,#endif /* NOFRILLS */ "quiet", XYQUIE, 0, "receive", XYRECV, 0, "retry-limit", XYRETR, 0,#ifndef NOSCRIPT "script", XYSCRI, 0,#endif /* NOSCRIPT */ "send", XYSEND, 0,#ifndef NOSERVER "server", XYSERV, 0,#endif /* NOSERVER */#ifdef UNIX "session-log", XYSESS, 0,#endif /* UNIX */ "speed", XYSPEE, 0,#ifndef NOJC "suspend", XYSUSP, 0,#endif /* NOJC */ "take", XYTAKE, 0,#ifdef TNCODE "telnet", XYTEL, 0,#endif /* TNCODE */ "terminal", XYTERM, 0, "transfer", XYXFER, 0,#ifndef NOXMIT "transmit", XYXMIT, 0,#endif /* NOXMIT */#ifndef NOCSETS "unknown-char-set", XYUNCS, 0,#endif /* NOCSETS */ "window-size", XYWIND, 0#ifdef UNIX, "wildcard-expansion", XYWILD, 0#endif /* UNIX */#ifdef SUNX25, "x.25", XYX25, 0, "x25", XYX25, CM_INV#endif /* SUNX25 */#ifndef NOCSETS, "xfer", XYXFER, CM_INV#endif /* NOCSETS */#ifndef NOXMIT, "xmit", XYXMIT, CM_INV#endif /* NOXMIT */};int nprm = (sizeof(prmtab) / sizeof(struct keytab)); /* How many parameters */ /* Table of networks */#ifdef NETCONNstruct keytab netcmd[] = {#ifdef DECNET "decnet", NET_DEC, 0,#endif /* DECNET */#ifdef NPIPE "named-pipe", NET_PIPE, 0,#endif /* NPIPE */#ifdef TCPSOCKET "tcp/ip", NET_TCPB, 0#endif /* TCPSOCKET */#ifdef SUNX25, "x", NET_SX25, CM_INV|CM_ABR, "x.25", NET_SX25, 0, "x25", NET_SX25, CM_INV#endif /* SUNX25 */};int nnets = (sizeof(netcmd) / sizeof(struct keytab)); /* How many networks */#endif /* NETCONN *//* Remote Command Table */ struct keytab remcmd[] = { "cd", XZCWD, 0, "cwd", XZCWD, CM_INV, "delete", XZDEL, 0, "directory", XZDIR, 0, "help", XZHLP, 0,#ifndef NOPUSH "host", XZHOS, 0,#endif /* NOPUSH */#ifndef NOFRILLS "kermit", XZKER, 0, "login", XZLGI, 0, "logout", XZLGO, 0, "print", XZPRI, 0,#endif /* NOFRILLS */ "set", XZSET, 0, "space", XZSPA, 0#ifndef NOFRILLS, "type", XZTYP, 0, "who", XZWHO, 0#endif /* NOFRILLS */};int nrmt = (sizeof(remcmd) / sizeof(struct keytab)); struct keytab logtab[] = {#ifdef DEBUG "debugging", LOGD, 0,#endif /* DEBUG */ "packets", LOGP, 0, "session", LOGS, 0#ifdef TLOG, "transactions", LOGT, 0#endif /* TLOG */};int nlog = (sizeof(logtab) / sizeof(struct keytab)); struct keytab writab[] = {#ifndef NOSPL "append-file", LOGW, CM_INV,#endif /* NOSPL */ "debug-log", LOGD, 0, "error", LOGE, 0,#ifndef NOSPL "file", LOGW, 0,#endif /* NOSPL */ "packet-log", LOGP, 0, "screen", LOGX, 0, "session-log", LOGS, 0, "sys$output", LOGX, CM_INV, "transaction-log", LOGT, 0};int nwri = (sizeof(writab) / sizeof(struct keytab));#define CLR_DEV 1#define CLR_INP 2static struct keytab clrtab[] = { /* Keywords for CLEAR command */#ifndef NOSPL "both", CLR_DEV|CLR_INP, 0,#endif /* NOSPL */ "device-buffer", CLR_DEV, 0,#ifndef NOSPL "input-buffer", CLR_INP, 0#endif /* NOSPL */};int nclear = (sizeof(clrtab) / sizeof(struct keytab));struct keytab clstab[] = { /* Keywords for CLOSE command */#ifndef NOSPL "append-file", LOGW, CM_INV,#endif /* NOSPL */#ifdef DEBUG "debug-log", LOGD, 0,#endif /* DEBUG */ "packet-log", LOGP, 0,#ifndef NOSPL "read-file", LOGR, 0,#endif /* NOSPL */ "session-log", LOGS, 0#ifdef TLOG, "transaction-log", LOGT, 0#endif /* TLOG */#ifndef NOSPL, "write-file", LOGW, 0#endif /* NOSPL */};int ncls = (sizeof(clstab) / sizeof(struct keytab));/* SHOW command arguments */ struct keytab shotab[] = {#ifndef NOSPL "arguments", SHARG, 0, "arrays", SHARR, 0,#endif /* NOSPL */ "attributes", SHATT, 0, "character-sets", SHCSE, 0, "communications", SHCOM, 0,#ifndef NOSPL "count", SHCOU, 0,#endif /* NOSPL */#ifdef VMS "default", SHDFLT, 0,#else "default", SHDFLT, CM_INV,#endif /* VMS */#ifndef NODIAL "dial", SHDIA, 0,#endif /* NODIAL */ "escape", SHESC, 0, "features", SHFEA, 0, "file", SHFIL, 0,#ifndef NOSPL "functions", SHFUN, 0, "globals", SHVAR, 0,#endif /* NOSPL */#ifndef NOSETKEY "key", SHKEY, 0,#endif /* NOSETKEY */#ifdef VMS "labeled-file-info", SHLBL, 0,#endif /* VMS */#ifndef NOCSETS "languages", SHLNG, 0,#endif /* NOCSETS */#ifndef NOSPL "macros", SHMAC, 0,#endif /* NOSPL */ "modem-signals", SHMOD, 0, "network", SHNET, 0,#ifdef SUNX25 "pad", SHPAD, 0,#endif /* SUNX25 */ "parameters", SHPAR, CM_INV, "protocol", SHPRO, 0,#ifndef NOSPL "scripts", SHSCR, 0,#endif /* NOSPL */#ifndef NOSERVER "server", SHSER, 0,#endif /* NOSERVER */ "status", SHSTA, 0,#ifdef MAC "stack", SHSTK, 0, /* debugging */#endif /* MAC */ "terminal", SHTER, 0#ifndef NOXMIT, "transmit", SHXMI, 0#endif /* NOXMIT */#ifndef NOSPL, "variables", SHBUI, 0#endif /* NOSPL */#ifndef NOFRILLS, "versions", SHVER, 0#endif /* NOFRILLS */#ifndef NOXMIT, "xmit", SHXMI, CM_INV#endif /* NOXMIT */};int nsho = (sizeof(shotab) / sizeof(struct keytab));#ifdef SUNX25struct keytab padtab[] = { /* PAD commands */ "clear", XYPADL, 0, "interrupt", XYPADI, 0, "reset", XYPADR, 0, "status", XYPADS, 0};int npadc = (sizeof(padtab) / sizeof(struct keytab));#endif /* SUNX25 */struct keytab enatab[] = { /* ENABLE commands */ "all", EN_ALL, 0,#ifndef datageneral "bye", EN_BYE, 0,#endif /* datageneral */ "cd", EN_CWD, 0, "cwd", EN_CWD, CM_INV, "delete", EN_DEL, 0, "directory", EN_DIR, 0, "finish", EN_FIN, 0, "get", EN_GET, 0, "host", EN_HOS, 0, "send", EN_SEN, 0, "set", EN_SET, 0, "space", EN_SPA, 0, "type", EN_TYP, 0, "who", EN_WHO, 0};int nena = (sizeof(enatab) / sizeof(struct keytab));#ifndef NOSPL#ifdef COMMENTstruct mtab mactab[MAC_MAX] = { /* Preinitialized macro table */ NULL, NULL, 0};#elsestruct mtab *mactab; /* Dynamically allocated macro table */#endif /* COMMENT */int nmac = 0;struct keytab mackey[MAC_MAX]; /* Macro names as command keywords */#endif /* NOSPL *//* Forward declarations of functions */_PROTOTYP (int doask, ( int ) );_PROTOTYP (int dodef, ( int ) );_PROTOTYP (int dodel, ( void ) );_PROTOTYP (int dodial, ( int ) );_PROTOTYP (int dodir, ( void ) );_PROTOTYP (int doelse, ( void ) );_PROTOTYP (int dofor, ( void ) );_PROTOTYP (int dogta, ( int ) );_PROTOTYP (int doincr, ( int ) );_PROTOTYP (int dopaus, ( int ) );_PROTOTYP (int doping, ( void ) );_PROTOTYP (int dorenam, ( void ) );#ifdef TCPSOCKETintdoping() { char *p; int x; if (network) /* If we have a current connection */ strcpy(line,ttname); /* get the host name */ else *line = '\0'; /* as default host to be pinged. */ for (p = line; *p; p++) /* Remove ":service" from end. */ if (*p == ':') { *p = '\0'; break; } if ((x = cmtxt("IP host name or number", line, &s, xxstring)) < 0) return(x);/* Construct PING command */#ifdef VMS#ifdef MULTINET /* TGV MultiNet */ sprintf(line,"multinet ping %s /num=1",s);#else sprintf(line,"ping %s 56 1",s); /* Other VMS TCP/IP's */#endif /* MULTINET */#else /* Not VMS */ sprintf(line,"ping %s",s);#endif /* VMS */ conres(); /* Make console normal */#ifdef DEC_TCPIP printf("\n"); /* Prevent prompt-stomping */#endif /* DEC_TCPIP */ x = zshcmd(line); concb((char)escape); return(success = 1); /* We don't know the status */}#endif /* TCPSOCKET *//* D O C M D -- Do a command */ /* Returns: -2: user typed an illegal command -1: reparse needed 0: parse was successful (even tho command may have failed).*/ intdocmd(cx) int cx; { debug(F101,"docmd entry, cx","",cx);/* Massive switch() broken up into many smaller ones, for the benefit of compilers that run out of space when trying to handle large switch statements.*/ switch (cx) { case -4: /* EOF */#ifdef OSK if (msgflg) printf("\n");#else if (msgflg) printf("\r\n");#endif /* OSK */ doexit(GOOD_EXIT,xitsta); case -3: /* Null command */ return(0); case -9: /* Like -2, but errmsg already done */ case -1: /* Reparse needed */ return(cx); case -6: /* Special */ case -2: /* Error, maybe */#ifndef NOSPL/* Maybe they typed a macro name. Let's look it up and see.*/ if (cx == -6) /* If they typed CR */ strcat(cmdbuf,"\015"); /* add it back to command buffer. */ if (ifcmd[cmdlvl] == 2) /* Watch out for IF commands. */ ifcmd[cmdlvl]--; repars = 1; /* Force reparse */ cmres(); cx = XXDO; /* Try DO command */#else return(cx);#endif /* NOSPL */ default: break; } #ifndef NOSPL/* Copy macro args from/to two levels up, used internally by _floop et al. */ if (cx == XXGTA || cx == XXPTA) { /* _GETARGS, _PUTARGS */ int x; debug(F101,"docmd XXGTA","",XXGTA); debug(F101,"docmd cx","",cx); debug(F101,"docmd XXGTA maclvl","",maclvl); x = dogta(cx); debug(F101,"docmd dogta returns","",x); debug(F101,"docmd dogta maclvl","",maclvl); return(x); }#endif /* NOSPL */#ifndef NOSPL/* ASK, ASKQ, READ */ if (cx == XXASK || cx == XXASKQ || cx == XXREA) { return(doask(cx)); }#endif /* NOSPL */#ifndef NOFRILLS if (cx == XXBUG) { /* BUG */ if ((x = cmcfm()) < 0) return(x); return(dobug()); }#endif /* NOFRILLS */ if (cx == XXBYE) { /* BYE */ if ((x = cmcfm()) < 0) return(x); sstate = setgen('L',"","",""); if (local) ttflui(); /* If local, flush tty input buffer */ return(0); } #ifndef NOFRILLS if (cx == XXCLE) { /* CLEAR */ if ((x = cmkey(clrtab,nclear,"buffer(s) to clear",#ifdef NOSPL "device-buffer"#else "both"#endif /* NOSPL */ ,xxstring)) < 0) return(x); if ((y = cmcfm()) < 0) return(y); /* Clear device input buffer if requested */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -