Newer
Older
sbbs->getnodedat(sbbs->cfg.node_num,&sbbs->thisnode,0);
sbbs->nodesync();
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_exec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 mode=0;
JSString* cmd;
JSString* startup_dir=NULL;
char* p_startup_dir=NULL;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((cmd=JS_ValueToString(cx, argv[0]))==NULL)
return(JS_FALSE);
for(i=1;i<argc;i++) {
if(JSVAL_IS_NUM(argv[i]))
JS_ValueToInt32(cx,argv[i],&mode);
else if(JSVAL_IS_STRING(argv[i]))
startup_dir=JS_ValueToString(cx,argv[i]);
}
if(startup_dir!=NULL)
p_startup_dir=JS_GetStringBytes(startup_dir);
rc=JS_SUSPENDREQUEST(cx);
*rval = INT_TO_JSVAL(sbbs->external(cstr,mode,p_startup_dir));
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_exec_xtrn(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* code;
sbbs_t* sbbs;
JSString* str;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(JSVAL_IS_STRING(argv[0])) {
if((str=JS_ValueToString(cx, argv[0]))==NULL)
return(JS_FALSE);
if((code=JS_GetStringBytes(str))==NULL)
return(JS_FALSE);
for(i=0;i<sbbs->cfg.total_xtrns;i++)
if(!stricmp(sbbs->cfg.xtrn[i]->code,code))
break;
} else if(JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&i);
if(i>=sbbs->cfg.total_xtrns) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->exec_xtrn(i));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_user_event(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&i);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->user_event((user_event_t)i));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_chksyspass(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->chksyspass());
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_chkpass(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
JSString* str=JS_ValueToString(cx,argv[0]);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->chkpass(cstr,&sbbs->useron,true));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_text(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&i);
i--;
if(i<0 || i>=TOTAL_TEXT)
*rval = JSVAL_NULL;
else {
JSString* js_str = JS_NewStringCopyZ(cx, sbbs->text[i]);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
}
return(JS_TRUE);
}
static JSBool
js_replace_text(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
int32 i=0;
int len;
JSString* js_str;
sbbs_t* sbbs;
*rval = JSVAL_FALSE;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&i);
if(i<0 || i>=TOTAL_TEXT)
return(JS_TRUE);
if(sbbs->text[i]!=sbbs->text_sav[i] && sbbs->text[i]!=nulstr)
if((js_str=JS_ValueToString(cx, argv[1]))==NULL)
return(JS_TRUE);
if((p=JS_GetStringBytes(js_str))==NULL)
return(JS_TRUE);
len=strlen(p);
if(!len) {
sbbs->text[i]=nulstr;
*rval = JSVAL_TRUE;
} else {
if(sbbs->text[i]==NULL) {
sbbs->text[i]=sbbs->text_sav[i];
} else {
strcpy(sbbs->text[i],p);
*rval = JSVAL_TRUE;
}
return(JS_TRUE);
}
static JSBool
js_revert_text(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&i);
i--;
if(i<0 || i>=TOTAL_TEXT) {
for(i=0;i<TOTAL_TEXT;i++) {
if(sbbs->text[i]!=sbbs->text_sav[i] && sbbs->text[i]!=nulstr)
sbbs->text[i]=sbbs->text_sav[i];
}
} else {
if(sbbs->text[i]!=sbbs->text_sav[i] && sbbs->text[i]!=nulstr)
sbbs->text[i]=sbbs->text_sav[i];
}
*rval = JSVAL_TRUE;
return(JS_TRUE);
}
static JSBool
js_load_text(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int i;
char path[MAX_PATH+1];
FILE* stream;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_str=JS_ValueToString(cx, argv[0]))==NULL) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
rc=JS_SUSPENDREQUEST(cx);
for(i=0;i<TOTAL_TEXT;i++) {
if(sbbs->text[i]!=sbbs->text_sav[i]) {
if(sbbs->text[i]!=nulstr)
sbbs->text[i]=sbbs->text_sav[i];
}
}
sprintf(path,"%s%s.dat"
if((stream=fnopen(NULL,path,O_RDONLY))==NULL) {
*rval = JSVAL_FALSE;
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
for(i=0;i<TOTAL_TEXT && !feof(stream);i++) {
if((sbbs->text[i]=readtext((long *)NULL,stream,i))==NULL) {
i--;
continue;
}
if(!strcmp(sbbs->text[i],sbbs->text_sav[i])) { /* If identical */
sbbs->text[i]=sbbs->text_sav[i];
}
else if(sbbs->text[i][0]==0) {
sbbs->text[i]=nulstr;
}
}
if(i<TOTAL_TEXT)
*rval = JSVAL_FALSE;
*rval = JSVAL_TRUE;
fclose(stream);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_atcode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
char str[128],str2[128],*p;
char *instr;
int disp_len;
bool padded_left=false;
bool padded_right=false;
const char *cp;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
instr = strdup(JS_GetStringBytes(JS_ValueToString(cx, argv[0])));
if(instr==NULL)
return(JS_FALSE);
disp_len=strlen(instr);
if((p=strstr(instr,"-L"))!=NULL)
padded_left=true;
else if((p=strstr(instr,"-R"))!=NULL)
padded_right=true;
if(p!=NULL) {
if(*(p+2) && isdigit(*(p+2)))
disp_len=atoi(p+2);
*p=0;
}
if(disp_len >= sizeof(str))
disp_len=sizeof(str)-1;
rc=JS_SUSPENDREQUEST(cx);
cp=sbbs->atcode(instr,str2,sizeof(str2));
JS_RESUMEREQUEST(cx, rc);
if(cp==NULL)
sprintf(str,"%-*.*s",disp_len,disp_len,cp);
sprintf(str,"%*.*s",disp_len,disp_len,cp);
SAFECOPY(str,cp);
JSString* js_str = JS_NewStringCopyZ(cx, str);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
}
return(JS_TRUE);
}
static JSBool
js_logkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
JSBool comma=false;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_str=JS_ValueToString(cx, argv[0]))==NULL) {
*rval = JSVAL_FALSE;
JS_ValueToBoolean(cx,argv[1],&comma);
*rval = JSVAL_FALSE;
rc=JS_SUSPENDREQUEST(cx);
sbbs->logch(*p
,comma ? true:false // This is a dumb bool conversion to make BC++ happy
);
JS_RESUMEREQUEST(cx, rc);
*rval = JSVAL_TRUE;
return(JS_TRUE);
}
static JSBool
js_logstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_str=JS_ValueToString(cx, argv[0]))==NULL) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
if((p=JS_GetStringBytes(js_str))==NULL) {
*rval = JSVAL_FALSE;
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
*rval = JSVAL_TRUE;
return(JS_TRUE);
}
static JSBool
js_finduser(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_str=JS_ValueToString(cx, argv[0]))==NULL) {
*rval = INT_TO_JSVAL(0);
return(JS_TRUE);
}
if((p=JS_GetStringBytes(js_str))==NULL) {
*rval = INT_TO_JSVAL(0);
return(JS_TRUE);
}
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_trashcan(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* str;
char* can;
JSString* js_str;
JSString* js_can;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_can=JS_ValueToString(cx, argv[0]))==NULL) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
if((js_str=JS_ValueToString(cx, argv[1]))==NULL) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
if((can=JS_GetStringBytes(js_can))==NULL) {
*rval = JSVAL_FALSE;
return(JS_TRUE);
}
if((str=JS_GetStringBytes(js_str))==NULL) {
*rval = JSVAL_FALSE;
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->trashcan(str,can)); // user args are reversed
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_newuser(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->newuser());
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_logon(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_login(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* name;
char* pw;
JSString* js_name;
JSString* js_pw;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if((js_name=JS_ValueToString(cx, argv[0]))==NULL)
return(JS_FALSE);
if((js_pw=JS_ValueToString(cx, argv[1]))==NULL)
return(JS_FALSE);
if((name=JS_GetStringBytes(js_name))==NULL)
return(JS_FALSE);
if((pw=JS_GetStringBytes(js_pw))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->login(name,pw)==LOGIC_TRUE ? JS_TRUE:JS_FALSE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_logoff(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
JSBool prompt=JS_TRUE;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc)
JS_ValueToBoolean(cx,argv[0],&prompt);
rc=JS_SUSPENDREQUEST(cx);
if(!prompt || !sbbs->noyes(sbbs->text[LogOffQ])) {
if(sbbs->cfg.logoff_mod[0])
sbbs->exec_bin(sbbs->cfg.logoff_mod,&sbbs->main_csi);
sbbs->user_event(EVENT_LOGOFF);
sbbs->menu("logoff");
sbbs->hangup();
}
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_logout(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_automsg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_time_bank(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->time_bank();
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_text_sec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_qwk_sec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->qwk_sec();
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_xtrn_sec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_xfer_policy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_batchmenu(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->batchmenu();
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_batchdownload(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->start_batch_download());
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_batchaddlist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
cstr=JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
char prot=0;
char* p;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc>1 && (p=js_ValueToStringBytes(cx, argv[1], NULL))!=NULL)
prot=*p;
cstr=JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->sendfile(cstr,prot));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_recvfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
char prot=0;
char* p;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc>1 && (p=js_ValueToStringBytes(cx, argv[1], NULL))!=NULL)
prot=*p;
cstr=JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
rc=JS_SUSPENDREQUEST(cx);
*rval = BOOLEAN_TO_JSVAL(sbbs->recvfile(cstr,prot));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_temp_xfer(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->temp_xfer();
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_user_config(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->maindflts(&sbbs->useron);
if(!(sbbs->useron.rest&FLAG('G'))) /* not guest */
getuserdat(&sbbs->cfg,&sbbs->useron);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_user_sync(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
getuserdat(&sbbs->cfg,&sbbs->useron);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_sys_info(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_sub_info(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
uint subnum=get_subnum(cx,sbbs,argv[0]);
rc=JS_SUSPENDREQUEST(cx);
if(subnum<sbbs->cfg.total_subs)
sbbs->subinfo(subnum);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_dir_info(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
uint dirnum=get_dirnum(cx,sbbs,argv[0]);
rc=JS_SUSPENDREQUEST(cx);
if(dirnum<sbbs->cfg.total_dirs)
sbbs->dirinfo(dirnum);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_user_info(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_ver(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_sys_stats(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_node_stats(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 node_num=0;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc>0 && JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&node_num);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_userlist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 mode=UL_ALL;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc>0 && JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&mode);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_useredit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 usernumber=0;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
if(argc>0 && JSVAL_IS_NUM(argv[0]))
JS_ValueToInt32(cx,argv[0],&usernumber);
rc=JS_SUSPENDREQUEST(cx);
JS_RESUMEREQUEST(cx, rc);
static JSBool
js_change_user(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
rc=JS_SUSPENDREQUEST(cx);
sbbs->change_user();
JS_RESUMEREQUEST(cx, rc);