[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