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

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

?? testscript.cpp

?? GNU ccScript is a C++ class framework for creating a virtual machine execution system for use with a
?? CPP
字號:
// Copyright (C) 1999-2001 Open Source Telecom Corporation.//  // 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.// // As a special exception to the GNU General Public License, permission is // granted for additional uses of the text contained in its release // of ccscript.// // The exception is that, if you link the ccscript library with other// files to produce an executable, this does not by itself cause the// resulting executable to be covered by the GNU General Public License.// Your use of that executable is in no way restricted on account of// linking the ccscript library code into it.// // This exception does not however invalidate any other reasons why// the executable file might be covered by the GNU General Public License.// // This exception applies only to the code released under the // name ccscript.  If you copy code from other releases into a copy of// ccscript, as the General Public License permits, the exception does// not apply to the code that you add in this way.  To avoid misleading// anyone as to the status of such modified files, you must delete// this exception notice from them.// // If you write modifications of your own for ccscript, it is your choice// whether to permit this exception to apply to your modifications.// If you do not wish that, delete this exception notice.#include <cc++/config.h>#include <cc++/misc.h>#include <cc++/slog.h>#include <cc++/process.h>#include <cc++/strchar.h>#include <cstdlib>#ifdef	WIN32#include <process.h>#else#include <sys/wait.h>#endif#include <iostream>#include <fstream>#include "script3.h"#ifndef	WEXITSTATUS#define	WEXITSTATUS(x)	(x)#endif#ifdef	CCXX_NAMESPACESusing namespace ost;using namespace std;#endifstatic ofstream output;static char *sigtype[2] = {NULL, NULL};static bool exited = false;static int oddeven = 0;class shScript : public ScriptRuntime{public:	shScript();} _image;class shMethods : public ScriptMethods{public:        bool scrEcho(void);        bool scrSystem(void);        bool scrAlarm(void);        bool scrToken(void);};enum{	SIGEXIT = 0};class shInterp : public ScriptInterp, public Semaphore{private:	friend class shScript;	void exitThread(const char *errmsg);	bool exit(void)	{		if(!exiting)			if(ScriptInterp::exit())				return true;		cerr << "exiting..." << endl; detach(); ::exit(0);	};public:	void waitThread(void);	void signal(const char *sigid)		{ScriptInterp::signal(sigid);};	shInterp();} interp;class shCompiler : public ScriptCompiler{public:	Name *getScript(const char *name);	shCompiler();} shCompiler;shCompiler::shCompiler() :ScriptCompiler(&_image, "/ccscript/define"){}Script::Name *shCompiler::getScript(const char *name){	static bool started = false;	char fname[128], lname[128];	const char *ext;	Name *line = ScriptImage::getScript(name);	if(!line)	{		strcpy(fname, name);		ext = strrchr(name, '.');		if(!ext)			strcat(fname, ".scr");		if(!canAccess(fname) && !started)		{			cerr << "testscript: " << fname << ": cannot execute" << endl;			::exit(-1);		}		compile(fname);		if(ext && stricmp(ext, ".scr"))		{			snprintf(lname, sizeof(lname), "exec::%s", name);			name = lname;		} 		line = ScriptImage::getScript(name);		if(!line && !started)		{			cerr << "testscript: " << fname << ": compile failed" << endl;			::exit(-1);		}		if(started)			return line;		strcpy(fname, name);		strcat(fname, ".out");		output.open(fname, ios::trunc);		started = true;		commit();	}	return line;}shInterp::shInterp() :ScriptInterp(), Semaphore(){}bool shMethods::scrEcho(void){	const char *val;	while(NULL != (val = ScriptInterp::getValue(NULL)))	{		output << val;		cout << val;	}	output << endl;	cout << endl;	advance();	return true;}void shInterp::exitThread(const char *errmsg){	ScriptInterp::exitThread(errmsg);	post();}void shInterp::waitThread(void){	timeout_t timer = getTimeout();	if(!timer)		return;	if(!wait(timer))	{		enter();		if(!updated)		{			if(!ScriptInterp::signal("timeout"))				error("timeout-expired");			updated = true;		}		leave();	}	delete thread;	thread = NULL;}bool shMethods::scrAlarm(void){#ifndef	WIN32	alarm(atoi(ScriptInterp::getValue("0")));#endif	advance();	return true;}bool shMethods::scrToken(void){	unsigned argc = 0;	Line *line = getLine();	while(argc < line->argc)		cout << "[-" << line->args[argc++] << "-] ";	cout << endl;	advance();	return true;}bool shMethods::scrSystem(void){	const char *argv[33];	int argc = 0;	const char *val;	int status;#ifndef	WIN32	int pid;#endif	while(argc < 32 && (NULL != (val = ScriptInterp::getValue(NULL))))		argv[argc++] = val;	argv[argc] = NULL;#ifdef	WIN32	status = (int)_spawnvp(_P_WAIT, argv[0], argv);#else	pid = vfork();	if(!pid)	{		execvp(*argv, (char **)argv);		::exit(-1);	}#ifdef	__FreeBSD__	wait4(pid, &status, 0, NULL);#else	waitpid(pid, &status, 0);#endif	status = WEXITSTATUS(status);#endif	if(status)		error("sys-error");	else		advance();	return false;}shScript::shScript() :ScriptRuntime(){	static Script::Define interp[] = {		{"echo", false, (Method)&shMethods::scrEcho, 			(Check)&ScriptChecks::chkHasArgs},		{"sys", false, (Method)&shMethods::scrSystem, 			(Check)&ScriptChecks::chkHasArgs},		{"alarm", false, (Method)&shMethods::scrAlarm, 			(Check)&ScriptChecks::chkHasArgs},		{"token", true, (Method)&shMethods::scrToken,			(Check)&ScriptChecks::chkIgnore},		{NULL, false, NULL, NULL}};	trap("alarm");	trap("hangup");	trap("timeout");	load(interp);	Script::symsize = 64;	Script::pagesize = 1024;	Script::symlimit = (unsigned)Script::pagesize - 64;}#ifndef	WIN32static RETSIGTYPE handler(int signo){	switch(signo)	{	case SIGINT:		if(exited)			return;		alarm(0);		sigtype[oddeven] = "exit";		break;	case SIGHUP:		if(sigtype[oddeven] && stricmp(sigtype[oddeven], "alarm"))			return;		alarm(0);		sigtype[oddeven] = "hangup";		break;	case SIGALRM:		if(!sigtype[oddeven])			sigtype[oddeven] = "alarm";		alarm(0);		break;	}}#endifint main(int argc, char **argv){	char *ext;	int stepper;	char argname[10];	char lname[128];	int argcount = 0;	char *name;	Script::use_merge = true;	if(argc < 2)		::exit(-1);	if(argc != 2)	{		cerr << "use: testscript scriptname" << endl;		::exit(-1);	}#ifdef	WIN32	Script::plugins = "../w32/debug";#else	if(isDir("../modules/.libs"))		Script::plugins = "../modules/.libs";	else		Script::plugins = "../modules";#endif	ext = strrchr(argv[1], '.');	if(ext)		if(!stricmp(ext, ".scr"))			*ext = 0;	slog("testscript", Slog::classUser, Slog::levelInfo);	shCompiler.compileDefinitions("script.def");	_image.aliasModule("str", "string");	name = argv[1];	shCompiler.getScript(name);		if(ext && *ext)	{		snprintf(lname, sizeof(lname), "exec::%s", name);		name = lname;	}	if(!interp.attach(&_image, name))		::exit(-1);	while(argcount < argc)	{		snprintf(argname, sizeof(argname), "argv.%d", argcount);		interp.setConst(argname, argv[argcount++]);	}	snprintf(argname, sizeof(argname), "%d", argcount);	interp.setConst("argv.count", argname);#ifndef	WIN32	Process::setPosixSignal(SIGINT, &handler);	Process::setPosixSignal(SIGHUP, &handler);	Process::setPosixSignal(SIGALRM, &handler);#endif	while(!interp.done())	{		stepper = oddeven;		if(oddeven)			oddeven = 0;		else			++oddeven;		if(sigtype[stepper])		{			interp.signal(sigtype[stepper]);			sigtype[stepper] = NULL;		}		interp.step();		interp.waitThread();	}	interp.detach();	::exit(-1);	return -1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡高清视频专区| 国产91高潮流白浆在线麻豆 | 亚洲mv大片欧洲mv大片精品| 中国av一区二区三区| 国产女主播在线一区二区| 久久日韩粉嫩一区二区三区| 久久色在线观看| 国产人伦精品一区二区| 国产精品你懂的在线| 亚洲视频你懂的| 亚洲国产精品久久不卡毛片| 亚洲国产日产av| 日韩va欧美va亚洲va久久| 蜜桃一区二区三区在线观看| 美日韩一区二区| 国产大陆亚洲精品国产| 91精品国产手机| 日韩写真欧美这视频| 久久精品欧美日韩| 中文字幕日韩精品一区| 亚洲第一av色| 久久精品国产秦先生| 成人在线视频一区| 欧美综合一区二区三区| 91精品欧美一区二区三区综合在 | 国内成人自拍视频| 国产成人精品免费看| 日本高清成人免费播放| 91精品综合久久久久久| 国产亚洲精品福利| 亚洲一区二区三区四区在线| 美女脱光内衣内裤视频久久影院| 国产麻豆精品视频| 欧美视频一区在线| 久久综合九色综合97婷婷女人 | 亚洲主播在线播放| 久久国产婷婷国产香蕉| 91丝袜高跟美女视频| 91精品国模一区二区三区| 中文字幕不卡在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产999精品久久久久久 | 午夜欧美视频在线观看| 国产在线精品国自产拍免费| 色视频欧美一区二区三区| 欧美大片一区二区三区| 中文字幕一区二区三区蜜月| 日产欧产美韩系列久久99| 成人v精品蜜桃久久一区| 5858s免费视频成人| 国产精品二三区| 国产在线精品一区二区不卡了 | 日本午夜精品视频在线观看 | 久色婷婷小香蕉久久| 一本一本大道香蕉久在线精品| 日韩欧美成人一区二区| 亚洲精品乱码久久久久久日本蜜臀| 日本大胆欧美人术艺术动态| 色综合天天视频在线观看 | www.亚洲人| 精品久久久久久久人人人人传媒| 亚洲黄色免费网站| 成人黄色一级视频| 久久综合久久久久88| 美女www一区二区| 欧美精品乱人伦久久久久久| 亚洲男人的天堂av| 91原创在线视频| 中文字幕在线不卡| av在线播放成人| 亚洲国产精品传媒在线观看| 国产成人日日夜夜| 久久伊99综合婷婷久久伊| 久久精品国产秦先生| 日韩一区二区三区电影| 男人的天堂久久精品| 3d成人h动漫网站入口| 亚洲高清免费观看 | 成人av小说网| 国产精品的网站| 99精品欧美一区二区三区小说| 日本一区免费视频| 99热精品国产| 亚洲摸摸操操av| 欧美性色综合网| 午夜免费久久看| 日韩欧美一级特黄在线播放| 另类小说图片综合网| 日韩欧美激情一区| 国产精品资源在线看| 国产精品无遮挡| 色综合中文综合网| 国产亚洲制服色| 不卡的av电影| 亚洲人成在线观看一区二区| 欧美日韩一区久久| 久色婷婷小香蕉久久| 国产精品网站在线观看| 色综合久久久久综合体| 亚洲va国产va欧美va观看| 日韩视频一区二区三区在线播放| 国产在线视视频有精品| 蜜臀av在线播放一区二区三区| 精品三级在线看| youjizz久久| 日本不卡视频一二三区| 国产欧美日韩在线| 欧美日韩视频专区在线播放| 精品一区二区国语对白| 亚洲色图都市小说| 日韩欧美国产一区在线观看| a4yy欧美一区二区三区| 五月婷婷欧美视频| 国产网站一区二区三区| 欧美三级电影一区| 国产成人8x视频一区二区| 亚洲电影激情视频网站| 中文欧美字幕免费| 欧美一区二区视频在线观看2022 | 偷拍亚洲欧洲综合| 久久久精品中文字幕麻豆发布| 色婷婷综合久久久久中文| 久久爱www久久做| 亚洲最新视频在线观看| 久久九九久久九九| 91精品国产入口在线| 94色蜜桃网一区二区三区| 激情图区综合网| 午夜国产不卡在线观看视频| 一区二区中文字幕在线| 国产亚洲一区二区三区| 欧美夫妻性生活| 色综合久久天天| 成人动漫一区二区三区| 国产一区二区美女诱惑| 日本 国产 欧美色综合| 夜夜精品视频一区二区| 中文字幕一区三区| 国产日产欧美一区二区视频| 欧美一级久久久| 欧美人伦禁忌dvd放荡欲情| 91免费版pro下载短视频| 国产69精品久久777的优势| 国内精品国产三级国产a久久| 日韩中文欧美在线| 视频在线在亚洲| 日韩国产欧美视频| 亚欧色一区w666天堂| 一区二区国产盗摄色噜噜| 亚洲欧美激情视频在线观看一区二区三区| 久久九九全国免费| 久久精品一区二区三区不卡牛牛| 欧美xxxx在线观看| 日韩美女一区二区三区四区| 日韩视频在线你懂得| 欧美大胆人体bbbb| 一区二区三区在线播放| 国产精品理论片在线观看| 国产精品福利影院| 亚洲人快播电影网| 亚洲一区二区精品3399| 午夜精品免费在线| 日本欧美加勒比视频| 国产一区二区在线电影| 国产成人欧美日韩在线电影| 成人av免费观看| 色婷婷国产精品| 777精品伊人久久久久大香线蕉| 日韩欧美亚洲国产另类 | 成人av中文字幕| 91久久精品日日躁夜夜躁欧美| 日本大香伊一区二区三区| 欧美日韩国产精品成人| 日韩美女天天操| 亚洲国产高清在线观看视频| 亚洲欧美偷拍卡通变态| 五月天婷婷综合| 国产一区二区剧情av在线| 337p亚洲精品色噜噜噜| 国产精品亚洲第一| 成人性视频网站| 欧美亚洲一区二区在线| 日韩精品在线网站| 欧美国产乱子伦| 亚洲国产精品视频| 久久成人麻豆午夜电影| 99精品国产91久久久久久| 欧美老女人在线| 欧美激情在线一区二区三区| 亚洲一区二区三区爽爽爽爽爽 | 51午夜精品国产| 欧美国产日韩精品免费观看| 亚洲影院在线观看| 国产高清视频一区| 欧美日韩视频专区在线播放| 久久久www免费人成精品| 一区二区高清视频在线观看| 国产尤物一区二区| 欧美日韩国产综合一区二区三区| 久久久不卡网国产精品一区|