亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pcomm_cmd.c

?? 通訊程序源碼
?? C
字號:
/* * An external command facility for Pcomm.  All of the "sanity checking" * is done at this end, so virtually no checking is done at Pcomm's end. */#include <stdio.h>#include <ctype.h>#include "config.h"#include "cmd.h"#ifdef BSD#include <sys/file.h>#else /* BSD */#include <fcntl.h>#endif /* BSD */int cmd_ipc;main(argc, argv)int argc;char *argv[];{	static char *cmds[] = {"SET", "QUERY", "IF", "DIAL", "REDIAL", "EXIT",	"CLEAR_SCREEN", "CHG_DIR", "HANG_UP", "PRINTER", "MODEM_BREAK", "SEND",	"RECEIVE", "SCREEN_DUMP", "DATA_LOG", 0};	static char *set_args[] = {"BAUD", "PARITY", "DATA_BITS", "STOP_BITS",	"DUPLEX", "AUX", "HOT_KEY", "ASCII_HOT", "FLOW_CTRL", "CR_IN",	"CR_OUT", "LOGFILE", "DUMPFILE", "STRIP", "LOCAL_ECHO", "EXPAND",	"CR_DELAY", "PACE", "CR_UP", "LF_UP", "TIMER", "CR_DN", "LF_DN", 0};	static char *qry_args[] = {"TTY_NAME", "MODEM_NAME", 0};	static char *if_args[] = {"CONNECTED", "LOG_STATUS", "PRINTER_STATUS",	0};	static char *xfer_args[] = {"XMODEM", "XMODEM_1K", "MODEM7", "YMODEM",	"YMODEM_G", "ASCII", "EXT_1", "EXT_2", "EXT_3", 0};	char *command, buf[40], *mkupper(), *arg1, *arg2, *s, *strchr();	char *pcomm_cmd, *getenv();	int cmd_num, i, arg_num, got_it;	unsigned int ui;	void send_cmd(), get_value(), exit(), cmd_exit();					/* get the environmental variable */	pcomm_cmd = getenv("PCOMM_CMD");	if (argc == 1 || pcomm_cmd == NULL || *pcomm_cmd == '\0') {		fprintf(stderr, "%s: This is a Pcomm support program.  It is intended for use inside\n", argv[0]);		fprintf(stderr, "an auto-login shell script\n");		exit(1);	}					/* parse the command line */	command = mkupper(argv[1]);	if (argc > 2)		arg1 = mkupper(argv[2]);	else		arg1 = "";	if (argc > 3)		arg2 = mkupper(argv[3]);	else		arg2 = "";					/* convert command to a number */	cmd_num = 0;	while (cmds[cmd_num] != NULL) {		if (!strcmp(command, cmds[cmd_num]))			break;		cmd_num++;	}					/* attach to the IPC channel */	if ((cmd_ipc = ipc_attach(pcomm_cmd, O_RDWR)) < 0) {		fprintf(stderr, "%s: Can't attach to IPC channel\n", argv[0]);		exit(1);	}					/* do it! */	switch(cmd_num) {		case SET:			if (argc < 4) {				fprintf(stderr, "%s: SET command requires 2 arguments\n", argv[0]);				cmd_exit(1);			}							arg_num = 0;			while (set_args[arg_num] != NULL) {				if (!strcmp(arg1, set_args[arg_num]))					break;				arg_num++;			}			switch(arg_num) {				case BAUD:					ui = (unsigned int) atoi(arg2);					switch(ui) {						case 300:						case 1200:						case 2400:						case 4800:						case 9600:						case 19200:						case 38400:							break;						default:							fprintf(stderr, "%s: bad value '%s' for SET BAUD command\n", argv[0], argv[3]);							cmd_exit(1);					}					sprintf(buf, "%d", ui);					send_cmd(SET, BAUD, buf);					break;				case PARITY:					if (strcmp(arg2, "EVEN") && strcmp(arg2, "ODD") && strcmp(arg2, "NONE")) {						fprintf(stderr, "%s: bad value '%s' for SET PARITY command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, PARITY, arg2);					break;				case DATA_BITS:					i = atoi(arg2);					if (i != 7 && i != 8) {						fprintf(stderr, "%s: bad value '%s' for SET DATA_BITS command\n", argv[0], argv[3]);						cmd_exit(1);					}					sprintf(buf, "%d", i);					send_cmd(SET, DATA_BITS, buf);					break;				case STOP_BITS:					i = atoi(arg2);					if (i != 1 && i != 2) {						fprintf(stderr, "%s: bad value '%s' for SET STOP_BITS command\n", argv[0], argv[3]);						cmd_exit(1);					}					sprintf(buf, "%d", i);					send_cmd(SET, STOP_BITS, buf);					break;				case DUPLEX:					if (strcmp(arg2, "FULL") && strcmp(arg2, "HALF")) {						fprintf(stderr, "%s: bad value '%s' for SET DUPLEX command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, DUPLEX, arg2);					break;					case AUX:					send_cmd(SET, AUX, argv[3]);					break;				case HOT_KEY:					i = atoi(arg2);					if (i <= 0 || i > 256) {						fprintf(stderr, "%s: bad value '%s' for SET HOT_KEY command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, HOT_KEY, arg2);					break;				case ASCII_HOT:					send_cmd(SET, ASCII_HOT, argv[3]);					break;				case FLOW_CTRL:					if (strcmp(arg2, "XON/XOFF") && strcmp(arg2, "NONE")) {						fprintf(stderr, "%s: bad value '%s' for SET FLOW_CTRL command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, FLOW_CTRL, arg2);					break;				case CR_IN:						if (strcmp(arg2, "CR") && strcmp(arg2, "CR/LF")) {						fprintf(stderr, "%s: bad value '%s' for SET CR_IN command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, CR_IN, arg2);					break;				case CR_OUT:					if (strcmp(arg2, "CR") && strcmp(arg2, "CR/LF")) {						fprintf(stderr, "%s: bad value '%s' for SET CR_OUT command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, CR_OUT, arg2);					break;				case LOGFILE:					send_cmd(SET, LOGFILE, argv[3]);					break;				case DUMPFILE:					send_cmd(SET, DUMPFILE, argv[3]);					break;				case STRIP:						if (strcmp(arg2, "YES") && strcmp(arg2, "NO")) {						fprintf(stderr, "%s: bad value '%s' for SET STRIP command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, STRIP, arg2);					break;				case LOCAL_ECHO:						if (strcmp(arg2, "YES") && strcmp(arg2, "NO")) {						fprintf(stderr, "%s: bad value '%s' for SET LOCAL_ECHO command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, LOCAL_ECHO, arg2);					break;				case EXPAND:					if (strcmp(arg2, "YES") && strcmp(arg2, "NO")) {						fprintf(stderr, "%s: bad value '%s' for SET EXPAND command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, EXPAND, arg2);					break;				case CR_DELAY:					i = atoi(arg2);					if (i != 0 && i != 100 && i != 150) {						fprintf(stderr, "%s: bad value '%s' for SET CR_DELAY command\n", argv[0], argv[3]);						cmd_exit(1);					}					sprintf(buf, "%d", i);					send_cmd(SET, CR_DELAY, buf);					break;				case PACE:					if (strcmp(arg2, "YES") && strcmp(arg2, "NO")) {						fprintf(stderr, "%s: bad value '%s' for SET PACE command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, PACE, arg2);					break;				case CR_UP:					if (strcmp(arg2, "NONE") && strcmp(arg2, "ADD_LF") && strcmp(arg2, "STRIP")) {						fprintf(stderr, "%s: bad value '%s' for SET CR_UP command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, CR_UP, arg2);					break;				case LF_UP:					if (strcmp(arg2, "NONE") && strcmp(arg2, "ADD_CR") && strcmp(arg2, "STRIP")) {						fprintf(stderr, "%s: bad value '%s' for SET LF_UP command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, LF_UP, arg2);					break;				case TIMER:					i = atoi(arg2);					if (i < 5 || i > 150) {						fprintf(stderr, "%s: bad value '%s' for SET TIMER command\n", argv[0], argv[3]);						cmd_exit(1);					}					sprintf(buf, "%d", i);					send_cmd(SET, CR_DN, buf);					break;				case CR_DN:					if (strcmp(arg2, "NONE") && strcmp(arg2, "ADD_LF") && strcmp(arg2, "STRIP")) {						fprintf(stderr, "%s: bad value '%s' for SET CR_DN command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, CR_DN, arg2);					break;				case LF_DN:						if (strcmp(arg2, "NONE") && strcmp(arg2, "ADD_CR") && strcmp(arg2, "STRIP")) {						fprintf(stderr, "%s: bad value '%s' for SET LF_DN command\n", argv[0], argv[3]);						cmd_exit(1);					}					send_cmd(SET, LF_DN, arg2);					break;				default:					fprintf(stderr, "%s: Illegal argument '%s' for SET command\n", argv[0], argv[2]);					cmd_exit(1);					break;			}			break;		case QUERY:		/* the QUERY commands */			if (argc < 3) {				fprintf(stderr, "%s: QUERY command requires an argument\n", argv[0]);				cmd_exit(1);			}							arg_num = 0;			while (qry_args[arg_num] != NULL) {				if (!strcmp(arg1, qry_args[arg_num]))					break;				arg_num++;			}			switch(arg_num) {				case TTY_NAME:					send_cmd(QUERY, TTY_NAME, "dummy");					get_value();					break;				case MODEM_NAME:					send_cmd(QUERY, MODEM_NAME, "dummy");					get_value();					break;				default:					fprintf(stderr, "%s: Illegal argument '%s' for QUERY command\n", argv[0], argv[2]);					cmd_exit(1);					break;			}			break;		case IF:		/* the IF commands */			if (argc < 3) {				fprintf(stderr, "%s: IF command requires an argument\n", argv[0]);				cmd_exit(1);			}							arg_num = 0;			while (if_args[arg_num] != NULL) {				if (!strcmp(arg1, if_args[arg_num]))					break;				arg_num++;			}			switch(arg_num) {				case CONNECTED:					send_cmd(IF, CONNECTED, "dummy");					break;				case LOG_STATUS:					send_cmd(IF, LOG_STATUS, "dummy");					break;				case PRINTER_STATUS:					send_cmd(IF, PRINTER_STATUS, "dummy");					break;				default:					fprintf(stderr, "%s: Illegal argument '%s' for IF command\n", argv[0], argv[2]);					cmd_exit(1);					break;			}			break;		case DIAL:			if (argc < 3) {				fprintf(stderr, "%s: DIAL command requires an argument\n", argv[0]);				cmd_exit(1);			}			if (!strcmp(arg1, "MANUAL")) {				if (argc < 4) {					fprintf(stderr, "%s: DIAL MANUAL command requires an argument\n", argv[0]);					cmd_exit(1);				}				send_cmd(DIAL, 1, argv[3]);			}			else {				if (s = strchr("+-@#", *argv[2]))					i = atoi(++s);				else					i = atoi(argv[2]);				if (i < 1 || i > 100) {					fprintf(stderr, "%s: bad value '%s' for DIAL command\n", argv[0], argv[2]);					cmd_exit(1);				}				send_cmd(DIAL, 0, argv[2]);			}			break;		case REDIAL:			if (argc < 3) {				fprintf(stderr, "%s: REDIAL command requires at least 1 argument\n", argv[0]);				cmd_exit(1);			}			send_cmd(REDIAL, 0, argv[2]);			break;		case EXIT:			send_cmd(EXIT, 0, "dummy");			/*			 * Don't wait for a return code... Pcomm won't be			 * around to send it!  So, assume it got there OK.			 */			cmd_exit(0);			break;		case CLEAR_SCREEN:			send_cmd(CLEAR_SCREEN, 0, "dummy");			break;		case CHG_DIR:			if (argc < 3) {				fprintf(stderr, "%s: CHG_DIR command requires an argument\n", argv[0]);				cmd_exit(1);			}			send_cmd(CHG_DIR, 0, argv[2]);			break;		case HANG_UP:			send_cmd(HANG_UP, 0, "dummy");			break;		case PRINTER:			if (argc < 3) {				fprintf(stderr, "%s: PRINTER command requires an argument\n", argv[0]);				cmd_exit(1);			}			if (strcmp(arg1, "ON") && strcmp(arg1, "OFF")) {				fprintf(stderr, "%s: bad value '%s' for PRINTER command\n", argv[0], argv[2]);				cmd_exit(1);			}			if (!strcmp(arg1, "ON"))				send_cmd(PRINTER, 1, "dummy");			else				send_cmd(PRINTER, 0, "dummy");			break;		case MODEM_BREAK:			send_cmd(MODEM_BREAK, 0, "dummy");			break;		case SEND:			if (argc < 4) {				fprintf(stderr, "%s: SEND command requires 2 arguments\n", argv[0]);				cmd_exit(1);			}			arg_num = 0;			got_it = 0;			while (xfer_args[arg_num] != NULL) {				if (!strcmp(xfer_args[arg_num], arg1)) {					got_it++;					break;				}				arg_num++;			}			if (!got_it) {				fprintf(stderr, "%s: Illegal argument '%s' for SEND command\n", argv[0], argv[2]);				cmd_exit(1);			}			send_cmd(SEND, ++arg_num, argv[3]);			break;		case RECEIVE:			if (argc < 3) {				fprintf(stderr, "%s: RECEIVE command requires at least 1 argument\n", argv[0]);				cmd_exit(1);			}			arg_num = 0;			got_it = 0;			while (xfer_args[arg_num] != NULL) {				if (!strcmp(xfer_args[arg_num], arg1)) {					got_it++;					break;				}				arg_num++;			}			if (!got_it) {				fprintf(stderr, "%s: Illegal argument '%s' for RECEIVE command\n", argv[0], argv[2]);				cmd_exit(1);			}			if (argc < 4)				send_cmd(RECEIVE, ++arg_num, "dummy");			else				send_cmd(RECEIVE, ++arg_num, argv[3]);			break;		case SCREEN_DUMP:			send_cmd(SCREEN_DUMP, 0, "dummy");			break;		case DATA_LOG:			if (!strcmp(arg1, "ON"))				send_cmd(DATA_LOG, 1, "dummy");			else				send_cmd(DATA_LOG, 0, "dummy");			break;		default:			fprintf(stderr, "%s: Illegal command '%s'\n", argv[0], argv[1]);			cmd_exit(1);			break;	}					/* get the return status */	if (ipc_read(cmd_ipc, buf, 256)) {#ifndef sparc		fprintf(stderr, "Can't read from IPC\n");#endif /* sparc */		cmd_exit(1);	}	cmd_exit(atoi(buf));}/* * Copy and convert a string to all upper case  */char *mkupper(string)char *string;{	int i;	char buf[80], *ans, *strcpy(), *malloc();	void exit();	i = 0;	while (*string != '\0') {		if (islower(*string))			buf[i++] = toupper(*string);		else			buf[i++] = *string;		string++;		if (i == 79)			break;	}	buf[i] = '\0';	if ((ans = malloc((unsigned int) strlen(buf)+1)) == NULL) {		fprintf(stderr, "out of memory!\n");		exit(1);	}	strcpy(ans, buf);		return(ans);}/* * Get a return value from a command, (and therefore exit prematurely). */void get_value(){	char *s, *strchr(), buf[256];	void cmd_exit();	if (ipc_read(cmd_ipc, buf, 256)) {		fprintf(stderr, "Can't read from IPC\n");		cmd_exit(1);	}	if (s = strchr(buf, '\n'))		*++s = '\0';	printf("%s", buf);	cmd_exit(0);}/* * Send a command to the Pcomm process */voidsend_cmd(cmd, arg1, arg2)int cmd, arg1;char *arg2;{	char buf[256];	void cmd_exit();	sprintf(buf, "%d %d %249.249s\n", cmd, arg1, arg2);	if (ipc_write(cmd_ipc, buf, 256)) {		fprintf(stderr, "Can't write to IPC\n");		cmd_exit(1);	}	return;}/* * Clean up and go home... */voidcmd_exit(n)int n;{	void exit();	ipc_detach(cmd_ipc);	exit(n);}#define MAIN#include IPC

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一二三区| 国产精品乱码久久久久久| 久久久久久久久久久久久女国产乱| 国产欧美精品在线观看| 亚欧色一区w666天堂| 国产传媒欧美日韩成人| 欧美自拍丝袜亚洲| 国产人成一区二区三区影院| 亚洲va欧美va人人爽| av在线一区二区| 日韩精品中文字幕一区| 亚洲超碰97人人做人人爱| 成人精品鲁一区一区二区| 日韩视频一区二区三区在线播放 | 欧美精品丝袜中出| 久久久久国产成人精品亚洲午夜| 亚洲va欧美va人人爽| 91精彩视频在线观看| 欧美激情艳妇裸体舞| 精品亚洲成av人在线观看| 欧美日韩第一区日日骚| 亚洲人精品一区| 成人免费的视频| 久久久不卡影院| 国产成人一区在线| 久久久久久久久久看片| 国产乱人伦精品一区二区在线观看| 日韩丝袜美女视频| 日韩av电影免费观看高清完整版| 欧美日韩精品欧美日韩精品| 中文字幕亚洲欧美在线不卡| 国产91色综合久久免费分享| 国产亚洲精品bt天堂精选| 精品影视av免费| 精品国产凹凸成av人导航| 久久精品国产成人一区二区三区| 欧美影视一区二区三区| 亚洲第一av色| 91麻豆精品91久久久久同性| 日韩精品一二三区| 欧美一区二区三区男人的天堂| 免费精品99久久国产综合精品| 91精品婷婷国产综合久久性色| 日韩综合在线视频| 日韩一级完整毛片| 国产精品综合一区二区三区| 国产片一区二区| 99久久久免费精品国产一区二区| 亚洲色图清纯唯美| 欧美日韩亚洲综合在线 | 欧美刺激午夜性久久久久久久| 麻豆91免费看| 国产精品久久久久影院亚瑟| 色婷婷久久99综合精品jk白丝 | 日本一区二区成人在线| 成人午夜精品在线| 中文字幕综合网| 精品视频资源站| 久久99精品国产麻豆婷婷| 久久久久久夜精品精品免费| 成人手机电影网| 亚洲毛片av在线| 在线播放欧美女士性生活| 黑人精品欧美一区二区蜜桃| 亚洲欧洲av色图| 欧美久久久一区| 激情五月婷婷综合网| 国产精品久久久久久一区二区三区| 欧美亚洲动漫另类| 久久精品国产网站| 日韩精品1区2区3区| 久久久美女毛片| 在线亚洲一区二区| 国产一区二区三区在线看麻豆| 亚洲激情男女视频| 精品国产乱码久久| 欧美日韩亚洲综合| 99精品久久只有精品| 天天av天天翘天天综合网色鬼国产| 久久免费看少妇高潮| 欧美丝袜丝nylons| 成人福利视频网站| 久久精品国产99国产精品| 亚洲精品免费视频| 国产女同性恋一区二区| 日韩一区二区三区免费看 | 国产aⅴ综合色| 日韩精品亚洲专区| 亚洲女厕所小便bbb| 国产欧美日韩综合精品一区二区| 6080午夜不卡| 色天天综合久久久久综合片| 国产剧情在线观看一区二区| 免费在线观看精品| 亚洲成人一二三| 亚洲精品久久嫩草网站秘色| 中文字幕第一区二区| 欧美mv日韩mv国产网站| 欧美伦理视频网站| 在线免费亚洲电影| 96av麻豆蜜桃一区二区| 国产成人精品影院| 国产精品一线二线三线精华| 蜜桃视频一区二区三区在线观看| 亚洲国产精品久久人人爱| 亚洲免费观看高清完整版在线观看| 欧美国产精品一区二区三区| 久久久www免费人成精品| 精品国产青草久久久久福利| 日韩午夜在线影院| 日韩欧美一区二区在线视频| 欧美一区二区在线免费播放| 欧美日韩高清一区二区三区| 欧美日韩精品福利| 欧美日韩免费电影| 欧美一区二区三区在线视频| 欧美日韩视频一区二区| 欧美久久久一区| 日韩一区二区三区免费看| 精品电影一区二区三区| 26uuu久久综合| 久久免费精品国产久精品久久久久| 久久久久久久性| 国产精品久久久久久久久免费樱桃 | 久久久久久久综合狠狠综合| 欧美国产1区2区| 一区二区欧美视频| 丝袜美腿亚洲一区| 国产在线精品国自产拍免费| 国产福利不卡视频| 色婷婷国产精品| 欧美日韩国产首页| 欧美r级电影在线观看| 国产欧美精品在线观看| 亚洲欧美国产毛片在线| 亚洲成人av福利| 国产一区二区成人久久免费影院| 成人高清在线视频| 在线不卡中文字幕| 久久久久99精品国产片| 亚洲精品伦理在线| 看片网站欧美日韩| 成人性生交大片免费看中文| 91国偷自产一区二区三区成为亚洲经典| 欧美综合色免费| 久久亚洲精华国产精华液| 国产精品久久久久久久久果冻传媒| 亚洲国产cao| 国内久久婷婷综合| 在线观看一区二区精品视频| 精品国产免费一区二区三区四区| 国产欧美一区二区在线观看| 亚洲一区二区三区四区在线免费观看| 日本不卡高清视频| 成人高清视频免费观看| 欧美一区二区在线不卡| 亚洲图片你懂的| 美国三级日本三级久久99| 色欧美日韩亚洲| 欧美激情一区二区三区全黄| 日韩高清中文字幕一区| 99久久精品免费看国产| 日韩亚洲电影在线| 亚洲一区二区三区在线看| 国产成人精品在线看| 欧美一区二区三区性视频| 日韩理论片一区二区| 国产精品一区二区无线| 在线成人av网站| 亚洲制服丝袜av| 91色九色蝌蚪| 久久无码av三级| 美女任你摸久久 | 91福利社在线观看| 久久众筹精品私拍模特| 午夜精品久久久久久久99樱桃| 成人一级黄色片| 亚洲精品一区二区三区蜜桃下载| 午夜精品福利一区二区三区蜜桃| 91色九色蝌蚪| 亚洲欧洲日韩一区二区三区| 国产麻豆精品theporn| 日韩一区二区三区在线视频| 五月婷婷激情综合网| 91在线高清观看| 日韩美女视频19| 99久久精品国产毛片| 国产拍欧美日韩视频二区| 国产精品 日产精品 欧美精品| 日韩午夜电影av| 极品少妇xxxx精品少妇| 精品久久久久久亚洲综合网| 日韩电影在线免费看| 欧美卡1卡2卡| 日产精品久久久久久久性色| 欧美精品vⅰdeose4hd| 丝瓜av网站精品一区二区| 欧美剧情片在线观看| 免费成人小视频| 久久人人爽人人爽|