RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmio/ librpmio.vers rpmbag.c rpmbag.h

From: Jeff Johnson <jbj@rpm5.org>
Date: Fri 13 Aug 2010 - 23:34:03 CEST
Message-Id: <20100813213403.CB2C8D1BF9@rpm5.org>
  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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.