static JSBool xgg_pluginhelper_add(JSContext *pcxa, JSObject *pobja, uintN argc, jsval *pva1, jsval *rval) { char *psz1 = JS_GetStringBytes(JS_ValueToString(pcxa, pva1[1])); XJSE_TRACE("xgg_pluginhelper_add (%s)", psz1); XJSE_XGG_PLUGINHELPER_PRIV *pv0 = 0; pv0 = JS_GetPrivate(pcxa, pobja); //XJSE_SAFENNP(pv0->pszurl, free); //pv0->pszurl = (char*)xjse_malloc(0, strlen(pszurl) + 1); //strcpy(pv0->pszurl, pszurl); return JS_TRUE; }
static JSBool smjs_load_uri(JSContext *ctx, uintN argc, jsval *rval) { jsval *argv = JS_ARGV(ctx, rval); struct smjs_load_uri_hop *hop; struct download *download; JSString *jsstr; unsigned char *uri_string; struct uri *uri; if (argc < 2) return JS_FALSE; jsstr = JS_ValueToString(smjs_ctx, argv[0]); uri_string = JS_EncodeString(smjs_ctx, jsstr); uri = get_uri(uri_string, 0); if (!uri) return JS_FALSE; download = mem_alloc(sizeof(*download)); if (!download) { done_uri(uri); return JS_FALSE; } hop = mem_alloc(sizeof(*hop)); if (!hop) { mem_free(download); done_uri(uri); return JS_FALSE; } hop->callback = argv[1]; hop->ses = smjs_ses; if (!JS_AddNamedValueRoot(smjs_ctx, &hop->callback, "smjs_load_uri_hop.callback")) { mem_free(hop); mem_free(download); done_uri(uri); return JS_FALSE; } download->data = hop; download->callback = (download_callback_T *) smjs_loading_callback; load_uri(uri, NULL, download, PRI_MAIN, CACHE_MODE_NORMAL, -1); done_uri(uri); return JS_TRUE; }
JSBool win32_setdlldirectory(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval) { JS_BeginRequest(cx); if(argc < 1) { JS_ReportError(cx, "Must pass a path to SetDllDirectory."); JS_EndRequest(cx); return JS_FALSE; } JSString * str = JS_ValueToString(cx, *argv); *rval = SetDllDirectory((LPWSTR)JS_GetStringChars(str)) ? JSVAL_TRUE : JSVAL_FALSE; JS_EndRequest(cx); return JS_TRUE; }
int cScriptEngine::Start() { JSBool ok = 0; m_rval = 0; ok = JS_EvaluateScript(m_cx, m_gObj, m_script_code, m_script_length, "", 0, &m_rval); if(ok == JS_TRUE) { JSString *str; str = JS_ValueToString(m_cx, m_rval); char *s = JS_GetStringBytes(str); } else { JSString *str; str = JS_ValueToString(m_cx, m_rval); char *s = JS_GetStringBytes(str); // error return 2; } return 0; }
/* The object function callback. */ JSBool go_obj_func_callback(JSContext *cx, uintN argc, jsval *vp) { JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp)); jsval name; JS_GetProperty(cx, callee, "name", &name); char* cname = JS_EncodeString(cx, JS_ValueToString(cx, name)); JSBool result = call_go_obj_func(JS_GetPrivate(cx, JS_THIS_OBJECT(cx, vp)), cname, argc, vp); JS_free(cx, (void*)cname); return result; }
static JSBool vm_dumpGCStats(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { const char *filename = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); FILE *file; depth = JS_SuspendRequest(cx); file = fopen(filename, "w"); flock(file, LOCK_EX); JS_ResumeRequest(cx); js_DumpGCStats(); fclose(file); }
Eina_Bool elixir_object_get_str(JSContext *cx, JSObject *obj, const char *name, const char **value) { JSString *str; jsval propertie; if (!JS_GetProperty(cx, obj, name, &propertie)) return EINA_FALSE; str = JS_ValueToString(cx, propertie); *value = elixir_get_string_bytes(str, NULL); return EINA_TRUE; }
static JSBool syck_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp) { if (_debug) fprintf(stderr, "==> %s(%p,%p,0x%lx[%u],0x%x,%p) property %s flags 0x%x{%s,%s,%s,%s,%s}\n", __FUNCTION__, cx, obj, (unsigned long)id, (unsigned)JSVAL_TAG(id), (unsigned)flags, objp, JS_GetStringBytes(JS_ValueToString(cx, id)), flags, (flags & JSRESOLVE_QUALIFIED) ? "qualified" : "", (flags & JSRESOLVE_ASSIGNING) ? "assigning" : "", (flags & JSRESOLVE_DETECTING) ? "detecting" : "", (flags & JSRESOLVE_DECLARING) ? "declaring" : "", (flags & JSRESOLVE_CLASSNAME) ? "classname" : ""); return JS_TRUE; }
JS_STATIC_DLL_CALLBACK(JSBool) js__print(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval) { uintN i, n; JSString * str; for (i = n = 0; i < argc; i++) { str = JS_ValueToString(cx, argv[i]); if (!str) return JS_FALSE; fprintf(stdout, "%s%s", i ? " " : "", JS_GetStringBytes(str)); } n++; if (n) fputc('\n', stdout); return JS_TRUE; }
static JSBool teletone_add_tone(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval) { struct teletone_obj *tto = JS_GetPrivate(cx, obj); if (argc > 2) { int x; int nmax = argc; char *fval; char *map_str; map_str = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); if ( TELETONE_MAX_TONES < nmax ) { nmax = TELETONE_MAX_TONES; } for (x = 1; x < nmax; x++) { fval = JS_GetStringBytes(JS_ValueToString(cx, argv[x])); tto->ts.TONES[(int) *map_str].freqs[x - 1] = strtod(fval, NULL); } return JS_TRUE; } return JS_FALSE; }
Dump(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { JSString *str; if (!argc) return JS_TRUE; str = JS_ValueToString(cx, argv[0]); if (!str) return JS_FALSE; char *bytes = JS_GetStringBytes(str); fputs(bytes, stderr); return JS_TRUE; }
static JSBool Load(JSContext *cx, uintN argc, jsval *vp) { SG_context *pCtx = NULL; JSObject *thisobj = JS_THIS_OBJECT(cx, vp); jsval *argv = JS_ARGV(cx, vp); uintN i; if (!thisobj) return JS_FALSE; SG_context__alloc(&pCtx); if (pCtx==NULL) return JS_FALSE; for (i = 0; i < argc; i++) { JSString *str = JS_ValueToString(cx, argv[i]); char *filename = NULL; uint32 oldopts; JSObject *scriptObj; if (!str) { SG_CONTEXT_NULLFREE(pCtx); return JS_FALSE; } argv[i] = STRING_TO_JSVAL(str); sg_jsglue__jsstring_to_sz(pCtx, cx, str, &filename); if (SG_context__has_err(pCtx)) { SG_CONTEXT_NULLFREE(pCtx); return JS_FALSE; } errno = 0; oldopts = JS_GetOptions(cx); JS_SetOptions(cx, oldopts | JSOPTION_COMPILE_N_GO | JSOPTION_NO_SCRIPT_RVAL); scriptObj = JS_CompileFile(cx, thisobj, filename); SG_NULLFREE(pCtx, filename); JS_SetOptions(cx, oldopts); if (!scriptObj) { SG_CONTEXT_NULLFREE(pCtx); return JS_FALSE; } if (!compileOnly && !JS_ExecuteScript(cx, thisobj, scriptObj, NULL)) { SG_CONTEXT_NULLFREE(pCtx); return JS_FALSE; } } SG_CONTEXT_NULLFREE(pCtx); return JS_TRUE; }
JSBool jwindow_alert(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { #define WEBC_JSCRIPT_USER_ALERT 1 #if (WEBC_JSCRIPT_USER_ALERT) if (argc >= 1) { char *str = JS_GetStringBytes(JS_ValueToString(cx, argv[0])); webc_user_alert_box((char *)str); } return JS_TRUE; #else return jwindow_dialog(cx, obj, argc, argv, rval, WHICH_DIALOGUE_ALERT); #endif }
JSBool win32_setcurrentdirectory(JSContext * cx, JSObject * obj, uintN argc, jsval *argv, jsval * rval) { JS_BeginRequest(cx); if(argc < 1 || !JSVAL_IS_STRING(*argv)) { JS_ReportError(cx, "Must provide directory name to setcurrentdirectory."); JS_EndRequest(cx); return JS_FALSE; } JSString * pathName = JS_ValueToString(cx, *argv); *rval = SetCurrentDirectory((LPWSTR)JS_GetStringChars(pathName)) ? JSVAL_TRUE : JSVAL_FALSE; JS_EndRequest(cx); return JS_TRUE; }
static JSBool jsGoto( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { if( ( 1 <= argc ) && JSVAL_IS_STRING( argv[0] ) ) { gotoCalled_ = true ; abortCodeQueue(); absoluteURL( JS_GetStringBytes( JS_ValueToString( cx, argv[0] ) ), gotoURL_ ); } *rval = JSVAL_TRUE ; return JS_TRUE ; }
void js_prop_set_from_jsval(JSContext *cx, prop_t *p, jsval value, int recurse) { JSBool b; if(JSVAL_IS_INT(value)) { prop_set_int(p, JSVAL_TO_INT(value)); } else if(JSVAL_IS_BOOLEAN(value)) { prop_set_int(p, JSVAL_TO_BOOLEAN(value)); } else if(JSVAL_IS_DOUBLE(value)) { double d; if(JS_ValueToNumber(cx, value, &d)) prop_set_float(p, d); } else if(JS_HasInstance(cx, RichText, value, &b) && b) { JSObject *o = JSVAL_TO_OBJECT(value); jsval v2; if(!JS_EnterLocalRootScope(cx)) return; if(!JS_GetProperty(cx, o, "text", &v2)) { JS_LeaveLocalRootScope(cx); return; } prop_set_string_ex(p, NULL, JS_GetStringBytes(JS_ValueToString(cx, v2)), PROP_STR_RICH); JS_LeaveLocalRootScope(cx); } else if(JSVAL_IS_VOID(value) || JSVAL_IS_NULL(value)) { prop_set_void(p); } else if(recurse && JSVAL_IS_OBJECT(value)) { js_prop_from_object(cx, JSVAL_TO_OBJECT(value), p, recurse); } else { prop_set_string(p, JS_GetStringBytes(JS_ValueToString(cx, value))); } }
static JSBool js_on_exit(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { js_branch_t* branch; if((branch=(js_branch_t*)JS_GetPrivate(cx,obj))==NULL) return(JS_FALSE); if(branch->exit_func==NULL) branch->exit_func=strListInit(); strListPush(&branch->exit_func,JS_GetStringBytes(JS_ValueToString(cx, argv[0]))); return(JS_TRUE); }
static JSBool jsWrite( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { *rval = JSVAL_VOID ; for( uintN arg = 0 ; arg < argc ; arg++ ) { JSString *str = JS_ValueToString(cx, argv[arg]); if( str ) fwrite( JS_GetStringBytes( str ), JS_GetStringLength( str ), 1, stdout ); } fflush( stdout ); return JS_TRUE ; }
//fl.fileExists 로 대체해서 필요없는 코드임 JSBool CheckExistingProject(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { if(argc != 1) return JS_FALSE; unsigned int filePathLen; unsigned short* filePath = JS_ValueToString(cx, argv[0], &filePathLen); FILE* file = OpenFileString(filePath, filePathLen, "r"); if(file) { *rval = JS_BooleanToValue(JS_TRUE); return JS_TRUE; } else { *rval = JS_BooleanToValue(JS_FALSE); return JS_TRUE; } }
/* * call-seq: * to_s() * * Converts the JavaScript object to a string, using its toString method * if available. */ static VALUE to_s(VALUE self) { RubyLandProxy* proxy; Data_Get_Struct(self, RubyLandProxy, proxy); JSContext * context = johnson_get_current_context(proxy->runtime); PREPARE_RUBY_JROOTS(context, 1); jsval proxy_value; JCHECK(get_jsval_for_proxy(proxy, &proxy_value)); JROOT(proxy_value); JSString* str = JS_ValueToString(context, proxy_value); JRETURN_RUBY(CONVERT_JS_STRING_TO_RUBY(proxy->runtime, str)); }
JSBool js_log(JSContext *cx, uintN argc, jsval *vp) { if (argc != 2) { JS_SET_RVAL(cx, vp, JSVAL_FALSE); } else { jsval *argv = JS_ARGV(cx, vp); jsval jsfilename = argv[0]; jsval jsoutput = argv[1]; char *filename = JS_GetStringBytes(JS_ValueToString(cx, jsfilename)); char *output = JS_GetStringBytes(JS_ValueToString(cx, jsoutput)); FILE *fd = fopen(filename, "a+"); if (fd != NULL) { write_timestamp(fd); fwrite(output, 1, strlen(output), fd); fwrite("\n", 1, strlen("\n"), fd); fclose(fd); JS_SET_RVAL(cx, vp, JSVAL_TRUE); } else { JS_SET_RVAL(cx, vp, JSVAL_FALSE); } } return JSVAL_TRUE; }
static JSBool js_editfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { JSString* str; sbbs_t* sbbs; if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); if((str=JS_ValueToString(cx, argv[0]))==NULL) return(JS_FALSE); sbbs->editfile(JS_GetStringBytes(str)); return(JS_TRUE); }
jsdouble js_parseFloat (JSContext* cx, jsval number) { jsval ret; jsval argv[] = {number}; JS_CallFunctionName(cx, JS_GetGlobalObject(cx), "parseFloat", 1, argv, &ret); if (strcmp(JS_GetStringBytes(JS_ValueToString(cx, ret)), "NaN") == 0) { return 0; } jsdouble nret; JS_ValueToNumber(cx, ret, &nret); return nret; }
static JSBool js_mnemonics(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { sbbs_t* sbbs; JSString* js_str; if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); if((js_str=JS_ValueToString(cx, argv[0]))==NULL) return(JS_FALSE); sbbs->mnemonics(JS_GetStringBytes(js_str)); return(JS_TRUE); }
NS_IMETHODIMP nsJSSh::ExecuteBuffer() { #ifdef DEBUG // nsCOMPtr<nsIThread> thread; // nsIThread::GetCurrent(getter_AddRefs(thread)); // printf("executing on thread %p\n", thread.get()); #endif JS_BeginRequest(mJSContext); JS_ClearPendingException(mJSContext); JSPrincipals *jsprincipals; mPrincipal->GetJSPrincipals(mJSContext, &jsprincipals); if(NS_FAILED(mContextStack->Push(mJSContext))) { NS_ERROR("failed to push the current JSContext on the nsThreadJSContextStack"); return NS_ERROR_FAILURE; } JSScript *script = JS_CompileScriptForPrincipals(mJSContext, mContextObj, jsprincipals, mBuffer, mBufferPtr, "interactive", 0); if (script) { jsval result; if (JS_ExecuteScript(mJSContext, mContextObj, script, &result) && result!=JSVAL_VOID && mOutput) { // XXX for some wrapped native objects the following code will crash; probably because the // native object is getting released before we reach this: JSString *str = JS_ValueToString(mJSContext, result); if (str) { nsDependentString chars(reinterpret_cast<const PRUnichar*> (JS_GetStringChars(str)), JS_GetStringLength(str)); NS_ConvertUTF16toUTF8 cstr(chars); PRUint32 bytesWritten; mOutput->Write(cstr.get(), cstr.Length(), &bytesWritten); } } JS_DestroyScript(mJSContext, script); } JSContext *oldcx; mContextStack->Pop(&oldcx); NS_ASSERTION(oldcx == mJSContext, "JS thread context push/pop mismatch"); JSPRINCIPALS_DROP(mJSContext, jsprincipals); JS_EndRequest(mJSContext); return NS_OK; }
VALUE convert_to_ruby(JohnsonRuntime* runtime, jsval js) { if (JSVAL_NULL == js) return Qnil; JSContext * context = johnson_get_current_context(runtime); PREPARE_RUBY_JROOTS(context, 1); JROOT(js); switch (JS_TypeOfValue(context, js)) { case JSTYPE_VOID: JRETURN_RUBY(Qnil); case JSTYPE_FUNCTION: case JSTYPE_OBJECT: if (OBJECT_TO_JSVAL(runtime->global) == js) // global gets special treatment, since the Prelude might not be loaded JRETURN_RUBY(make_ruby_land_proxy(runtime, js, "GlobalProxy")); // this conditional requires the Prelude if (js_value_is_symbol(runtime, js)) JRETURN_RUBY(ID2SYM(rb_intern(JS_GetStringBytes(JS_ValueToString(context, js))))); if (js_value_is_proxy(runtime, js)) JRETURN_RUBY(unwrap_js_land_proxy(runtime, js)); if (js_value_is_regexp(runtime, js)) JRETURN_RUBY(convert_regexp_to_ruby(runtime, js)); JRETURN_RUBY(make_ruby_land_proxy(runtime, js, "RubyLandProxy")); case JSTYPE_BOOLEAN: JRETURN_RUBY(JSVAL_TRUE == js ? Qtrue : Qfalse); case JSTYPE_STRING: JRETURN_RUBY(convert_js_string_to_ruby(runtime, JSVAL_TO_STRING(js))); case JSTYPE_NUMBER: if (JSVAL_IS_INT(js)) JRETURN_RUBY(INT2FIX(JSVAL_TO_INT(js))); else JRETURN_RUBY(rb_float_new(*JSVAL_TO_DOUBLE(js))); default: JERROR("unknown js type in switch"); } JRETURN_RUBY(Qnil); }
static JSBool gjs_log_error(JSContext *context, uintN argc, jsval *vp) { jsval *argv = JS_ARGV(context, vp); char *s; JSExceptionState *exc_state; JSString *jstr; jsval exc; if (argc != 2) { gjs_throw(context, "Must pass an exception and message string to logError()"); return JS_FALSE; } JS_BeginRequest(context); exc = argv[0]; /* JS_ValueToString might throw, in which we will only *log that the value could be converted to string */ exc_state = JS_SaveExceptionState(context); jstr = JS_ValueToString(context, argv[1]); if (jstr != NULL) argv[1] = STRING_TO_JSVAL(jstr); // GC root JS_RestoreExceptionState(context, exc_state); if (jstr == NULL) { gjs_debug(GJS_DEBUG_ERROR, "<cannot convert value to string>"); gjs_log_exception_props(context, exc); JS_EndRequest(context); return JS_TRUE; } if (!gjs_string_to_utf8(context, STRING_TO_JSVAL(jstr), &s)) { JS_EndRequest(context); return JS_FALSE; } gjs_debug(GJS_DEBUG_ERROR, "%s", s); gjs_log_exception_props(context, exc); g_free(s); JS_EndRequest(context); JS_SET_RVAL(context, vp, JSVAL_VOID); return JS_TRUE; }
JSBool xpc_DumpEvalInJSStackFrame(JSContext* cx, JSUint32 frameno, const char* text) { JSStackFrame* fp; JSStackFrame* iter = nsnull; JSUint32 num = 0; if(!cx || !text) { puts("invalid params passed to xpc_DumpEvalInJSStackFrame!"); return JS_FALSE; } printf("js[%d]> %s\n", frameno, text); while(nsnull != (fp = JS_FrameIterator(cx, &iter))) { if(num == frameno) break; num++; } if(!fp) { puts("invalid frame number!"); return JS_FALSE; } JSAutoRequest ar(cx); JSExceptionState* exceptionState = JS_SaveExceptionState(cx); JSErrorReporter older = JS_SetErrorReporter(cx, xpcDumpEvalErrorReporter); jsval rval; JSString* str; JSAutoByteString bytes; if(JS_EvaluateInStackFrame(cx, fp, text, strlen(text), "eval", 1, &rval) && nsnull != (str = JS_ValueToString(cx, rval)) && bytes.encode(cx, str)) { printf("%s\n", bytes.ptr()); } else puts("eval failed!"); JS_SetErrorReporter(cx, older); JS_RestoreExceptionState(cx, exceptionState); return JS_TRUE; }
static JSBool js_getstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { char *p; long mode=0; uintN i; size_t maxlen=0; sbbs_t* sbbs; JSString* js_str=NULL; if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); for(i=0;i<argc;i++) { if(JSVAL_IS_NUMBER(argv[i])) { if(!maxlen) JS_ValueToInt32(cx,argv[i],(int32*)&maxlen); else JS_ValueToInt32(cx,argv[i],(int32*)&mode); continue; } if(JSVAL_IS_STRING(argv[i])) { js_str = JS_ValueToString(cx, argv[i]); if (!js_str) return(JS_FALSE); } } if(!maxlen) maxlen=128; if((p=(char *)calloc(1,maxlen+1))==NULL) return(JS_FALSE); if(js_str!=NULL) sprintf(p,"%.*s",(int)maxlen,JS_GetStringBytes(js_str)); sbbs->getstr(p,maxlen,mode); js_str = JS_NewStringCopyZ(cx, p); free(p); if(js_str==NULL) return(JS_FALSE); *rval = STRING_TO_JSVAL(js_str); return(JS_TRUE); }
Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { uintN i, n; JSString *str; for (i = n = 0; i < argc; i++) { str = JS_ValueToString(cx, argv[i]); if (!str) return JS_FALSE; fprintf(gOutFile, "%s%s", i ? " " : "", JS_GetStringBytes(str)); } n++; if (n) fputc('\n', gOutFile); return JS_TRUE; }