From 5a870605ec7a31f0507dd4dc87c56d2d3873f3bc Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sat, 10 Nov 2001 17:33:03 +0000 Subject: [PATCH] matchuser() and trashcan() methods were using context private instead of object private. Added timestr() method. --- src/sbbs3/js_system.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c index c337155352..4c096b1f51 100644 --- a/src/sbbs3/js_system.c +++ b/src/sbbs3/js_system.c @@ -489,7 +489,7 @@ js_matchuser(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) JSString* js_str; scfg_t* cfg; - if((cfg=(scfg_t*)JS_GetContextPrivate(cx))==NULL) + if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) return(JS_FALSE); if((js_str=JS_ValueToString(cx, argv[0]))==NULL) { @@ -515,7 +515,7 @@ js_trashcan(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) JSString* js_can; scfg_t* cfg; - if((cfg=(scfg_t*)JS_GetContextPrivate(cx))==NULL) + if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) return(JS_FALSE); if((js_can=JS_ValueToString(cx, argv[0]))==NULL) { @@ -553,10 +553,34 @@ js_zonestr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } +// Returns a ctime()-like string in the system-preferred time format +static JSBool +js_timestr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + char str[128]; + time_t t; + JSString* js_str; + scfg_t* cfg; + + if((cfg=(scfg_t*)JS_GetPrivate(cx,obj))==NULL) + return(JS_FALSE); + + if(argc<1) + t=time(NULL); /* use current time */ + else + t=JSVAL_TO_INT(argv[0]); + timestr(cfg,&t,str); + js_str = JS_NewStringCopyZ(cx, str); + + *rval = STRING_TO_JSVAL(js_str); + return(JS_TRUE); +} + static JSFunctionSpec js_system_functions[] = { {"matchuser", js_matchuser, 1}, // exact user name matching {"trashcan", js_trashcan, 2}, // search file for pseudo-regexp {"zonestr", js_zonestr, 1}, // convert zone int to string + {"timestr", js_timestr, 0}, // convert a time_t into a string {0} }; -- GitLab