Beispiel #1
0
static void
copyfromdata(lua_State *L) {
	lua_getfield(L, LUA_REGISTRYINDEX, PROXYCACHE);
	lua_pushvalue(L, 1);
	// PROXYCACHE, table
	if (lua_rawget(L, -2) != LUA_TUSERDATA) {
		luaL_error(L, "Invalid proxy table %p", lua_topointer(L, 1));
	}
	struct proxy * p = lua_touserdata(L, -1);
	lua_pop(L, 2);
	copytable(L, 1, p);
	lua_pushnil(L);
	lua_setmetatable(L, 1);	// remove metatable
}
Beispiel #2
0
int main(int argc,char **argv)
#endif
{
	int x=0;
	int a=0;
	RDArsrc *mainrsrc=NULL;
	char valid_args=TRUE;
	char *copyfrommodule=NULL;
	char *copyfromname=NULL;
	char *copytomodule=NULL;
	char *copytoname=NULL;

	if(InitializeSubsystems(argc,argv,module,"DEFINE TABLES")) 
	{
		return;
	}
	mainrsrc=RDArsrcNEW(module,"DEFINE TABLES");
	x=0;
	if(modlst!=NULL) freeapplib(modlst);
	modlst=APPlibNEW();
	addlstrsrc(mainrsrc,"MODULE LIST",&x,TRUE,domodulelist,
		modlst->numlibs,&modlst->libs,NULL);
	x=0;
	if(tblavl!=NULL) { freeapplib(tblavl); tblavl=NULL; }
	tblavl=APPlibNEW();
	addlstrsrc(mainrsrc,"TABLES AVAILABLE",&x,TRUE,setvaluesx,
		tblavl->numlibs,&tblavl->libs,NULL);
	addstdrsrc(mainrsrc,"TITLE 1",VARIABLETEXT,0,NULL,FALSE);
	addstdrsrc(mainrsrc,"TITLE 2",VARIABLETEXT,0,NULL,FALSE);
	addsctrsrc(mainrsrc,"DESCRIPTION",0,NULL,FALSE);
	getvrtentries(mainrsrc);
	if(argc<4)
	{
		if(argc>1)
		{
			for(x=0;x<modlst->numlibs;++x)
			{
				if(!RDAstrcmp(modlst->libs[x],argv[1])) break;
			}
			if(x>=modlst->numlibs) x=0;
			FINDRSCSETINT(mainrsrc,"MODULE LIST",x);
			domodulelist(mainrsrc);
		}
		if(argc>2)
		{
			for(x=0;x<tblavl->numlibs;++x)
			{
				if(!RDAstrcmp(tblavl->libs[x],argv[2])) break;
			}
			if(x>=tblavl->numlibs) x=0;
			FINDRSCSETINT(mainrsrc,"TABLES AVAILABLE",x);
			setvaluesx(mainrsrc);
		}
		addbtnrsrc(mainrsrc,"ADD",TRUE,newtable,NULL);
		addbtnrsrc(mainrsrc,"SELECT",TRUE,oktable,NULL);
		addbtnrsrc(mainrsrc,"PRINT",TRUE,print_tablescb,NULL);
		addrfexrsrc(mainrsrc,"QUIT",TRUE,quitdfvir,NULL);
		addbtnrsrc(mainrsrc,"DELETE",TRUE,deletevirtest,NULL);
		addbtnrsrc(mainrsrc,"HELP",TRUE,screenhelp,NULL);
		addbtnrsrc(mainrsrc,"PRINT RESOURCES",TRUE,printrsrcs,NULL);
		APPmakescrn(mainrsrc,TRUE,quitdfvir,NULL,TRUE);
	} else if(argc>3 && !RDAstrcmp(argv[3],"-c")) 
	{
		for(a=4;a<argc;)
		{
			if(!RDAstrcmp(argv[a],"-copy"))
			{
				if(argc>(a+2))
				{
					copytomodule=stralloc(argv[a+1]);
					copytoname=stralloc(argv[a+2]);
					a+=3;
					copyfrommodule=stralloc(argv[1]);
					copyfromname=stralloc(argv[2]);
				} else {
					valid_args=FALSE;
					break;
				}
			} else {
				valid_args=FALSE;
				break;
			}
			
		}
		if(valid_args==TRUE)
		{
			copytable(NULL,copyfrommodule,copyfromname,copytomodule,copytoname);
		} else {
			print_help();
		}
		if(copyfrommodule!=NULL) Rfree(copyfrommodule);
		if(copyfromname!=NULL) Rfree(copyfromname);
		if(copytomodule!=NULL) Rfree(copytomodule);
		if(copytoname!=NULL) Rfree(copytoname);
	} else {
		print_help();
	}
}