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

📄 ckuusr.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 4 页
字号:
    "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 + -