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

Reply via email to