diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c index c406feedca7b773b0c1df562eb6ae72e9770951e..b84f020e88afe3e6c7157ab58ffa4f13aa340d42 100644 --- a/src/sbbs3/js_system.c +++ b/src/sbbs3/js_system.c @@ -657,13 +657,69 @@ js_timestr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } + +// Returns a mm/dd/yy or dd/mm/yy formated string +static JSBool +js_datestr(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 { + if(JSVAL_IS_STRING(argv[0])) { /* convert from string to time_t? */ + *rval = INT_TO_JSVAL( + dstrtounix(cfg,JS_GetStringBytes(JS_ValueToString(cx, argv[0])))); + return(JS_TRUE); + } + t=JSVAL_TO_INT(argv[0]); + } + unixtodstr(cfg,t,str); + js_str = JS_NewStringCopyZ(cx, str); + + *rval = STRING_TO_JSVAL(js_str); + return(JS_TRUE); +} + +// Returns a mm/dd/yy or dd/mm/yy formated string +static JSBool +js_secondstr(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]); + sectostr(t,str); + js_str = JS_NewStringCopyZ(cx, str); + + *rval = STRING_TO_JSVAL(js_str); + return(JS_TRUE); +} + + static JSFunctionSpec js_system_functions[] = { {"alias", js_alias, 1}, // return user name for alias {"matchuser", js_matchuser, 1}, // exact user name matching {"trashcan", js_trashcan, 2}, // search file for pseudo-regexp {"findstr", js_findstr, 2}, // search file for pseudo-regexp {"zonestr", js_zonestr, 0}, // convert zone int to string - {"timestr", js_timestr, 0}, // convert a time_t into a string + {"timestr", js_timestr, 0}, // convert a time_t into a time string + {"datestr", js_datestr, 0}, // convert a time_t into a date string + {"secondstr", js_secondstr, 1}, // convert a time_t into a hh:mm:ss string {0} };