#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
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)
{
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");
JSScript *script = NULL;
char *cptr;
char *path = NULL;
- int res = 0;
+ char *script_name;
+ int result = 0;
JS_ClearPendingException(cx);
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;
}
}
+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*/