📄 clients.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 + -