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