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

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

?? commands.c

?? PCONSOLE是根并行計算相關的一個軟件 是一個編程軟件 用于定制借口和計算
?? C
字號:
/*    pconsole WJ101    Copyright (C) 2001  Walter de Jong <walter@heiho.net>    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//*	command.c	WJ101*/#include "config.h"#include "commands.h"#include "pconsole.h"#include "cstring.h"#include "terminal.h"#include "Conn.h"#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <sys/stat.h>#include <sys/types.h>#ifdef HAVE_FCNTL_H#include "fcntl.h"#endifCommand commands[] = {	{ "help",		cmd_help,		"Give help about the available commands",	},	{ "?",			cmd_help,		"short-cut for 'help'",						},	{ "version",	cmd_version,	"Display version information",				},	{ "echo",		cmd_echo,		"Turn echo on or off",						},	{ "attach",		cmd_attach,		"Attach to a tty device",					},	{ "detach",		cmd_detach,		"Detach from a tty device",					},	{ "list",		cmd_list,		"Show devices currently attached to",		},	{ "connect",	cmd_connect,	"Leave command mode",						},	{ "quit",		cmd_exit,		"Exit pconsole",							},	{ "exit",		cmd_exit,		"Exit pconsole",							},	{ NULL,			NULL,			NULL,										},};int pcommand(char *buf) {char cmd[4096], **arr, *cmd_str;int i, len;	strcpy(cmd, buf);	cstrip_line(cmd);	if (!*cmd)		return 0;	if ((arr = cstrsplit(cmd, ' ')) == NULL) {		fprintf(stderr, "pconsole: out of memory (?)\n");		return 0;	}	len = strlen(arr[0]);	for(i = 0; commands[i].cmd != NULL; i++) {		cmd_str = commands[i].cmd;		if (*cmd_str == '|')			cmd_str++;		if (!strncmp(cmd_str, arr[0], len)) {			if (commands[i].func == NULL)				printf("pconsole: not yet implemented\n");			else				commands[i].func(&arr[1]);			break;		}	}	if (commands[i].cmd == NULL)		printf("pconsole: unknown command '%s'\n", arr[0]);	free(arr);	return 0;}int cmd_help(char **argv) {int i;	if (argv == NULL || argv[0] == NULL) {		for(i = 0; commands[i].cmd != NULL; i++)			if (commands[i].cmd[0] == '|')				printf("\n %-14s %s\n", commands[i].cmd+1, commands[i].help);			else				printf(" %-14s %s\n", commands[i].cmd, commands[i].help);	} else {		int j, len;		char *cmd;		for(j = 0; argv[j] != NULL; j++) {/*	Special command 'help warranty' to satisfy the GNU people	It is formatted at 60 chars because the pconsole.sh script opens the	window by default at only 60 chars. The message is too long so it	still scrolls off the screen, but oh well...*/			if (!strcmp(argv[j], "warranty")) {				printf("Copyright (C) 2001  Walter de Jong <walter@heiho.net>\n""\n");				printf("This program is free software; you can redistribute it\n""and/or modify it under the terms of the GNU General Public\n""License as published by the Free Software Foundation;\n""either version 2 of the License, or (at your option)\n""any later version.\n""\n");				printf("This program is distributed in the hope that it will be\n""useful, but WITHOUT ANY WARRANTY; without even the\n""implied warranty of MERCHANTABILITY or FITNESS FOR A\n""PARTICULAR PURPOSE. See the GNU General Public License\n""for more details.\n""\n");				printf("You should have received a copy of the GNU General Public\n""License along with this program; if not, write to the\n""Free Software Foundation, Inc., 59 Temple Place,\n""Suite 330, Boston, MA  02111-1307  USA\n");				continue;			}/*	give help on specified commands*/			len = strlen(argv[j]);			for(i = 0; commands[i].cmd != NULL; i++) {				cmd = commands[i].cmd;				if (*cmd == '|')					cmd++;				if (!strncmp(argv[j], cmd, len)) {					printf(" %-14s %s\n", cmd, commands[i].help);					break;				}			}			if (commands[i].cmd == NULL)				printf("pconsole: unknown command '%s'\n", argv[j]);		}	}	return 0;}int cmd_version(char **argv) {	printf("pconsole " VERSION " WJ101\n"		"Copyright (C) 2001  Walter de Jong <walter@heiho.net>\n"		"\n"		"This is free software with ABSOLUTELY NO WARRANTY.\n"		"For details type 'help warranty'.\n"		"\n"		"The distribution page is at http://www.heiho.net/pconsole/\n"	);	return 0;}int cmd_echo(char **argv) {	if (argv == NULL || argv[0] == NULL)		flags ^= FLAGS_ECHO;	else		if (!strcmp(argv[0], "on"))			flags |= FLAGS_ECHO;		else			if (!strcmp(argv[0], "off"))				flags &= ~FLAGS_ECHO;			else {				printf("usage: echo [on|off]\n");				return 1;			}	printf("pconsole: echo is now toggled %s\n", (flags & FLAGS_ECHO) ? "on" : "off");	return 0;}int cmd_exit(char **argv) {Conn *c, *c_next;char *arr[2];/*	exit: detach from all attached terminals	abuse the cmd_detach() command to do this*/	arr[1] = NULL;	for(c = AllConns; c != NULL; c = c_next) {		c_next = c->next;		arr[0] = c->dev;		cmd_detach(arr);	}	terminal_mode(TERMINAL_COOKED);	exit(0);	return -1;}int cmd_connect(char **argv) {	if (AllConns == NULL) {		printf("pconsole: currently not attached to any terminal device\n");		return 0;	}	flags &= ~FLAGS_CMD_MODE;			/* drop out of command mode */	return 0;}int cmd_attach(char **argv) {int i, len;char *tty, *devname, buf[256];struct stat ttystat, ttystat2;Conn *c;	if (argv == NULL || argv[0] == NULL) {		printf("usage: attach [hostname#]<tty device name> [...]\n");		return 1;	}	if ((tty = ttyname(fileno(stdin))) == NULL) {		printf("pconsole: not on a tty\n");		cmd_exit(NULL);		return -1;	}	if (stat(tty, &ttystat)) {		printf("failed to stat my tty %s: %s\n", tty, strerror(errno));		cmd_exit(NULL);		return -1;	}	sprintf(buf, "\r\n[pconsole attached from tty %s]\r\n", tty);	len = strlen(buf);	for(i = 0; argv[i] != NULL; i++) {		printf("attaching %s : ", argv[i]);		if ((devname = strchr(argv[i], '#')) != NULL) {			*devname = 0;			devname++;			if (!*devname) {				printf("invalid terminal device name '%s:'\n", argv[i]);				continue;			}		} else			devname = argv[i];/*	do a couple of safety checks	the given name should be a character device, and it should not be the same	as the controlling tty*/		if (stat(devname, &ttystat2)) {			printf("%s\n", strerror(errno));			continue;		}		if (((ttystat2.st_mode & S_IFMT) & S_IFCHR) != S_IFCHR) {			printf("not a character device\n");			continue;		}#ifdef HAVE_ST_RDEV		if (ttystat2.st_rdev == ttystat.st_rdev) {			printf("cannot create a pconsole loop\n");			continue;		}		if (find_Conn_by_rdev(ttystat2.st_rdev) != NULL) {			printf("already attached\n");			continue;		}#else		if (find_Conn_by_name(devname) != NULL) {			printf("already attached\n");			continue;		}#endif/*	allocate connection object*/		if ((c = new_Conn()) == NULL) {			printf("out of memory (?)\n");			return -1;		}		c->dev = strdup(devname);		if (devname != argv[i])			c->hostname = strdup(argv[i]);#ifdef HAVE_ST_RDEV		c->rdev = ttystat2.st_rdev;#endif/*	open the device*/		if ((c->fd = open(devname, O_RDWR)) == -1) {			printf("%s\n", strerror(errno));			destroy_Conn(c);			continue;		}		add_Conn(c);		printf("Ok\n");		write(c->fd, buf, len);		/* tell target we're attached */	}	return 0;}int cmd_detach(char **argv) {int i, len;char *tty, buf[256];Conn *c;	if (argv == NULL || argv[0] == NULL) {		printf("usage: detach [hostname#]<tty device name> [...]\n");		return 1;	}	tty = ttyname(fileno(stdin));	sprintf(buf, "\r\n[pconsole detached from tty %s]\r\n", (tty == NULL) ? "(unknown)" : tty);	len = strlen(buf);	for(i = 0; argv[i] != NULL; i++) {		if ((c = find_Conn_by_dev(argv[i])) == NULL			&& (c = find_Conn_by_hostname(argv[i])) == NULL) {			printf("not attached to %s\n", argv[i]);			continue;		}		do {			if (c->hostname != NULL)				printf("detaching from %s#%s : ", c->hostname, c->dev);			else				printf("detaching from %s : ", c->dev);			if (c->fd > 0)				write(c->fd, buf, len);			remove_Conn(c);			destroy_Conn(c);			printf("Ok\n");		} while((c = find_Conn_by_hostname(argv[i])) != NULL			|| (c = find_Conn_by_dev(argv[i])) != NULL);	}	return 0;}int cmd_list(char **argv) {Conn *c;	if (AllConns == NULL) {		printf("pconsole: currently not attached to any terminal device\n");		return 0;	}	printf("Currently attached to:\n");	for(c = AllConns; c != NULL; c = c->next) {#ifdef HAVE_ST_RDEV		if (c->hostname != NULL)			printf(" %-16s %-20s (device no %d, %d)\n", c->dev, c->hostname, ((int)c->rdev >> 8) & 0xff, (int)c->rdev & 0xff);		else			printf(" %-16s %-20s (device no %d, %d)\n", c->dev, " ", ((int)c->rdev >> 8) & 0xff, (int)c->rdev & 0xff);#else		if (c->hostname != NULL)			printf(" %-16s %s\n", c->dev, c->hostname);		else			printf(" %-16s\n", c->dev);#endif	}	return 0;}/* EOB */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品v国产精品v日韩精品| 国产电影一区二区三区| 51精品秘密在线观看| 国产成人综合自拍| 日日欢夜夜爽一区| 国产精品久久久久久久久免费丝袜| 欧美日韩一区二区三区高清| 高清不卡在线观看av| 日韩av一二三| 一区二区三区电影在线播| 日韩欧美一二三| 欧美性做爰猛烈叫床潮| 国产91精品精华液一区二区三区 | 国产亚洲va综合人人澡精品 | 精品国产99国产精品| 91色九色蝌蚪| 国产成人免费xxxxxxxx| 老司机精品视频导航| 亚洲国产成人porn| 亚洲精品第1页| 欧美国产日韩在线观看| 久久久天堂av| 欧美大片一区二区三区| 666欧美在线视频| 久久精品国产一区二区| 日韩免费福利电影在线观看| 欧美色图天堂网| 99麻豆久久久国产精品免费| 国产一区二区不卡在线| 九九国产精品视频| 免费久久精品视频| 日日骚欧美日韩| 日韩成人dvd| 日韩精品一级二级 | 日韩综合小视频| 亚洲午夜激情av| 亚洲一区在线电影| 亚洲婷婷综合久久一本伊一区| 亚洲国产成人一区二区三区| 久久久久久久精| 国产日韩精品视频一区| 国产欧美一区二区精品性| 国产日韩高清在线| 中文一区一区三区高中清不卡| 久久久精品综合| 国产欧美视频在线观看| 久久久久久亚洲综合| 日本一区免费视频| 国产精品免费久久久久| 亚洲天天做日日做天天谢日日欢| 国产精品成人一区二区三区夜夜夜| 国产精品久久久久三级| 18涩涩午夜精品.www| 亚洲一级二级三级| 日韩高清在线一区| 精品无人区卡一卡二卡三乱码免费卡| 精品夜夜嗨av一区二区三区| 国产毛片精品视频| www.久久久久久久久| 在线一区二区视频| 欧美一区二视频| 久久网站最新地址| 中文字幕一区二区三区四区 | 国产精品乱子久久久久| 国产精品成人免费在线| 亚洲国产一区在线观看| 久久精品国产亚洲高清剧情介绍 | 欧美性感一区二区三区| 日韩午夜精品电影| 国产精品拍天天在线| 亚洲精品中文字幕乱码三区| 日韩精品福利网| 国产精品99久久久久| 暴力调教一区二区三区| 欧美系列在线观看| 久久一区二区视频| 亚洲激情综合网| 美女视频黄免费的久久| 波波电影院一区二区三区| 欧美精品精品一区| 国产欧美日本一区二区三区| 亚洲一区二区三区自拍| 国内精品自线一区二区三区视频| 99综合影院在线| 日韩欧美亚洲国产另类| 日韩美女精品在线| 麻豆91免费观看| 一本一本久久a久久精品综合麻豆| 欧美一区二区三区免费在线看| 国产日本欧美一区二区| 婷婷开心激情综合| 99亚偷拍自图区亚洲| 欧美一级欧美一级在线播放| 成人免费在线观看入口| 精品一区二区国语对白| 91久久线看在观草草青青| 国产亚洲一区二区在线观看| 午夜免费久久看| 99久久国产综合精品麻豆| 日韩免费视频一区| 亚洲国产美女搞黄色| 成人精品国产一区二区4080| 91麻豆精品国产自产在线| 亚洲欧洲另类国产综合| 国产在线麻豆精品观看| 欧美精品在线视频| 亚洲综合在线视频| 大桥未久av一区二区三区中文| 欧美一区二区三区在线电影| 中文字幕一区av| 国产精品白丝jk黑袜喷水| 91精品国产高清一区二区三区蜜臀| 1区2区3区国产精品| 国产成人av资源| 欧美不卡123| 美女在线一区二区| 国产福利不卡视频| 成人福利视频在线看| 精品美女一区二区| 蜜桃一区二区三区在线观看| 日本福利一区二区| 亚洲免费色视频| 波多野结衣的一区二区三区| 国产日韩一级二级三级| 国产在线国偷精品免费看| 日韩视频在线观看一区二区| 午夜视频一区二区三区| 欧美日韩久久一区| 亚洲一区二区三区爽爽爽爽爽| 一本久道中文字幕精品亚洲嫩| 中文字幕免费在线观看视频一区| 国产剧情一区二区| 久久麻豆一区二区| 国产精品亚洲专一区二区三区| 日韩女同互慰一区二区| 美腿丝袜亚洲综合| 欧美电视剧免费观看| 激情另类小说区图片区视频区| 精品少妇一区二区三区免费观看| 日本亚洲一区二区| 欧美一级片在线| 韩日精品视频一区| 久久九九99视频| 成人激情校园春色| 亚洲欧美在线高清| 色老综合老女人久久久| 亚洲最大的成人av| 91精品国产色综合久久久蜜香臀| 秋霞电影一区二区| 欧美videos大乳护士334| 久久成人麻豆午夜电影| 国产亚洲精品免费| av不卡一区二区三区| 亚洲一区二区视频| 91精品国产一区二区人妖| 久久99精品久久久| 欧美韩日一区二区三区四区| 91丝袜国产在线播放| 亚洲第一福利一区| 精品日韩在线观看| 成人午夜av影视| 夜夜嗨av一区二区三区四季av | 国产一区二区在线免费观看| 久久九九久精品国产免费直播| 国产高清精品网站| 欧美美女喷水视频| 九色|91porny| 亚洲欧洲精品成人久久奇米网| 欧美在线免费观看亚洲| 美女看a上一区| 国产精品传媒视频| 91 com成人网| 成人蜜臀av电影| 午夜精品123| 国产天堂亚洲国产碰碰| 欧美综合在线视频| 国产在线播精品第三| 亚洲精品精品亚洲| 欧美大片顶级少妇| 日本韩国一区二区| 九九**精品视频免费播放| 亚洲丝袜另类动漫二区| 欧美一区国产二区| 99久久精品国产导航| 免费人成在线不卡| 亚洲欧洲99久久| 日韩免费观看高清完整版在线观看| 国产91综合网| 欧美aaaaaa午夜精品| 一区二区中文视频| 欧美mv日韩mv国产网站app| 91亚洲精品一区二区乱码| 看电视剧不卡顿的网站| 一区二区三区中文在线观看| 精品国产区一区| 欧美午夜不卡在线观看免费| 国产成人av电影在线| 三级在线观看一区二区| 成人免费一区二区三区在线观看| 精品少妇一区二区三区在线视频|