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

📄 utility.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
		if (pointer[1] == 1)		    sprintf(nfrontp, " SEND");		else		    sprintf(nfrontp, " %d (unknown)", pointer[1]);		nfrontp += strlen(nfrontp);		for (i = 2; i < length; i++) {		    sprintf(nfrontp, " ?%d?", pointer[i]);		    nfrontp += strlen(nfrontp);		}		break;	    }	    break;	case TELOPT_LFLOW:	    sprintf(nfrontp, "TOGGLE-FLOW-CONTROL");	    nfrontp += strlen(nfrontp);	    if (length < 2) {		sprintf(nfrontp, " (empty suboption??\?)");		nfrontp += strlen(nfrontp);		break;	    }	    switch (pointer[1]) {	    case LFLOW_OFF:		sprintf(nfrontp, " OFF"); break;	    case LFLOW_ON:		sprintf(nfrontp, " ON"); break;	    case LFLOW_RESTART_ANY:		sprintf(nfrontp, " RESTART-ANY"); break;	    case LFLOW_RESTART_XON:		sprintf(nfrontp, " RESTART-XON"); break;	    default:		sprintf(nfrontp, " %d (unknown)", pointer[1]);	    }	    nfrontp += strlen(nfrontp);	    for (i = 2; i < length; i++) {		sprintf(nfrontp, " ?%d?", pointer[i]);		nfrontp += strlen(nfrontp);	    }	    break;	case TELOPT_NAWS:	    sprintf(nfrontp, "NAWS");	    nfrontp += strlen(nfrontp);	    if (length < 2) {		sprintf(nfrontp, " (empty suboption??\?)");		nfrontp += strlen(nfrontp);		break;	    }	    if (length == 2) {		sprintf(nfrontp, " ?%d?", pointer[1]);		nfrontp += strlen(nfrontp);		break;	    }	    sprintf(nfrontp, " %d %d (%d)",		pointer[1], pointer[2],		(int)((((unsigned int)pointer[1])<<8)|((unsigned int)pointer[2])));	    nfrontp += strlen(nfrontp);	    if (length == 4) {		sprintf(nfrontp, " ?%d?", pointer[3]);		nfrontp += strlen(nfrontp);		break;	    }	    sprintf(nfrontp, " %d %d (%d)",		pointer[3], pointer[4],		(int)((((unsigned int)pointer[3])<<8)|((unsigned int)pointer[4])));	    nfrontp += strlen(nfrontp);	    for (i = 5; i < length; i++) {		sprintf(nfrontp, " ?%d?", pointer[i]);		nfrontp += strlen(nfrontp);	    }	    break;	case TELOPT_LINEMODE:	    sprintf(nfrontp, "LINEMODE ");	    nfrontp += strlen(nfrontp);	    if (length < 2) {		sprintf(nfrontp, " (empty suboption??\?)");		nfrontp += strlen(nfrontp);		break;	    }	    switch (pointer[1]) {	    case WILL:		sprintf(nfrontp, "WILL ");		goto common;	    case WONT:		sprintf(nfrontp, "WONT ");		goto common;	    case DO:		sprintf(nfrontp, "DO ");		goto common;	    case DONT:		sprintf(nfrontp, "DONT ");	    common:		nfrontp += strlen(nfrontp);		if (length < 3) {		    sprintf(nfrontp, "(no option??\?)");		    nfrontp += strlen(nfrontp);		    break;		}		switch (pointer[2]) {		case LM_FORWARDMASK:		    sprintf(nfrontp, "Forward Mask");		    nfrontp += strlen(nfrontp);		    for (i = 3; i < length; i++) {			sprintf(nfrontp, " %x", pointer[i]);			nfrontp += strlen(nfrontp);		    }		    break;		default:		    sprintf(nfrontp, "%d (unknown)", pointer[2]);		    nfrontp += strlen(nfrontp);		    for (i = 3; i < length; i++) {			sprintf(nfrontp, " %d", pointer[i]);			nfrontp += strlen(nfrontp);		    }		    break;		}		break;			    case LM_SLC:		sprintf(nfrontp, "SLC");		nfrontp += strlen(nfrontp);		for (i = 2; i < length - 2; i += 3) {		    if (SLC_NAME_OK(pointer[i+SLC_FUNC]))			sprintf(nfrontp, " %s", SLC_NAME(pointer[i+SLC_FUNC]));		    else			sprintf(nfrontp, " %d", pointer[i+SLC_FUNC]);		    nfrontp += strlen(nfrontp);		    switch (pointer[i+SLC_FLAGS]&SLC_LEVELBITS) {		    case SLC_NOSUPPORT:			sprintf(nfrontp, " NOSUPPORT"); break;		    case SLC_CANTCHANGE:			sprintf(nfrontp, " CANTCHANGE"); break;		    case SLC_VARIABLE:			sprintf(nfrontp, " VARIABLE"); break;		    case SLC_DEFAULT:			sprintf(nfrontp, " DEFAULT"); break;		    }		    nfrontp += strlen(nfrontp);		    sprintf(nfrontp, "%s%s%s",			pointer[i+SLC_FLAGS]&SLC_ACK ? "|ACK" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHIN ? "|FLUSHIN" : "",			pointer[i+SLC_FLAGS]&SLC_FLUSHOUT ? "|FLUSHOUT" : "");		    nfrontp += strlen(nfrontp);		    if (pointer[i+SLC_FLAGS]& ~(SLC_ACK|SLC_FLUSHIN|						SLC_FLUSHOUT| SLC_LEVELBITS)) {			sprintf(nfrontp, "(0x%x)", pointer[i+SLC_FLAGS]);			nfrontp += strlen(nfrontp);		    }		    sprintf(nfrontp, " %d;", pointer[i+SLC_VALUE]);		    nfrontp += strlen(nfrontp);		    if ((pointer[i+SLC_VALUE] == IAC) &&			(pointer[i+SLC_VALUE+1] == IAC))				i++;		}		for (; i < length; i++) {		    sprintf(nfrontp, " ?%d?", pointer[i]);		    nfrontp += strlen(nfrontp);		}		break;	    case LM_MODE:		sprintf(nfrontp, "MODE ");		nfrontp += strlen(nfrontp);		if (length < 3) {		    sprintf(nfrontp, "(no mode??\?)");		    nfrontp += strlen(nfrontp);		    break;		}		{		    char tbuf[32];		    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" : "");		    sprintf(nfrontp, "%s", tbuf[1] ? &tbuf[1] : "0");		    nfrontp += strlen(nfrontp);		}		if (pointer[2]&~(MODE_EDIT|MODE_TRAPSIG|MODE_ACK)) {		    sprintf(nfrontp, " (0x%x)", pointer[2]);		    nfrontp += strlen(nfrontp);		}		for (i = 3; i < length; i++) {		    sprintf(nfrontp, " ?0x%x?", pointer[i]);		    nfrontp += strlen(nfrontp);		}		break;	    default:		sprintf(nfrontp, "%d (unknown)", pointer[1]);		nfrontp += strlen(nfrontp);		for (i = 2; i < length; i++) {		    sprintf(nfrontp, " %d", pointer[i]);		    nfrontp += strlen(nfrontp);		}	    }	    break;	case TELOPT_STATUS: {	    register char *cp;	    register int j, k;	    sprintf(nfrontp, "STATUS");	    nfrontp += strlen(nfrontp);	    switch (pointer[1]) {	    default:		if (pointer[1] == TELQUAL_SEND)		    sprintf(nfrontp, " SEND");		else		    sprintf(nfrontp, " %d (unknown)", pointer[1]);		nfrontp += strlen(nfrontp);		for (i = 2; i < length; i++) {		    sprintf(nfrontp, " ?%d?", pointer[i]);		    nfrontp += strlen(nfrontp);		}		break;	    case TELQUAL_IS:		sprintf(nfrontp, " IS\r\n");		nfrontp += strlen(nfrontp);		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(pointer[i]))			    sprintf(nfrontp, " %s %s", cp, TELOPT(pointer[i]));			else			    sprintf(nfrontp, " %s %d", cp, pointer[i]);			nfrontp += strlen(nfrontp);			sprintf(nfrontp, "\r\n");			nfrontp += strlen(nfrontp);			break;		    case SB:			sprintf(nfrontp, " SB ");			nfrontp += strlen(nfrontp);			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) {			    sprintf(nfrontp, " SE");			    nfrontp += strlen(nfrontp);			    i = j;			} else			    i = j - 1;			sprintf(nfrontp, "\r\n");			nfrontp += strlen(nfrontp);			break;						    default:			sprintf(nfrontp, " %d", pointer[i]);			nfrontp += strlen(nfrontp);			break;		    }		}		break;	    }	    break;	  }	case TELOPT_XDISPLOC:	    sprintf(nfrontp, "X-DISPLAY-LOCATION ");	    nfrontp += strlen(nfrontp);	    switch (pointer[1]) {	    case TELQUAL_IS:		sprintf(nfrontp, "IS \"%.*s\"", length-2, (char *)pointer+2);		break;	    case TELQUAL_SEND:		sprintf(nfrontp, "SEND");		break;	    default:		sprintf(nfrontp, "- unknown qualifier %d (0x%x).",				pointer[1], pointer[1]);	    }	    nfrontp += strlen(nfrontp);	    break;	case TELOPT_NEW_ENVIRON:	    sprintf(nfrontp, "NEW-ENVIRON ");	    goto env_common1;	case TELOPT_OLD_ENVIRON:	    sprintf(nfrontp, "OLD-ENVIRON");	env_common1:	    nfrontp += strlen(nfrontp);	    switch (pointer[1]) {	    case TELQUAL_IS:		sprintf(nfrontp, "IS ");		goto env_common;	    case TELQUAL_SEND:		sprintf(nfrontp, "SEND ");		goto env_common;	    case TELQUAL_INFO:		sprintf(nfrontp, "INFO ");	    env_common:		nfrontp += strlen(nfrontp);		{		    register int noquote = 2;		    for (i = 2; i < length; i++ ) {			switch (pointer[i]) {			case NEW_ENV_VAR:			    sprintf(nfrontp, "\" VAR " + noquote);			    nfrontp += strlen(nfrontp);			    noquote = 2;			    break;			case NEW_ENV_VALUE:			    sprintf(nfrontp, "\" VALUE " + noquote);			    nfrontp += strlen(nfrontp);			    noquote = 2;			    break;			case ENV_ESC:			    sprintf(nfrontp, "\" ESC " + noquote);			    nfrontp += strlen(nfrontp);			    noquote = 2;			    break;			case ENV_USERVAR:			    sprintf(nfrontp, "\" USERVAR " + noquote);			    nfrontp += strlen(nfrontp);			    noquote = 2;			    break;			default:			def_case:			    if (isprint(pointer[i]) && pointer[i] != '"') {				if (noquote) {				    *nfrontp++ = '"';				    noquote = 0;				}				*nfrontp++ = pointer[i];			    } else {				sprintf(nfrontp, "\" %03o " + noquote,							pointer[i]);				nfrontp += strlen(nfrontp);				noquote = 2;			    }			    break;			}		    }		    if (!noquote)			*nfrontp++ = '"';		    break;		}	    }	    break;#if	defined(AUTHENTICATION)	case TELOPT_AUTHENTICATION:	    sprintf(nfrontp, "AUTHENTICATION");	    nfrontp += strlen(nfrontp);		    if (length < 2) {		sprintf(nfrontp, " (empty suboption??\?)");		nfrontp += strlen(nfrontp);		break;	    }	    switch (pointer[1]) {	    case TELQUAL_REPLY:	    case TELQUAL_IS:		sprintf(nfrontp, " %s ", (pointer[1] == TELQUAL_IS) ?							"IS" : "REPLY");		nfrontp += strlen(nfrontp);		if (AUTHTYPE_NAME_OK(pointer[2]))		    sprintf(nfrontp, "%s ", AUTHTYPE_NAME(pointer[2]));		else		    sprintf(nfrontp, "%d ", pointer[2]);		nfrontp += strlen(nfrontp);		if (length < 3) {		    sprintf(nfrontp, "(partial suboption??\?)");		    nfrontp += strlen(nfrontp);		    break;		}		sprintf(nfrontp, "%s|%s",			((pointer[3] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?			"CLIENT" : "SERVER",			((pointer[3] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?			"MUTUAL" : "ONE-WAY");		nfrontp += strlen(nfrontp);		auth_printsub(&pointer[1], length - 1, buf, sizeof(buf));		sprintf(nfrontp, "%s", buf);		nfrontp += strlen(nfrontp);		break;	    case TELQUAL_SEND:		i = 2;		sprintf(nfrontp, " SEND ");		nfrontp += strlen(nfrontp);		while (i < length) {		    if (AUTHTYPE_NAME_OK(pointer[i]))			sprintf(nfrontp, "%s ", AUTHTYPE_NAME(pointer[i]));		    else			sprintf(nfrontp, "%d ", pointer[i]);		    nfrontp += strlen(nfrontp);		    if (++i >= length) {			sprintf(nfrontp, "(partial suboption??\?)");			nfrontp += strlen(nfrontp);			break;		    }		    sprintf(nfrontp, "%s|%s ",			((pointer[i] & AUTH_WHO_MASK) == AUTH_WHO_CLIENT) ?							"CLIENT" : "SERVER",			((pointer[i] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?							"MUTUAL" : "ONE-WAY");		    nfrontp += strlen(nfrontp);		    ++i;		}		break;	    case TELQUAL_NAME:		i = 2;		sprintf(nfrontp, " NAME \"");		nfrontp += strlen(nfrontp);		while (i < length)		    *nfrontp += pointer[i++];		*nfrontp += '"';		break;	    default:		    for (i = 2; i < length; i++) {			sprintf(nfrontp, " ?%d?", pointer[i]);			nfrontp += strlen(nfrontp);		    }		    break;	    }	    break;#endif#ifdef	ENCRYPTION	case TELOPT_ENCRYPT:	    sprintf(nfrontp, "ENCRYPT");	    nfrontp += strlen(nfrontp);	    if (length < 2) {		sprintf(nfrontp, " (empty suboption??\?)");		nfrontp += strlen(nfrontp);		break;	    }	    switch (pointer[1]) {	    case ENCRYPT_START:		sprintf(nfrontp, " START");		nfrontp += strlen(nfrontp);		break;	    case ENCRYPT_END:		sprintf(nfrontp, " END");		nfrontp += strlen(nfrontp);		break;	    case ENCRYPT_REQSTART:		sprintf(nfrontp, " REQUEST-START");		nfrontp += strlen(nfrontp);		break;	    case ENCRYPT_REQEND:		sprintf(nfrontp, " REQUEST-END");		nfrontp += strlen(nfrontp);		break;	    case ENCRYPT_IS:	    case ENCRYPT_REPLY:		sprintf(nfrontp, " %s ", (pointer[1] == ENCRYPT_IS) ?							"IS" : "REPLY");		nfrontp += strlen(nfrontp);		if (length < 3) {		    sprintf(nfrontp, " (partial suboption??\?)");		    nfrontp += strlen(nfrontp);		    break;		}		if (ENCTYPE_NAME_OK(pointer[2]))		    sprintf(nfrontp, "%s ", ENCTYPE_NAME(pointer[2]));		else		    sprintf(nfrontp, " %d (unknown)", pointer[2]);		nfrontp += strlen(nfrontp);		encrypt_printsub(&pointer[1], length - 1, buf, sizeof(buf));		sprintf(nfrontp, "%s", buf);		nfrontp += strlen(nfrontp);		break;	    case ENCRYPT_SUPPORT:		i = 2;		sprintf(nfrontp, " SUPPORT ");		nfrontp += strlen(nfrontp);		while (i < length) {		    if (ENCTYPE_NAME_OK(pointer[i]))			sprintf(nfrontp, "%s ", ENCTYPE_NAME(pointer[i]));		    else			sprintf(nfrontp, "%d ", pointer[i]);		    nfrontp += strlen(nfrontp);		    i++;		}		break;	    case ENCRYPT_ENC_KEYID:		sprintf(nfrontp, " ENC_KEYID", pointer[1]);		nfrontp += strlen(nfrontp);		goto encommon;	    case ENCRYPT_DEC_KEYID:		sprintf(nfrontp, " DEC_KEYID", pointer[1]);		nfrontp += strlen(nfrontp);		goto encommon;	    default:		sprintf(nfrontp, " %d (unknown)", pointer[1]);		nfrontp += strlen(nfrontp);	    encommon:		for (i = 2; i < length; i++) {		    sprintf(nfrontp, " %d", pointer[i]);		    nfrontp += strlen(nfrontp);		}		break;	    }	    break;#endif	/* ENCRYPTION */	default:	    if (TELOPT_OK(pointer[0]))	        sprintf(nfrontp, "%s (unknown)", TELOPT(pointer[0]));	    else	        sprintf(nfrontp, "%d (unknown)", pointer[i]);	    nfrontp += strlen(nfrontp);	    for (i = 1; i < length; i++) {		sprintf(nfrontp, " %d", pointer[i]);		nfrontp += strlen(nfrontp);	    }	    break;	}	sprintf(nfrontp, "\r\n");	nfrontp += strlen(nfrontp);}/* * Dump a data buffer in hex and ascii to the output data stream. */	voidprintdata(tag, ptr, cnt)	register char *tag;	register char *ptr;	register int cnt;{	register int i;	char xbuf[30];	while (cnt) {		/* flush net output buffer if no room for new data) */		if ((&netobuf[BUFSIZ] - nfrontp) < 80) {			netflush();		}		/* add a line of output */		sprintf(nfrontp, "%s: ", tag);		nfrontp += strlen(nfrontp);		for (i = 0; i < 20 && cnt; i++) {			sprintf(nfrontp, "%02x", *ptr);			nfrontp += strlen(nfrontp); 			if (isprint(*ptr)) {				xbuf[i] = *ptr;			} else {				xbuf[i] = '.';			}			if (i % 2) { 				*nfrontp = ' ';				nfrontp++;			}			cnt--;			ptr++;		}		xbuf[i] = '\0';		sprintf(nfrontp, " %s\r\n", xbuf );		nfrontp += strlen(nfrontp);	} }#endif /* DIAGNOSTICS */

⌨️ 快捷键说明

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