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:   29-Apr-2009 22:39:33
  Branch: HEAD                             Handle: 2009042920393300

  Modified files:
    rpm/js                  rpmmi-js.c
    rpm/js/tscripts         Mi.js

  Log:
    - js: Mi: add a pattern() method.

  Summary:
    Revision    Changes     Path
    1.12        +28 -4      rpm/js/rpmmi-js.c
    1.6         +1  -1      rpm/js/tscripts/Mi.js
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/js/rpmmi-js.c
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 rpmmi-js.c
  --- rpm/js/rpmmi-js.c 27 Apr 2009 13:43:03 -0000      1.11
  +++ rpm/js/rpmmi-js.c 29 Apr 2009 20:39:33 -0000      1.12
  @@ -31,11 +31,34 @@
   if (_debug)
   fprintf(stderr, "==> %s(%p,%p,%p[%u],%p) ptr %p\n", __FUNCTION__, cx, obj, 
argv, (unsigned)argc, rval, ptr);
   
  -    if ((h = rpmdbNextIterator(mi)) != NULL) {
  -     JSObject *Hdr = rpmjs_NewHdrObject(cx, h);
  -     *rval = OBJECT_TO_JSVAL(Hdr);
  -    }
  +    if ((h = rpmdbNextIterator(mi)) != NULL)
  +     *rval = OBJECT_TO_JSVAL(rpmjs_NewHdrObject(cx, h));
  +    ok = JS_TRUE;
  +
  +exit:
  +    return ok;
  +}
  +
  +static JSBool
  +rpmmi_pattern(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval 
*rval)
  +{
  +    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmiClass, NULL);
  +    rpmdbMatchIterator mi = ptr;
  +    int tag = RPMTAG_NAME;
  +    rpmMireMode type = RPMMIRE_REGEX;
  +    char * pattern = NULL;
  +    JSBool ok = JS_FALSE;
  +
  +if (_debug)
  +fprintf(stderr, "==> %s(%p,%p,%p[%u],%p) ptr %p\n", __FUNCTION__, cx, obj, 
argv, (unsigned)argc, rval, ptr);
  +
  +    if (!(ok = JS_ConvertArguments(cx, argc, argv, "is", &tag, &pattern)))
  +     goto exit;
  +
  +    rpmdbSetIteratorRE(mi, tag, type, pattern);
  +
       ok = JS_TRUE;
  +    *rval = BOOLEAN_TO_JSVAL(ok);
   
   exit:
       return ok;
  @@ -43,6 +66,7 @@
   
   static JSFunctionSpec rpmmi_funcs[] = {
       {"next", rpmmi_next,             0,0,0},
  +    {"pattern",      rpmmi_pattern,          0,0,0},
       JS_FS_END
   };
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/tscripts/Mi.js
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 Mi.js
  --- rpm/js/tscripts/Mi.js     27 Apr 2009 13:43:03 -0000      1.5
  +++ rpm/js/tscripts/Mi.js     29 Apr 2009 20:39:33 -0000      1.6
  @@ -13,7 +13,7 @@
   ack("mi.length", 1);
   ack("mi.count", 1);
   ack("mi.instance", 0);       // zero before iterating
  -ack("mi.pattern(RPMTAG_NAME, 0, N)", false);
  +ack("mi.pattern(RPMTAG_NAME, N)", true);
   
   var h = mi.next()
   nack("mi.instance", 0);      // non-zero when iterating
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to