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

📄 clients.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
字号:
#line 128 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"#include "mal_config.h"#include "clients.h"#include "mal_scenario.h"#include "mal_instruction.h"#include "mal_client.h"#include "mal_authorize.h"#ifdef HAVE_LIBREADLINE#include <readline/readline.h>#include <readline/history.h>#endifstrCLTsetListing(int *ret, int *flag){	Client c;	(void) ret;		/*fool compiler */	c = MCgetClient();	*ret = c->listing;	c->listing = *flag;	return MAL_SUCCEED;}strCLTgetClientId(int *ret){	Client c = MCgetClient();	*ret = c - mal_clients;	return MAL_SUCCEED;}strCLTgetScenario(str *ret){	Client c = MCgetClient();	if (c->scenario)		*ret = GDKstrdup(c->scenario);	else		*ret = GDKstrdup("nil");	return MAL_SUCCEED;}strCLTsetScenario(str *ret, str *nme){	Client c = MCgetClient();	str msg = MAL_SUCCEED;	msg = setScenario(c, *nme);	*ret = 0;	if (msg == NULL)		*ret = GDKstrdup(c->scenario);	return msg;}static char *local_itoa(int i){	static char buf[32];	sprintf(buf, "%d", i);	return buf;}voidCLTtimeConvert(time_t l, char *s){			struct tm localt;#ifdef HAVE_LOCALTIME_R			(void) localtime_r(&l, &localt);#else			/* race condition: return value could be			 * overwritten in parallel thread before			 * assignment complete */			localt = *localtime(&l);#endif#ifdef HAVE_ASCTIME_R3			asctime_r(&localt, s, sizeof(s));#else#ifdef HAVE_ASCTIME_R			asctime_r(&localt, s);#else			/* race condition: return value could be			 * overwritten in parallel thread before copy			 * complete, however on Windows, asctime is			 * thread-safe */			strncpy(s, asctime(&localt), 26);#endif#endif			s[24] = 0;}strCLTInfo(int *ret){	Client c = MCgetClient();	BAT *b = BATnew(TYPE_str, TYPE_str, 12);	char s[26];	if (b == 0)		throw(MAL, "clients.info", "failed to create BAT");	BUNins(b, "user", local_itoa((int)c->user), FALSE);	BUNins(b, "password", "", FALSE); /* FIXME: get rid of this */	BUNins(b, "permission", local_itoa(c->permission), FALSE);	BUNins(b, "scenario", c->scenario, FALSE);	BUNins(b, "timer", local_itoa((int) c->timer), FALSE);	BUNins(b, "trace", local_itoa(c->itrace), FALSE);	BUNins(b, "listing", local_itoa(c->listing), FALSE);	BUNins(b, "debug", local_itoa(c->debug), FALSE);	BUNins(b, "cwd", c->cwd, FALSE);	CLTtimeConvert((time_t) c->login,s);	BUNins(b, "login", s, FALSE);	CLTtimeConvert((time_t) c->delay,s);	BUNins(b, "delay", s, FALSE);	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 83 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	if (BBPindex("client_info_") <= 0)		BATname(b, "client_info_");	BATroles(b,"client","info");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 248 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	return MAL_SUCCEED;}strCLTLogin(int *ret){	BAT *b = BATnew(TYPE_int, TYPE_str, 12);	int i;	char s[26];	if (b == 0)		throw(MAL, "clients.getLogins", "failed to create BAT");	for (i = 0; i < MAL_MAXCLIENTS; i++) {		Client c = mal_clients+i;		if (c->mode >= CLAIMED && c->user != oid_nil) {			CLTtimeConvert((time_t) c->login,s);			BUNins(b, &i, s, FALSE);		}	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 83 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	if (BBPindex("client_login_") <= 0)		BATname(b, "client_login_");	BATroles(b,"client","login");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 269 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	return MAL_SUCCEED;}#line 276 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"strCLTusers(int *ret){	BAT *b = BATnew(TYPE_int, TYPE_str, 12);	int i;	if (b == 0)		throw(MAL, "clients.users", "failed to create BAT");	for (i = 0; i < MAL_MAXCLIENTS; i++) {		Client c = mal_clients+i;		if (c->mode >= CLAIMED && c->user != oid_nil)			b = BUNins(b, &i, local_itoa((int)c->user), FALSE);	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 83 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	if (BBPindex("client_users_") <= 0)		BATname(b, "client_users_");	BATroles(b,"client","users");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 290 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"	return MAL_SUCCEED;}strCLTsetHistory(int *ret, str *fname){	Client c= MCgetClient();	(void) ret;	if( c->history){#ifdef HAVE_LIBREADLINE		write_history(c->history);#endif		GDKfree(c->history);	}	if( *fname == str_nil)		c->history = NULL;	else {		c->history = GDKstrdup(*fname);#ifdef HAVE_LIBREADLINE		read_history(c->history);#endif	}	return MAL_SUCCEED;}strCLTexit(int *ret){	Client c = MCgetClient();	(void) ret;		/* fool compiler */	c->mode = FINISHING;	throw(MAL, "client.exit", "Exit session with soft error");}strCLTquit(int *ret, int *timeout){	Client c = MCgetClient();	(void) ret;		/* fool compiler */	if( c != mal_clients )		throw(MAL, "client.quit", 			"Server not stopped from console.");	MCshutdown(c, *timeout);	return MAL_SUCCEED;}strCLTquitDefault(int *ret){	int timeout = 0;	return CLTquit(ret,&timeout);}strCLTtrace(int *res, int *flg){    (void) res;     /* fool compiler */    (void) MCtraceAllClients(*flg);    return MAL_SUCCEED;}strCLTstop(int *ret, str *nme){    (void) ret;     /* fool compiler */	(void) nme;/*    return stopClient(MCgetClient(), *nme);*/	return MAL_SUCCEED;}#line 369 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTaddUser(oid *ret, str *usr, str *pw, bat *sc) {	str tmp;		rethrow("addUser", tmp, AUTHaddUser(ret, usr, pw, sc));	return(MAL_SUCCEED);}#line 381 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTremoveUser(int *ret, str *usr) {	str tmp;	(void) ret;	rethrow("removeUser", tmp, AUTHremoveUser(usr));	return(MAL_SUCCEED);}#line 394 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTchangeUsername(int *ret, str *old, str *new) {	str tmp;	(void) ret;	rethrow("changeUsername", tmp, AUTHchangeUsername(old, new));	return(MAL_SUCCEED);}#line 407 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTchangePassword(int *ret, str *old, str *new) {	str tmp;	(void) ret;	rethrow("changePassword", tmp, AUTHchangePassword(old, new));	return(MAL_SUCCEED);}#line 420 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTsetPassword(int *ret, str *usr, str *new) {	str tmp;	(void) ret;	rethrow("setPassword", tmp, AUTHsetPassword(usr, new));	return(MAL_SUCCEED);}#line 433 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTcheckPermission(int *ret, str *usr, str *pw, str *sc) {	str tmp;	str ch = "";	str algo = "plain";	oid id;	(void) ret;	rethrow("checkPermission", tmp, AUTHcheckCredentials(&id, usr, pw, &ch, &algo, sc));	return(MAL_SUCCEED);}#line 449 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTaddScenario(int *ret, str *usr, str *sc) {	str tmp;	(void) ret;	rethrow("addScenario", tmp, AUTHaddScenario(usr, sc));	return(MAL_SUCCEED);}#line 462 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTremoveScenario(int *ret, str *usr, str *sc) {	str tmp;	(void) ret;	rethrow("removeScenario", tmp, AUTHremoveScenario(usr, sc));	return(MAL_SUCCEED);}#line 475 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"str CLTgetUsers(bat *ret, bat *scens) {	str tmp;	rethrow("getUsers", tmp, AUTHgetUsers(ret, scens));	return(MAL_SUCCEED);}#line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/clients.mx"

⌨️ 快捷键说明

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