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

📄 utilities.c

📁 压缩包中包含LINUX下多个命令的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
		    ++i;		}		break;	    case TELQUAL_NAME:		i = 2;		fprintf(NetTrace, " NAME \"");		while (i < length)		    putc(pointer[i++], NetTrace);		putc('"', NetTrace);		break;	    default:		    for (i = 2; i < length; i++)			fprintf(NetTrace, " ?%d?", pointer[i]);		    break;	    }	    break;#endif#ifdef	ENCRYPTION	case TELOPT_ENCRYPT:	    fprintf(NetTrace, "ENCRYPT");	    if (length < 2) {		fprintf(NetTrace, " (empty suboption??\?)");		break;	    }	    switch (pointer[1]) {	    case ENCRYPT_START:		fprintf(NetTrace, " START");		break;	    case ENCRYPT_END:		fprintf(NetTrace, " END");		break;	    case ENCRYPT_REQSTART:		fprintf(NetTrace, " REQUEST-START");		break;	    case ENCRYPT_REQEND:		fprintf(NetTrace, " REQUEST-END");		break;	    case ENCRYPT_IS:	    case ENCRYPT_REPLY:		fprintf(NetTrace, " %s ", (pointer[1] == ENCRYPT_IS) ?							"IS" : "REPLY");		if (length < 3) {		    fprintf(NetTrace, " (partial suboption??\?)");		    break;		}		if (ENCTYPE_NAME_OK(pointer[2]))		    fprintf(NetTrace, "%s ", ENCTYPE_NAME(pointer[2]));		else		    fprintf(NetTrace, " %d (unknown)", pointer[2]);		encrypt_printsub(&pointer[1], length - 1, buf, sizeof(buf));		fprintf(NetTrace, "%s", buf);		break;	    case ENCRYPT_SUPPORT:		i = 2;		fprintf(NetTrace, " SUPPORT ");		while (i < length) {		    if (ENCTYPE_NAME_OK(pointer[i]))			fprintf(NetTrace, "%s ", ENCTYPE_NAME(pointer[i]));		    else			fprintf(NetTrace, "%d ", pointer[i]);		    i++;		}		break;	    case ENCRYPT_ENC_KEYID:		fprintf(NetTrace, " ENC_KEYID ");		goto encommon;	    case ENCRYPT_DEC_KEYID:		fprintf(NetTrace, " DEC_KEYID ");		goto encommon;	    default:		fprintf(NetTrace, " %d (unknown)", pointer[1]);	    encommon:		for (i = 2; i < length; i++)		    fprintf(NetTrace, " %d", pointer[i]);		break;	    }	    break;#endif	/* ENCRYPTION */	case TELOPT_LINEMODE:	    fprintf(NetTrace, "LINEMODE ");	    if (length < 2) {		fprintf(NetTrace, " (empty suboption??\?)");		break;	    }	    switch (pointer[1]) {	    case WILL:		fprintf(NetTrace, "WILL ");		goto common;	    case WONT:		fprintf(NetTrace, "WONT ");		goto common;	    case DO:		fprintf(NetTrace, "DO ");		goto common;	    case DONT:		fprintf(NetTrace, "DONT ");	    common:		if (length < 3) {		    fprintf(NetTrace, "(no option??\?)");		    break;		}		switch (pointer[2]) {		case LM_FORWARDMASK:		    fprintf(NetTrace, "Forward Mask");		    for (i = 3; i < length; i++)			fprintf(NetTrace, " %x", pointer[i]);		    break;		default:		    fprintf(NetTrace, "%d (unknown)", pointer[2]);		    for (i = 3; i < length; i++)			fprintf(NetTrace, " %d", pointer[i]);		    break;		}		break;	    case LM_SLC:		fprintf(NetTrace, "SLC");		for (i = 2; i < length - 2; i += 3) {		    if (SLC_NAME_OK(pointer[i+SLC_FUNC]))			fprintf(NetTrace, " %s", SLC_NAME(pointer[i+SLC_FUNC]));		    else			fprintf(NetTrace, " %d", pointer[i+SLC_FUNC]);		    switch (pointer[i+SLC_FLAGS]&SLC_LEVELBITS) {		    case SLC_NOSUPPORT:			fprintf(NetTrace, " NOSUPPORT"); break;		    case SLC_CANTCHANGE:			fprintf(NetTrace, " CANTCHANGE"); break;		    case SLC_VARIABLE:			fprintf(NetTrace, " VARIABLE"); break;		    case SLC_DEFAULT:			fprintf(NetTrace, " DEFAULT"); break;		    }		    fprintf(NetTrace, "%s%s%s",			pointer[i+SLC_FLAGS]&SLC_ACK ? "|ACK" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHIN ? "|FLUSHIN" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHOUT ? "|FLUSHOUT" : "");		    if (pointer[i+SLC_FLAGS]& ~(SLC_ACK|SLC_FLUSHIN|						SLC_FLUSHOUT| SLC_LEVELBITS))			fprintf(NetTrace, "(0x%x)", pointer[i+SLC_FLAGS]);		    fprintf(NetTrace, " %d;", pointer[i+SLC_VALUE]);		    if ((pointer[i+SLC_VALUE] == IAC) &&			(pointer[i+SLC_VALUE+1] == IAC))				i++;		}		for (; i < length; i++)		    fprintf(NetTrace, " ?%d?", pointer[i]);		break;	    case LM_MODE:		fprintf(NetTrace, "MODE ");		if (length < 3) {		    fprintf(NetTrace, "(no mode??\?)");		    break;		}		{		    char tbuf[64];		    sprintf(tbuf, "%s%s%s%s%s",			pointer[2]&MODE_EDIT ? "|EDIT" : "",			pointer[2]&MODE_TRAPSIG ? "|TRAPSIG" : "",			pointer[2]&MODE_SOFT_TAB ? "|SOFT_TAB" : "",			pointer[2]&MODE_LIT_ECHO ? "|LIT_ECHO" : "",			pointer[2]&MODE_ACK ? "|ACK" : "");		    fprintf(NetTrace, "%s", tbuf[1] ? &tbuf[1] : "0");		}		if (pointer[2]&~(MODE_MASK))		    fprintf(NetTrace, " (0x%x)", pointer[2]);		for (i = 3; i < length; i++)		    fprintf(NetTrace, " ?0x%x?", pointer[i]);		break;	    default:		fprintf(NetTrace, "%d (unknown)", pointer[1]);		for (i = 2; i < length; i++)		    fprintf(NetTrace, " %d", pointer[i]);	    }	    break;	case TELOPT_STATUS: {	    register char *cp;	    register int j, k;	    fprintf(NetTrace, "STATUS");	    switch (pointer[1]) {	    default:		if (pointer[1] == TELQUAL_SEND)		    fprintf(NetTrace, " SEND");		else		    fprintf(NetTrace, " %d (unknown)", pointer[1]);		for (i = 2; i < length; i++)		    fprintf(NetTrace, " ?%d?", pointer[i]);		break;	    case TELQUAL_IS:		if (--want_status_response < 0)		    want_status_response = 0;		if (NetTrace == stdout)		    fprintf(NetTrace, " IS\r\n");		else		    fprintf(NetTrace, " IS\n");		for (i = 2; i < length; i++) {		    switch(pointer[i]) {		    case DO:	cp = "DO"; goto common2;		    case DONT:	cp = "DONT"; goto common2;		    case WILL:	cp = "WILL"; goto common2;		    case WONT:	cp = "WONT"; goto common2;		    common2:			i++;			if (TELOPT_OK((int)pointer[i]))			    fprintf(NetTrace, " %s %s", cp, TELOPT(pointer[i]));			else			    fprintf(NetTrace, " %s %d", cp, pointer[i]);			if (NetTrace == stdout)			    fprintf(NetTrace, "\r\n");			else			    fprintf(NetTrace, "\n");			break;		    case SB:			fprintf(NetTrace, " SB ");			i++;			j = k = i;			while (j < length) {			    if (pointer[j] == SE) {				if (j+1 == length)				    break;				if (pointer[j+1] == SE)				    j++;				else				    break;			    }			    pointer[k++] = pointer[j++];			}			printsub(0, &pointer[i], k - i);			if (i < length) {			    fprintf(NetTrace, " SE");			    i = j;			} else			    i = j - 1;			if (NetTrace == stdout)			    fprintf(NetTrace, "\r\n");			else			    fprintf(NetTrace, "\n");			break;		    default:			fprintf(NetTrace, " %d", pointer[i]);			break;		    }		}		break;	    }	    break;	  }	case TELOPT_XDISPLOC:	    fprintf(NetTrace, "X-DISPLAY-LOCATION ");	    switch (pointer[1]) {	    case TELQUAL_IS:		fprintf(NetTrace, "IS \"%.*s\"", length-2, (char *)pointer+2);		break;	    case TELQUAL_SEND:		fprintf(NetTrace, "SEND");		break;	    default:		fprintf(NetTrace, "- unknown qualifier %d (0x%x).",				pointer[1], pointer[1]);	    }	    break;	case TELOPT_NEW_ENVIRON:	    fprintf(NetTrace, "NEW-ENVIRON ");#ifdef	OLD_ENVIRON	    goto env_common1;	case TELOPT_OLD_ENVIRON:	    fprintf(NetTrace, "OLD-ENVIRON");	env_common1:#endif	    switch (pointer[1]) {	    case TELQUAL_IS:		fprintf(NetTrace, "IS ");		goto env_common;	    case TELQUAL_SEND:		fprintf(NetTrace, "SEND ");		goto env_common;	    case TELQUAL_INFO:		fprintf(NetTrace, "INFO ");	    env_common:		{		    register int noquote = 2;#if defined(ENV_HACK) && defined(OLD_ENVIRON)		    extern int old_env_var, old_env_value;#endif		    for (i = 2; i < length; i++ ) {			switch (pointer[i]) {			case NEW_ENV_VALUE:#ifdef OLD_ENVIRON		     /*	case NEW_ENV_OVAR: */			    if (pointer[0] == TELOPT_OLD_ENVIRON) {# ifdef	ENV_HACK				if (old_env_var == OLD_ENV_VALUE)				    fprintf(NetTrace, "\" (VALUE) " + noquote);				else# endif				    fprintf(NetTrace, "\" VAR " + noquote);			    } else#endif /* OLD_ENVIRON */				fprintf(NetTrace, "\" VALUE " + noquote);			    noquote = 2;			    break;			case NEW_ENV_VAR:#ifdef OLD_ENVIRON		     /* case OLD_ENV_VALUE: */			    if (pointer[0] == TELOPT_OLD_ENVIRON) {# ifdef	ENV_HACK				if (old_env_value == OLD_ENV_VAR)				    fprintf(NetTrace, "\" (VAR) " + noquote);				else# endif				    fprintf(NetTrace, "\" VALUE " + noquote);			    } else#endif /* OLD_ENVIRON */				fprintf(NetTrace, "\" VAR " + noquote);			    noquote = 2;			    break;			case ENV_ESC:			    fprintf(NetTrace, "\" ESC " + noquote);			    noquote = 2;			    break;			case ENV_USERVAR:			    fprintf(NetTrace, "\" USERVAR " + noquote);			    noquote = 2;			    break;			default:			def_case:			    if (isprint(pointer[i]) && pointer[i] != '"') {				if (noquote) {				    putc('"', NetTrace);				    noquote = 0;				}				putc(pointer[i], NetTrace);			    } else {				fprintf(NetTrace, "\" %03o " + noquote,							pointer[i]);				noquote = 2;			    }			    break;			}		    }		    if (!noquote)			putc('"', NetTrace);		    break;		}	    }	    break;	default:	    if (TELOPT_OK(pointer[0]))		fprintf(NetTrace, "%s (unknown)", TELOPT(pointer[0]));	    else		fprintf(NetTrace, "%d (unknown)", pointer[0]);	    for (i = 1; i < length; i++)		fprintf(NetTrace, " %d", pointer[i]);	    break;	}	if (direction) {	    if (NetTrace == stdout)		fprintf(NetTrace, "\r\n");	    else		fprintf(NetTrace, "\n");	}	if (NetTrace == stdout)	    fflush(NetTrace);    }}/* EmptyTerminal - called to make sure that the terminal buffer is empty. *			Note that we consider the buffer to run all the *			way to the kernel (thus the select). */voidEmptyTerminal(){#if	defined(unix)    fd_set	o;    FD_ZERO(&o);#endif	/* defined(unix) */    if (TTYBYTES() == 0) {#if	defined(unix)	FD_SET(tout, &o);	(void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,			(struct timeval *) 0);	/* wait for TTLOWAT */#endif	/* defined(unix) */    } else {	while (TTYBYTES()) {	    (void) ttyflush(0);#if	defined(unix)	    FD_SET(tout, &o);	    (void) select(tout+1, (fd_set *) 0, &o, (fd_set *) 0,				(struct timeval *) 0);	/* wait for TTLOWAT */#endif	/* defined(unix) */	}    }}voidSetForExit(){    setconnmode(0);#if	defined(TN3270)    if (In3270) {	Finish3270();    }#else	/* defined(TN3270) */    do {	(void)telrcv();			/* Process any incoming data */	EmptyTerminal();    } while (ring_full_count(&netiring));	/* While there is any */#endif	/* defined(TN3270) */    setcommandmode();    fflush(stdout);    fflush(stderr);#if	defined(TN3270)    if (In3270) {	StopScreen(1);    }#endif	/* defined(TN3270) */    setconnmode(0);    EmptyTerminal();			/* Flush the path to the tty */    setcommandmode();}voidExit(int returnCode){    SetForExit();    exit(returnCode);}voidExitString(char *string, int returnCode){    SetForExit();    fwrite(string, 1, strlen(string), stderr);    exit(returnCode);}

⌨️ 快捷键说明

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