[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rpm-cvs
Subject:    [CVS] RPM: rpm/js/ Makefile.am rpmps-js.c tjs.c rpm/js/tscripts/ Ps.js...
From:       "Jeff Johnson" <jbj () rpm5 ! org>
Date:       2009-04-28 5:29:54
Message-ID: 20090428052954.D26245700 () rpm5 ! org
[Download RAW message or body]

  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   28-Apr-2009 07:29:54
  Branch: HEAD                             Handle: 2009042805295400

  Modified files:
    rpm/js                  Makefile.am rpmps-js.c tjs.c uuid-js.c
    rpm/js/tscripts         Ps.js

  Log:
    - js: Macros: stub in the class.
    - js: Ps: add methods, handle JSCLASS_NEW_RESOLVE, always succeed in getprop.

  Summary:
    Revision    Changes     Path
    1.12        +2  -2      rpm/js/Makefile.am
    1.6         +58 -23     rpm/js/rpmps-js.c
    1.19        +16 -13     rpm/js/tjs.c
    1.4         +47 -0      rpm/js/tscripts/Ps.js
    1.9         +1  -1      rpm/js/uuid-js.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/js/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 Makefile.am
  --- rpm/js/Makefile.am	27 Apr 2009 01:01:14 -0000	1.11
  +++ rpm/js/Makefile.am	28 Apr 2009 05:29:54 -0000	1.12
  @@ -58,13 +58,13 @@
   
   noinst_HEADERS = \
   	rpmjsfile.h \
  -	rpmds-js.h rpmfi-js.h rpmhdr-js.h rpmmi-js.h rpmps-js.h \
  +	rpmds-js.h rpmfi-js.h rpmhdr-js.h rpmmacro-js.h rpmmi-js.h rpmps-js.h \
   	rpmte-js.h rpmts-js.h \
   	syck-js.h uuid-js.h
   
   rpmjsm_la_SOURCES = \
   	rpmjsfile.c \
  -	rpmds-js.c rpmfi-js.c rpmhdr-js.c rpmmi-js.c rpmps-js.c \
  +	rpmds-js.c rpmfi-js.c rpmhdr-js.c rpmmacro-js.c rpmmi-js.c rpmps-js.c \
   	rpmte-js.c rpmts-js.c \
   	syck-js.c uuid-js.c
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/rpmps-js.c
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 rpmps-js.c
  --- rpm/js/rpmps-js.c	27 Apr 2009 01:01:14 -0000	1.5
  +++ rpm/js/rpmps-js.c	28 Apr 2009 05:29:54 -0000	1.6
  @@ -18,18 +18,64 @@
   /* --- helpers */
   
   /* --- Object methods */
  +static JSBool
  +rpmps_push(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
  +{
  +    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmpsClass, NULL);
  +    rpmps ps = ptr;
  +    char *pkgNEVR;
  +    char *altNEVR;
  +    JSObject *o;
  +    rpmProblemType type;
  +    char *dn;
  +    char *bn;
  +    uint32 ui;
  +    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, "ssoissu",
  +		&pkgNEVR, &altNEVR, &o, &type, &dn, &bn, &ui)))
  +	goto exit;
  +    rpmpsAppend(ps, type, pkgNEVR, o, dn, bn, altNEVR, ui);
  +
  +    ok = JS_TRUE;
  +exit:
  +    return ok;
  +}
  +
  +static JSBool
  +rpmps_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
  +{
  +    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmpsClass, NULL);
  +    rpmps ps = ptr;
  +    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);  +
  +    rpmpsPrint(NULL, ps);
  +
  +    ok = JS_TRUE;
  +    return ok;
  +}
   
   static JSFunctionSpec rpmps_funcs[] = {
  +    { "push",	rpmps_push,		0,0,0},
  +    { "print",	rpmps_print,		0,0,0},
       JS_FS_END
   };
   
   /* --- Object properties */
   enum rpmps_tinyid {
       _DEBUG	= -2,
  +    _LENGTH	= -3,
   };
   
   static JSPropertySpec rpmps_props[] = {
       {"debug",	_DEBUG,		JSPROP_ENUMERATE,	NULL,	NULL},
  +    {"length",	_LENGTH,	JSPROP_ENUMERATE,	NULL,	NULL},
       {NULL, 0, 0, NULL, NULL}
   };
   
  @@ -62,6 +108,10 @@
   	*vp = INT_TO_JSVAL(_debug);
   	ok = JS_TRUE;
   	break;
  +    case _LENGTH:
  +	*vp = INT_TO_JSVAL(rpmpsNumProblems(ps));
  +	ok = JS_TRUE;
  +	break;
       default:
   	break;
       }
  @@ -69,6 +119,7 @@
       if (!ok) {
   _PROP_DEBUG_EXIT(_debug);
       }
  +ok = JS_TRUE;	/* XXX avoid immediate interp exit by always succeeding. */
       return ok;
   }
   
  @@ -102,35 +153,20 @@
   	JSObject **objp)
   {
       void * ptr = JS_GetInstancePrivate(cx, obj, &rpmpsClass, NULL);
  -    static char hex[] = "0123456789abcdef";
  -    JSString *idstr;
  -    const char * name;
  -    JSString * valstr;
  -    char value[5];
  +    rpmps ps = ptr;
       JSBool ok = JS_FALSE;
   
   _RESOLVE_DEBUG_ENTRY(_debug);
   
  -    if (flags & JSRESOLVE_ASSIGNING) {
  +    if ((flags & JSRESOLVE_ASSIGNING)
  +     || (ps == NULL)) {	/* don't resolve to parent prototypes objects. */
  +	*objp = NULL;
   	ok = JS_TRUE;
   	goto exit;
       }
   
  -    if ((idstr = JS_ValueToString(cx, id)) == NULL)
  -	goto exit;
  +    *objp = obj;	/* XXX always resolve in this object. */
   
  -    name = JS_GetStringBytes(idstr);
  -    if (name[1] == '\0' && xisalpha(name[0])) {
  -	value[0] = '0'; value[1] = 'x';
  -	value[2] = hex[(name[0] >> 4) & 0xf];
  -	value[3] = hex[(name[0]     ) & 0xf];
  -	value[4] = '\0';
  - 	if ((valstr = JS_NewStringCopyZ(cx, value)) == NULL
  -	 || !JS_DefineProperty(cx, obj, name, STRING_TO_JSVAL(valstr),
  -				NULL, NULL, JSPROP_ENUMERATE))
  -	    goto exit;
  -	*objp = obj;
  -    }
       ok = JS_TRUE;
   exit:
       return ok;
  @@ -203,7 +239,6 @@
   rpmps_init(JSContext *cx, JSObject *obj)
   {
       rpmps ps;
  -    int flags = 0;
   
       if ((ps = rpmpsCreate()) == NULL)
   	return NULL;
  @@ -261,9 +296,9 @@
   #else
   JSClass rpmpsClass = {
       "Ps", JSCLASS_NEW_RESOLVE | JSCLASS_HAS_PRIVATE,
  -    JS_PropertyStub,   JS_PropertyStub, rpmps_getprop, JS_PropertyStub,
  +    rpmps_addprop,   rpmps_delprop, rpmps_getprop, rpmps_setprop,
       (JSEnumerateOp)rpmps_enumerate, (JSResolveOp)rpmps_resolve,
  -    JS_ConvertStub,	rpmps_dtor,
  +    rpmps_convert,	rpmps_dtor,
       JSCLASS_NO_OPTIONAL_MEMBERS
   };
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/tjs.c
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 tjs.c
  --- rpm/js/tjs.c	27 Apr 2009 12:37:14 -0000	1.18
  +++ rpm/js/tjs.c	28 Apr 2009 05:29:54 -0000	1.19
  @@ -8,13 +8,15 @@
   
   #include "rpmds-js.h"
   #include "rpmfi-js.h"
  -#include "rpmte-js.h"
  -#include "rpmts-js.h"
  +#include "rpmmacro-js.h"
  +#include "rpmhdr-js.h"
   #include "rpmmi-js.h"
   #include "rpmps-js.h"
  -#include "rpmhdr-js.h"
  -#include "uuid-js.h"
  +#include "rpmte-js.h"
  +#include "rpmts-js.h"
   #include "syck-js.h"
  +#include "uuid-js.h"
  +
   #include "rpmjsfile.h"
   
   #include <rpmcli.h>
  @@ -39,16 +41,17 @@
   
   /*@unchecked@*/ /*@observer@*/
   static struct rpmjsClassTable_s classTable[] = {
  -    { "Ds",		rpmjs_InitDsClass,	13 },
  -    { "Fi",		rpmjs_InitFiClass,	14 },
  -    { "File",		   js_InitFileClass,	1 },
  -    { "Hdr",		rpmjs_InitHdrClass,	12 },
  -    { "Mi",		rpmjs_InitMiClass,	11 },
  -    { "Ps",		rpmjs_InitPsClass,	16 },
  -    { "Syck",		rpmjs_InitSyckClass,	3 },
  +    { "Ds",		rpmjs_InitDsClass,	 13 },
  +    { "Fi",		rpmjs_InitFiClass,	 14 },
  +    { "File",		   js_InitFileClass,	  1 },
  +    { "Hdr",		rpmjs_InitHdrClass,	 12 },
  +    { "Macro",		rpmjs_InitMacroClass,	  4 },
  +    { "Mi",		rpmjs_InitMiClass,	 11 },
  +    { "Ps",		rpmjs_InitPsClass,	 16 },
  +    { "Syck",		rpmjs_InitSyckClass,	  3 },
       { "Te",		rpmjs_InitTeClass,	-15 },
  -    { "Ts",		rpmjs_InitTsClass,	10 },
  -    { "Uuid",		rpmjs_InitUuidClass,	2 },
  +    { "Ts",		rpmjs_InitTsClass,	 10 },
  +    { "Uuid",		rpmjs_InitUuidClass,	  2 },
   };
   
   /*@unchecked@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/tscripts/Ps.js
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 Ps.js
  --- rpm/js/tscripts/Ps.js	27 Apr 2009 11:37:55 -0000	1.3
  +++ rpm/js/tscripts/Ps.js	28 Apr 2009 05:29:54 -0000	1.4
  @@ -1,9 +1,56 @@
   if (loglvl) print("--> Ps.js");
   
  +var RPMPROB_BADARCH	= 0;    /*!< (unused) package ... is for a different \
architecture */  +var RPMPROB_BADOS	= 1;      /*!< (unused) package ... is for a \
different operating system */  +var RPMPROB_PKG_INSTALLED = 2; /*!< package ... is \
already installed */  +var RPMPROB_BADRELOCATE	= 3; /*!<path ... is not relocatable \
for package ... */  +var RPMPROB_REQUIRES	= 4;   /*!< package ... has unsatisfied \
Requires: ... */  +var RPMPROB_CONFLICT	= 5;   /*!< package ... has unsatisfied \
Conflicts: ... */  +var RPMPROB_NEW_FILE_CONFLICT = 6; /*!< file ... conflicts \
between attemped installs of ... */  +var RPMPROB_FILE_CONFLICT = 7; /*!<file ... \
from install of ... conflicts with file from package ... */  +var \
RPMPROB_OLDPACKAGE	= 8; /*!< package ... (which is newer than ...) is already \
installed */  +var RPMPROB_DISKSPACE	= 9;  /*!< installing package ... needs ... on \
the ... filesystem */  +var RPMPROB_DISKNODES	= 10;  /*!< installing package ... \
needs ... on the ... filesystem */  +var RPMPROB_RDONLY	= 11;     /*!< installing \
package ... on ... rdonly filesystem */  +var RPMPROB_BADPRETRANS	= 12; /*!< \
(unimplemented) */  +var RPMPROB_BADPLATFORM	= 13; /*!< package ... is for a \
different platform */  +var RPMPROB_NOREPACKAGE	= 14; /*!< re-packaged package ... is \
missing */  +
   var ps = new Ps();
   ack("typeof ps;", "object");
   ack("ps instanceof Ps;", true);
   ack("ps.debug = 1;", 1);
   ack("ps.debug = 0;", 0);
   
  +var PKG = "PKG";
  +var ALT = "ALT";
  +var KEY = "/path/pkg";
  +var dn = "/root/";
  +var bn = "file";
  +var ui = 1234;
  +var R = "R ALT";
  +var C = "C ALT";
  +var A = "ARCH/";
  +var O = "OS";
  +
  +ack("ps.length", 0);
  +// ack("ps.push(PKG, ALT', KEY, RPMPROB_BADARCH, dn, bn, ui)", undefined);
  +// ack("ps.push(PKG, ALT', KEY, RPMPROB_BADOS, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_PKG_INSTALLED, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_BADRELOCATE, dn, bn, ui)", undefined);
  +ack("ps.push(PKG,   R, KEY, RPMPROB_REQUIRES, dn, bn, ui)", undefined);
  +ack("ps.push(PKG,   C, KEY, RPMPROB_CONFLICT, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_NEW_FILE_CONFLICT, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_FILE_CONFLICT, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_OLDPACKAGE, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_DISKSPACE, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_DISKNODES, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_RDONLY, dn, bn, ui)", undefined);
  +// ack("ps.push(PKG, ALT, KEY, RPMPROB_BADPRETRANS, dn, bn, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_BADPLATFORM, A, O, ui)", undefined);
  +ack("ps.push(PKG, ALT, KEY, RPMPROB_NOREPACKAGE, dn, bn, ui)", undefined);
  +ack("ps.length", 12);
  +
  +ack("ps.print()", undefined);
  +
   if (loglvl) print("<-- Ps.js");
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/uuid-js.c
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 uuid-js.c
  --- rpm/js/uuid-js.c	27 Apr 2009 21:29:01 -0000	1.8
  +++ rpm/js/uuid-js.c	28 Apr 2009 05:29:54 -0000	1.9
  @@ -234,7 +234,7 @@
       *objp = obj;        /* XXX always resolve in this object. */
   
       ok = JS_TRUE;
  -exit;
  +exit:
       return ok;
   }
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic