RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 12-Jun-2009 19:20:55 Branch: HEAD Handle: 2009061217205401 Modified files: rpm CHANGES rpm/rpmio rpmjs.c Log: - js: stub-in requires/loadModule global methods. - js: save the rpmjs interpreter pointer in rt private data. Summary: Revision Changes Path 1.3017 +2 -0 rpm/CHANGES 1.13 +45 -18 rpm/rpmio/rpmjs.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3016 -r1.3017 CHANGES --- rpm/CHANGES 10 Jun 2009 18:21:08 -0000 1.3016 +++ rpm/CHANGES 12 Jun 2009 17:20:54 -0000 1.3017 @@ -1,5 +1,7 @@ 5.2b1 -> 5.3a1 + - jbj: js: stub-in requires/loadModule global methods. + - jbj: js: save the rpmjs interpreter pointer in rt private data. - jbj: add the Fedorable tag(s) for file digests. - jbj: reserve ~1K in RPMSIGTAG_PADDING for now. - jbj: squirrel: capture stdout in an iob. @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs.c ============================================================================ $ cvs diff -u -r1.12 -r1.13 rpmjs.c --- rpm/rpmio/rpmjs.c 10 May 2009 15:45:25 -0000 1.12 +++ rpm/rpmio/rpmjs.c 12 Jun 2009 17:20:55 -0000 1.13 @@ -138,6 +138,32 @@ return ok; } +FILE *gErrFile = NULL; +FILE *gOutFile = NULL; + +static JSBool +Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + FILE * fp = (gOutFile ? gOutFile : stdout); + uintN i; + +if (_rpmjs_debug < 0) +fprintf(stderr, "==> %s(%p,%p,%p[%u],%p)\n", __FUNCTION__, cx, obj, argv, (unsigned)argc, rval); + + for (i = 0; i < argc; i++) { + JSString *str; + char *bytes; + if ((str = JS_ValueToString(cx, argv[i])) == NULL + || (bytes = JS_EncodeString(cx, str)) == NULL) + return JS_FALSE; + fprintf(fp, "%s%s", i ? " " : "", bytes); + JS_free(cx, bytes); + } + fputc('\n', fp); + fflush(fp); + return JS_TRUE; +} + static JSBool compileOnly = JS_FALSE; static JSBool @@ -178,37 +204,23 @@ return ok; } -FILE *gErrFile = NULL; -FILE *gOutFile = NULL; - static JSBool -Print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +Require(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { - FILE * fp = (gOutFile ? gOutFile : stdout); - uintN i; if (_rpmjs_debug < 0) fprintf(stderr, "==> %s(%p,%p,%p[%u],%p)\n", __FUNCTION__, cx, obj, argv, (unsigned)argc, rval); - for (i = 0; i < argc; i++) { - JSString *str; - char *bytes; - if ((str = JS_ValueToString(cx, argv[i])) == NULL - || (bytes = JS_EncodeString(cx, str)) == NULL) - return JS_FALSE; - fprintf(fp, "%s%s", i ? " " : "", bytes); - JS_free(cx, bytes); - } - fputc('\n', fp); - fflush(fp); return JS_TRUE; } static JSFunctionSpec shell_functions[] = { JS_FS("version", Version, 0,0,0), JS_FS("options", Options, 0,0,0), - JS_FS("load", Load, 1,0,0), JS_FS("print", Print, 0,0,0), + JS_FS("load", Load, 1,0,0), + JS_FS("loadModule", Require, 0,0,0), + JS_FS("require", Require, 0,0,0), JS_FS_END }; @@ -376,13 +388,18 @@ if (av == NULL) av = _av; ac = argvCount(av); + /* Initialize JS runtime. */ rt = JS_NewRuntime(8L * 1024L * 1024L); assert(rt != NULL); #ifdef NOTYET JS_SetContextCallback(rt, ContextCallback); #endif + /* Set maximum memory for JS engine to infinite. */ + JS_SetGCParameter(rt, JSGC_MAX_BYTES, (size_t)-1); + JS_SetRuntimePrivate(rt, js); js->rt = rt; + /* Initialize JS context. */ cx = JS_NewContext(rt, 8192); assert(cx != NULL); #ifdef NOTYET @@ -391,9 +408,19 @@ JS_SetOptions(cx, JSOPTION_VAROBJFIX); JS_SetVersion(cx, JSVERSION_LATEST); JS_SetErrorReporter(cx, reportError); +#ifdef NOTYET + JS_CStringsAreUTF8(); +#endif js->cx = cx; + /* Initialize JS global object. */ glob = JS_NewObject(cx, &global_class, NULL, NULL); +assert(glob != NULL); + +#ifdef NOTYET + JS_AddNamedRoot(cx, &glob, "glob"); +#endif + xx = JS_InitStandardClasses(cx, glob); #ifdef JS_HAS_FILE_OBJECT (void) js_InitFileClass(cx, glob); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org