} #endif /* TODO: ungetmouse() */ #if 0 static JSBool js_conio_ungetmouse(JSContext *cx, uintN argc, jsval *arglist) { JSObject *obj=JS_THIS_OBJECT(cx, arglist); jsval *argv=JS_ARGV(cx, arglist); } #endif static jsSyncMethodSpec js_functions[] = { {"init", js_conio_init, 1 ,JSTYPE_VOID,JSDOCSTR("args") ,JSDOCSTR("desc"),315 }, {"suspend", js_conio_suspend, 0 ,JSTYPE_VOID,JSDOCSTR("args") ,JSDOCSTR("desc"),315 }, {"clreol", js_conio_clreol, 0 ,JSTYPE_VOID,JSDOCSTR("args") ,JSDOCSTR("desc"),315 }, {"clrscr", js_conio_clrscr, 0 ,JSTYPE_VOID,JSDOCSTR("args") ,JSDOCSTR("desc"),315 }, {"wscroll", js_conio_wscroll, 0
static JSBool js_flatten(JSContext *cx, uintN argc, jsval *arglist) { jsval *argv=JS_ARGV(cx, arglist); if(!JSVAL_IS_STRING(argv[0])) { JS_ReportError(cx, "get_size() error! Parameter is not a string."); return(JS_FALSE); } JS_FlattenString(cx, JSVAL_TO_STRING(argv[0])); JS_SET_RVAL(cx, arglist, JSVAL_VOID); return(JS_TRUE); } static jsSyncMethodSpec js_functions[] = { {"eval", js_eval, 0, JSTYPE_UNDEF, JSDOCSTR("script") ,JSDOCSTR("evaluate a JavaScript string in its own (secure) context, returning the result") ,311 }, {"gc", js_gc, 0, JSTYPE_VOID, JSDOCSTR("forced=<tt>true</tt>") ,JSDOCSTR("perform a garbage collection operation (freeing memory for unused allocated objects), " "if <i>forced</i> is <i>true</i> (the default) a garbage collection is always performed, " "otherwise it is only performed if deemed appropriate by the JavaScript engine") ,311 }, {"on_exit", js_on_exit, 1, JSTYPE_VOID, JSDOCSTR("to_eval") ,JSDOCSTR("add a string to evaluate/execute (LIFO stack) upon script's termination") ,313 }, {"report_error", js_report_error, 1, JSTYPE_VOID, JSDOCSTR("error [,fatal=<tt>false</tt>]") ,JSDOCSTR("report an error using the standard JavaScript error reporting mechanism "
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); if(argc) { if(!JS_ValueToInt32(cx,argv[0],&flags)) return(JS_FALSE); *rval = BOOLEAN_TO_JSVAL(sbbs->term_supports(flags)); } else JS_NewNumberValue(cx,sbbs->term_supports(),rval); return(JS_TRUE); } static jsSyncMethodSpec js_console_functions[] = { {"inkey", js_inkey, 0, JSTYPE_STRING, JSDOCSTR("[mode=<tt>K_NONE</tt>] [,timeout=<tt>0</tt>]") ,JSDOCSTR("get a single key with optional <i>timeout</i> in milliseconds (defaults to 0, for no wait), " "see <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> bits") ,311 }, {"getkey", js_getkey, 0, JSTYPE_STRING, JSDOCSTR("[mode=<tt>K_NONE</tt>]") ,JSDOCSTR("get a single key, with wait, " "see <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> bits") ,310 }, {"getstr", js_getstr, 0, JSTYPE_STRING, JSDOCSTR("[string] [,maxlen=<tt>128</tt>] [,mode=<tt>K_NONE</tt>]") ,JSDOCSTR("get a text string from the user, " "see <tt>K_*</tt> in <tt>sbbsdefs.js</tt> for <i>mode</i> bits") ,310 }, {"getnum", js_getnum, 0, JSTYPE_NUMBER, JSDOCSTR("[maxnum]")
if(!JS_ValueToInt32(cx, argv[0], &start_time)) return JS_FALSE; } rc=JS_SUSPENDREQUEST(cx); js_getuserdat(scfg,p); JS_SET_RVAL(cx, arglist, INT_TO_JSVAL((int32_t)gettimeleft(scfg, p->user, start_time))); JS_RESUMEREQUEST(cx, rc); return JS_TRUE; } static jsSyncMethodSpec js_user_functions[] = { {"compare_ars", js_chk_ar, 1, JSTYPE_BOOLEAN, JSDOCSTR("string ars") ,JSDOCSTR("Verify user meets access requirements string") ,310 }, {"adjust_credits", js_adjust_credits, 1, JSTYPE_BOOLEAN, JSDOCSTR("count") ,JSDOCSTR("Adjust user's credits by <i>count</i> (negative to subtract)") ,314 }, {"adjust_minutes", js_adjust_minutes, 1, JSTYPE_BOOLEAN, JSDOCSTR("count") ,JSDOCSTR("Adjust user's extra minutes <i>count</i> (negative to subtract)") ,314 }, {"posted_message", js_posted_msg, 1, JSTYPE_BOOLEAN, JSDOCSTR("[count]") ,JSDOCSTR("Adjust user's posted-messages statistics by <i>count</i> (default: 1) (negative to subtract)") ,314 },