RPM Package Manager, CVS Repository
/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 13-Aug-2010 23:34:03
Branch: HEAD Handle: 2010081321340201
Modified files:
rpm CHANGES
rpm/rpmio librpmio.vers rpmbag.c rpmbag.h
Log:
- solve: stub-in toy add/del methods.
- solve: permit multiple solvedb's in a rpmbag.
Summary:
Revision Changes Path
1.3413 +2 -0 rpm/CHANGES
2.190 +2 -0 rpm/rpmio/librpmio.vers
2.2 +35 -1 rpm/rpmio/rpmbag.c
2.2 +21 -0 rpm/rpmio/rpmbag.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.3412 -r1.3413 CHANGES
--- rpm/CHANGES 13 Aug 2010 17:30:18 -0000 1.3412
+++ rpm/CHANGES 13 Aug 2010 21:34:02 -0000 1.3413
@@ -1,4 +1,6 @@
5.3.2 -> 5.4a1:
+ - jbj: solve: stub-in toy add/del methods.
+ - jbj: solve: permit multiple solvedb's in a rpmbag.
- jbj: solve: generalize %_dbpath to permit multiple rpmdb's.
- jbj: solve: flip --aid "opt-in" behavior to --noaid "opt-out".
- jbj: solve: fix: don't free the package file name when depsolving.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/librpmio.vers
============================================================================
$ cvs diff -u -r2.189 -r2.190 librpmio.vers
--- rpm/rpmio/librpmio.vers 12 Aug 2010 13:39:55 -0000 2.189
+++ rpm/rpmio/librpmio.vers 13 Aug 2010 21:34:03 -0000 2.190
@@ -305,6 +305,8 @@
rpmaugSave;
rpmaugSet;
_rpmbag_debug;
+ rpmbagAdd;
+ rpmbagDel;
rpmbagNew;
rpmbcImplVecs;
_rpmbf_debug;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmbag.c
============================================================================
$ cvs diff -u -r2.1 -r2.2 rpmbag.c
--- rpm/rpmio/rpmbag.c 12 Aug 2010 13:39:55 -0000 2.1
+++ rpm/rpmio/rpmbag.c 13 Aug 2010 21:34:03 -0000 2.2
@@ -16,13 +16,18 @@
/*@unchecked@*/
int _rpmbag_debug = 0;
+static int _maxnsdbp = 5;
+
static void rpmbagFini(void * _bag)
/*@globals fileSystem @*/
/*@modifies *_bag, fileSystem @*/
{
rpmbag bag = _bag;
+ bag->sdbp = _free(bag->sdbp);
+ bag->nsdbp = 0;
bag->fn = _free(bag->fn);
+ bag->flags = 0;
}
/*@unchecked@*/ /*@only@*/ /*@null@*/
@@ -47,10 +52,39 @@
rpmbag rpmbagNew(const char * fn, int flags)
{
rpmbag bag = rpmbagGetPool(_rpmbagPool);
- int xx;
if (fn)
bag->fn = xstrdup(fn);
+ bag->flags = flags;
+
+ bag->sdbp = xcalloc(_maxnsdbp, sizeof(*bag->sdbp));
return rpmbagLink(bag);
}
+
+int rpmbagAdd(rpmbag bag, void *_db, int dbmode)
+{
+ if (bag && bag->sdbp && bag->nsdbp >= 0 && bag->nsdbp < _maxnsdbp) {
+ rpmsdb * sdbp = bag->sdbp;
+ int i = bag->nsdbp++; /* XXX find empty slot */
+ sdbp[i] = xcalloc(1, sizeof(*sdbp[i]));
+ sdbp[i]->dbmode = dbmode;
+ sdbp[i]->_db = _db;
+ }
+
+ return 0;
+}
+
+int rpmbagDel(rpmbag bag, int i)
+{
+
+ if (bag && bag->sdbp && i >= 0 && i <= _maxnsdbp) {
+ rpmsdb * sdbp = bag->sdbp;
+ memset(sdbp[i], 0, sizeof(*sdbp[i]));
+ sdbp[i] = _free(sdbp[i]);
+ if ((i+1) == (int)bag->nsdbp) /* XXX find empty slot */
+ bag->nsdbp--;
+ }
+
+ return 0;
+}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmbag.h
============================================================================
$ cvs diff -u -r2.1 -r2.2 rpmbag.h
--- rpm/rpmio/rpmbag.h 12 Aug 2010 13:39:55 -0000 2.1
+++ rpm/rpmio/rpmbag.h 13 Aug 2010 21:34:03 -0000 2.2
@@ -13,14 +13,29 @@
/** \ingroup rpmio
*/
typedef /*@refcounted@*/ struct rpmbag_s * rpmbag;
+typedef struct rpmsdb_s * rpmsdb;
#if defined(_RPMBAG_INTERNAL)
+struct rpmsdb_s {
+ struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */
+ void * _bf;
+ int dbmode;
+ void * _db;
+#if defined(__LCLINT__)
+/*@refs@*/
+ int nrefs; /*!< (unused) keep splint happy */
+#endif
+};
+
/** \ingroup rpmio
*/
struct rpmbag_s {
struct rpmioItem_s _item; /*!< usage mutex and pool identifier. */
const char * fn;
+ int flags;
+ size_t nsdbp;
+ rpmsdb * sdbp;
#if defined(__LCLINT__)
/*@refs@*/
int nrefs; /*!< (unused) keep splint happy */
@@ -77,6 +92,12 @@
/*@globals fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/;
+int rpmbagAdd(rpmbag bag, void *_db, int dbmode)
+ /*@*/;
+
+int rpmbagDel(rpmbag bag, int i)
+ /*@*/;
+
#ifdef __cplusplus
}
#endif
@@ .
Received on Fri Aug 13 23:34:03 2010