]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix fatal include
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Mar 2007 22:17:02 +0000 (22:17 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Mar 2007 22:17:02 +0000 (22:17 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4471 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_utils.h
src/mod/languages/mod_spidermonkey/Makefile
src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
src/switch_utils.c

index f45c75e895ac7272588835816255fddd085b0962..32fbfb86222f9b0b9addee23d16310108a8491f2 100644 (file)
@@ -289,6 +289,7 @@ SWITCH_DECLARE(void) switch_perform_substitution(pcre *re, int match_count, char
 #define SWITCH_READ_ACCEPTABLE(status) (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK)
 SWITCH_DECLARE(size_t) switch_url_encode(char *url, char *buf, size_t len);
 SWITCH_DECLARE(char *) switch_url_decode(char *s);
+SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename);
 SWITCH_END_EXTERN_C
 
 #endif
index 284c7797808ff3bcf0ded645e075da0055c93dfb..6f638c99f9cac720192df88199811617098c3d4b 100644 (file)
@@ -7,7 +7,7 @@ depends:
        MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install js --prefix=$(PREFIX) --with-pic --with-nspr=yes
        MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install curl --prefix=$(PREFIX) --without-libidn
 
-$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
+$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c $(MODNAME).h
        $(CC) $(CFLAGS) -c $(MODNAME).c -o $(MODNAME).o 
        $(CC) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN)  $(MODNAME).o $(OBJS) $(LDFLAGS)
 
index 2f74eb59dedcb2648515ee98fee0dbfe40ac95ae..fa133fb5a65e1c0094ea68f6654d4d679afa4b42 100644 (file)
@@ -2248,7 +2248,9 @@ static JSBool js_include(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
 {
        char *code;
        if ( argc > 0 && (code = JS_GetStringBytes(JS_ValueToString(cx, argv[0])))) {
-               eval_some_js(code, cx, obj, rval);
+               if (eval_some_js(code, cx, obj, rval) < 0) {
+                       return JS_FALSE;
+               }
                return JS_TRUE;
        }
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Arguements\n");
index 3e84d0ebf0d04428c0901e9238ad65ab300f44f1..5fd34dca212b4ac551162fe706451e6c031b5518 100644 (file)
@@ -81,7 +81,8 @@ int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
        JSScript *script = NULL;
        char *cptr;
        char *path = NULL;
-       int res = 0;
+       char *script_name;
+       int result = 0;
 
        JS_ClearPendingException(cx);
 
@@ -90,19 +91,28 @@ int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval)
                script = JS_CompileScript(cx, obj, cptr, strlen(cptr), "inline", 1);
        } else {
                if (*code == '/') {
-                       script = JS_CompileFile(cx, obj, code);
+                       script_name = code;
                } else if ((path = switch_mprintf("%s%s%s", SWITCH_GLOBAL_dirs.script_dir, SWITCH_PATH_SEPARATOR, code))) {
-                       script = JS_CompileFile(cx, obj, path);
-                       switch_safe_free(path);
+                       script_name = path;
                }
+               if (script_name) {
+                       if (switch_file_exists(script_name) == SWITCH_STATUS_SUCCESS) {
+                               script = JS_CompileFile(cx, obj, script_name);
+                       } else {
+                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Open File: %s\n", script_name);
+                       }
+               } 
        }
-
+       
        if (script) {
-               res = JS_ExecuteScript(cx, obj, script, rval) == JS_TRUE ? 1 : 0;
+               result = JS_ExecuteScript(cx, obj, script, rval) == JS_TRUE ? 1 : 0;
                JS_DestroyScript(cx, script);
+       } else {
+               result = -1;
        }
-
-       return res;
+       
+       switch_safe_free(path);
+       return result;
 }
 
 
index ffa11cebb553458442d9fe1785bc57ab02b4c4d9..72dc1d31ded6e99eee07b743f799266db718ebc1 100644 (file)
@@ -331,6 +331,20 @@ SWITCH_DECLARE(switch_time_t) switch_str_time(char *in)
 
 }
 
+SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename)
+{
+       int32_t wanted = APR_FINFO_TYPE;
+       apr_finfo_t info = {0};
+       if (filename) {
+               apr_stat(&info, filename, wanted, NULL);
+               if (info.filetype != APR_NOFILE) {
+                       return SWITCH_STATUS_SUCCESS;
+               }
+       }
+       return SWITCH_STATUS_FALSE;
+}
+
+
 SWITCH_DECLARE(char *) switch_priority_name(switch_priority_t priority)
 {
        switch(priority) { /*lol*/