From 0e56b9d563d7479c8802af7f6e51ba0d9e2bf4c8 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Sat, 8 Oct 2011 18:12:56 +0000 Subject: [PATCH] Keyy off of JS_VERSION instead of the function name. Last commit before stuff starts to break. --- src/sbbs3/exec.cpp | 4 ++-- src/sbbs3/js_global.c | 4 ++-- src/sbbs3/js_internal.c | 21 +++++++++++++++++++-- src/sbbs3/js_rtpool.c | 2 +- src/sbbs3/jsexec.c | 4 ++-- src/sbbs3/sbbs.h | 16 +++++++++++++++- src/sbbs3/services.c | 6 +++--- src/sbbs3/websrvr.c | 4 ++-- 8 files changed, 46 insertions(+), 15 deletions(-) diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp index 715e0a1494..5406fcfba9 100644 --- a/src/sbbs3/exec.cpp +++ b/src/sbbs3/exec.cpp @@ -553,7 +553,7 @@ js_BranchCallback(JSContext *cx, JSScript *script) return(js_CommonBranchCallback(cx,&sbbs->js_branch)); } -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 static JSBool js_OperationCallback(JSContext *cx) { @@ -665,7 +665,7 @@ long sbbs_t::js_execfile(const char *cmd, const char* startup_dir, JSObject* sco if(scope==NULL) { js_branch.counter=0; // Reset loop counter -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(js_cx, js_OperationCallback); #else JS_SetBranchCallback(js_cx, js_BranchCallback); diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index efcbae5fbc..b112b5a64b 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -166,7 +166,7 @@ static JSBool js_BranchCallback(JSContext *cx, JSScript* script) return js_CommonBranchCallback(cx,&bg->branch); } -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 static JSBool js_OperationCallback(JSContext *cx) { @@ -311,7 +311,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) /* Set our branch callback (which calls the generic branch callback) */ JS_SetContextPrivate(bg->cx, bg); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(bg->cx, js_OperationCallback); #else JS_SetBranchCallback(bg->cx, js_BranchCallback); diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c index cc9ece4ccf..835c2c952b 100644 --- a/src/sbbs3/js_internal.c +++ b/src/sbbs3/js_internal.c @@ -278,14 +278,14 @@ js_eval(JSContext *parent_cx, JSObject *parent_obj, uintN argc, jsval *argv, jsv #ifdef EVAL_BRANCH_CALLBACK JS_SetContextPrivate(cx, JS_GetPrivate(parent_cx, parent_obj)); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(cx, js_OperationCallback); #else JS_SetBranchCallback(cx, js_BranchCallback); #endif #else /* Use the branch callback from the parent context */ JS_SetContextPrivate(cx, JS_GetContextPrivate(parent_cx)); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(cx, JS_GetOperationCallback(parent_cx)); #else callback=JS_SetBranchCallback(parent_cx,NULL); @@ -429,6 +429,23 @@ static JSClass js_internal_class = { ,JS_FinalizeStub /* finalize */ }; +#if JS_VERSION >= 185 +char* DLLCALL js_getstring(JSContext *cx, JSString *str) +{ + size_t len; + const jschar *val; + char *ret; + + if(!(val=JS_GetStringCharsAndLength(cx, str, &len))) + return NULL; + if(!(ret=malloc(len+1)) + return NULL; + memcpy(ret, val, len); + ret[len]=0; + return ret; +} +#endif + void DLLCALL js_EvalOnExit(JSContext *cx, JSObject *obj, js_branch_t* branch) { char* p; diff --git a/src/sbbs3/js_rtpool.c b/src/sbbs3/js_rtpool.c index a4df254f78..e87650e4a3 100644 --- a/src/sbbs3/js_rtpool.c +++ b/src/sbbs3/js_rtpool.c @@ -129,7 +129,7 @@ void DLLCALL jsrt_Release(JSRuntime *rt) void DLLCALL jsrt_TriggerAll(void) { -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 int i; int j; JSContext *iterp,*cx; diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 61cdcc27dc..f864482a30 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -615,7 +615,7 @@ js_BranchCallback(JSContext *cx, JSScript *script) return(js_CommonBranchCallback(cx,&branch)); } -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 static JSBool js_OperationCallback(JSContext *cx) { @@ -814,7 +814,7 @@ long js_exec(const char *fname, char** args) branch.terminated=&terminated; -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(js_cx, js_OperationCallback); #else JS_SetBranchCallback(js_cx, js_BranchCallback); diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index f015b6a5d8..be82d900b8 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -105,10 +105,23 @@ extern int thread_suid_broken; /* NPTL is no longer broken */ #define XP_PC #define XP_WIN #endif - #define JS_THREADSAFE /* Required! */ +#ifndef __cplusplus + #include <stdbool.h> + #include <inttypes.h> +#endif + #include <jsconfig.h> +#if JS_VERSION < 185 + #define JS_THREADSAFE +#endif #include <jsapi.h> +#if (JS_VERSION < 185) || (defined __cplusplus) #include <jsprf.h> /* JS-safe sprintf functions */ #include <jsnum.h> /* JSDOUBLE_IS_NaN() */ +#endif +#if JS_VERSION >= 185 + #define JSScript JSObject + #define JS_DestroyScript(cx,script) +#endif #endif @@ -1036,6 +1049,7 @@ extern "C" { DLLEXPORT JSBool DLLCALL js_CommonBranchCallback(JSContext*, js_branch_t*); DLLEXPORT void DLLCALL js_EvalOnExit(JSContext*, JSObject*, js_branch_t*); DLLEXPORT void DLLCALL js_PrepareToExecute(JSContext*, JSObject*, const char *filename, const char* startup_dir); + DLLEXPORT char* DLLCALL js_getstring(JSContext *cx, JSString *str); /* js_system.c */ DLLEXPORT JSObject* DLLCALL js_CreateSystemObject(JSContext* cx, JSObject* parent diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 330eeb3b33..259dc6be96 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -949,7 +949,7 @@ js_BranchCallback(JSContext *cx, JSScript *script) return js_CommonBranchCallback(cx,&client->branch); } -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 static JSBool js_OperationCallback(JSContext *cx) { @@ -1153,7 +1153,7 @@ static void js_service_thread(void* arg) lprintf(LOG_ERR,"%04d !JavaScript FAILED to compile script (%s)",socket,spath); else { js_PrepareToExecute(js_cx, js_glob, spath, /* startup_dir */NULL); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(js_cx, js_OperationCallback); #else JS_SetBranchCallback(js_cx, js_BranchCallback); @@ -1256,7 +1256,7 @@ static void js_static_service_thread(void* arg) val = BOOLEAN_TO_JSVAL(JS_FALSE); JS_SetProperty(js_cx, js_glob, "logged_in", &val); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(js_cx, js_OperationCallback); #else JS_SetBranchCallback(js_cx, js_BranchCallback); diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 60533bab33..5866e96813 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -4430,7 +4430,7 @@ js_BranchCallback(JSContext *cx, JSScript *script) return(js_CommonBranchCallback(cx,&session->js_branch)); } -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 static JSBool js_OperationCallback(JSContext *cx) { @@ -4459,7 +4459,7 @@ js_initcx(http_session_t *session) JS_SetErrorReporter(js_cx, js_ErrorReporter); -#ifdef USE_JS_OPERATION_CALLBACK +#if JS_VERSION>180 JS_SetOperationCallback(js_cx, js_OperationCallback); #else JS_SetBranchCallback(js_cx, js_BranchCallback); -- GitLab