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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   05-Jun-2008 16:42:09
  Branch: rpm-5_0                          Handle: 2008060514420801

  Modified files:           (Branch: rpm-5_0)
    rpm                     CHANGES
    rpm/rpmdb               librpmdb.vers rpmdb.c rpmdb.h

  Log:
    - fix: is_selinux_enbled() > 0 is the correct test.
    - rpm.org: Mask signals while moving rebuilt rpmdb into place.
    - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149)
    - debuginfo: add general rpmdbCount() to get number of items for
        any tag index, not just RPMTAG_NAME as was in rpmdbCountPackages().

  Summary:
    Revision    Changes     Path
    1.2054.2.81 +5  -0      rpm/CHANGES
    1.41.2.3    +3  -1      rpm/rpmdb/librpmdb.vers
    1.233.2.3   +31 -6      rpm/rpmdb/rpmdb.c
    1.72.2.2    +14 -1      rpm/rpmdb/rpmdb.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2054.2.80 -r1.2054.2.81 CHANGES
  --- rpm/CHANGES       5 Jun 2008 13:34:58 -0000       1.2054.2.80
  +++ rpm/CHANGES       5 Jun 2008 14:42:08 -0000       1.2054.2.81
  @@ -1,6 +1,11 @@
   5.0.3 -> 5.0.4:
  +     - jbj: fix: is_selinux_enbled() > 0 is the correct test.
  +     - rpm.org: Mask signals while moving rebuilt rpmdb into place.
  +     - rpm.org: Restore rpmdb selinux contexts to default after rebuild 
(#442149)
        - jbj: debuginfo: refactor 2 existing upgrade policy rules before
        adding a new contextually sensitive rule for -debuginfo packages.
  +     - jbj: debuginfo: add general rpmdbCount() to get number of items for
  +     any tag index, not just RPMTAG_NAME as was in rpmdbCountPackages().
       - jbj: install rpmmtree.8, update POTFILES.in & Doxyfiles.in.
       - jbj: add %_build_iconsize macro to permit configuration.
       - jbj: trash-and-restore macro config for multiple CLI arg builds.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.41.2.2 -r1.41.2.3 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   29 May 2008 14:04:37 -0000      1.41.2.2
  +++ rpm/rpmdb/librpmdb.vers   5 Jun 2008 14:42:09 -0000       1.41.2.3
  @@ -40,6 +40,7 @@
       headerGetDigest;
       headerSetDigest;
       headerGetInstance;
  +    headerSetInstance;
       headerGetMagic;
       headerGetOrigin;
       headerSetOrigin;
  @@ -71,7 +72,7 @@
       headerVerifyInfo;
       hGetColor;
       _init;
  -    _use_xar;
  +    _pkgio_debug;
       prDbiOpenFlags;
       rdbOptions;
       rpmAddSignature;
  @@ -85,6 +86,7 @@
       rpmdbClose;
       rpmdbBlockDBI;
       rpmdbCloseDBI;
  +    rpmdbCount;
       rpmdbCountPackages;
       rpmdbFindFpList;
       rpmdbFreeIterator;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.233.2.2 -r1.233.2.3 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 18 May 2008 15:28:20 -0000      1.233.2.2
  +++ rpm/rpmdb/rpmdb.c 5 Jun 2008 14:42:09 -0000       1.233.2.3
  @@ -1568,8 +1568,7 @@
       return 0;
   }
   
  -/* XXX python/upgrade.c, install.c, uninstall.c */
  -int rpmdbCountPackages(rpmdb db, const char * name)
  +int rpmdbCount(rpmdb db, rpmTag tag, const void * keyp, size_t keylen)
   {
   DBC * dbcursor = NULL;
   DBT * key = alloca(sizeof(*key));
  @@ -1578,20 +1577,23 @@
       int rc;
       int xx;
   
  -    if (db == NULL)
  +    if (db == NULL || keyp == NULL)
        return 0;
   
   memset(key, 0, sizeof(*key));
   memset(data, 0, sizeof(*data));
   
  -    dbi = dbiOpen(db, RPMTAG_NAME, 0);
  +    dbi = dbiOpen(db, tag, 0);
       if (dbi == NULL)
        return 0;
   
  +     if (keylen == 0)
  +     keylen = strlen(keyp);
  +
   /[EMAIL PROTECTED]@*/
  -key->data = (void *) name;
  +key->data = (void *) keyp;
   /[EMAIL PROTECTED]@*/
  -key->size = (u_int32_t) strlen(name);
  +key->size = (u_int32_t) keylen;
   
       xx = dbiCopen(dbi, dbi->dbi_txnid, &dbcursor, 0);
       rc = dbiGet(dbi, dbcursor, key, data, DB_SET);
  @@ -1628,6 +1630,12 @@
       return rc;
   }
   
  +/* XXX python/upgrade.c, install.c, uninstall.c */
  +int rpmdbCountPackages(rpmdb db, const char * name)
  +{
  +    return rpmdbCount(db, RPMTAG_NAME, name, 0);
  +}
  +
   /**
    * Attempt partial matches on name[-version[-release]] strings.
    * @param dbi                index database handle (always RPMTAG_NAME)
  @@ -3805,7 +3813,10 @@
       const char * ofn, * nfn;
       int rc = 0;
       int xx;
  +    int selinux = is_selinux_enabled() > 0 && (matchpathcon_init(NULL) != 
-1);
  +    sigset_t sigMask;
    
  +    blockSignals(NULL, &sigMask);
       switch (_olddbapi) {
       default:
       case 4:
  @@ -3855,6 +3866,8 @@
                rc = 1;
                goto bottom;
            }
  +
  +         /* Restore uid/gid/mode/mtime/security context if possible. */
            xx = Chown(nfn, nst->st_uid, nst->st_gid);
            xx = Chmod(nfn, (nst->st_mode & 07777));
            {   struct utimbuf stamp;
  @@ -3862,6 +3875,14 @@
                stamp.modtime = nst->st_mtime;
                xx = Utime(nfn, &stamp);
            }
  +         if (selinux) {
  +             security_context_t scon = NULL;
  +             if (matchpathcon(nfn, nst->st_mode, &scon) != -1)
  +                 xx = setfilecon(nfn, scon);
  +             if (scon != NULL)
  +                 freecon(scon);
  +         }
  +
   bottom:
            ofn = _free(ofn);
            nfn = _free(nfn);
  @@ -3892,6 +3913,10 @@
       case 0:
        break;
       }
  +    unblockSignals(NULL, &sigMask);
  +
  +    if (selinux)
  +     matchpathcon_fini();
       return rc;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.h
  ============================================================================
  $ cvs diff -u -r1.72.2.1 -r1.72.2.2 rpmdb.h
  --- rpm/rpmdb/rpmdb.h 8 Feb 2008 11:40:14 -0000       1.72.2.1
  +++ rpm/rpmdb/rpmdb.h 5 Jun 2008 14:42:09 -0000       1.72.2.2
  @@ -1004,7 +1004,20 @@
   /[EMAIL PROTECTED]@*/
   
   /** \ingroup rpmdb
  - * Return number of instances of package in rpm database.
  + * Return number of instances of key in a tag index.
  + * @param db         rpm database
  + * @param tag                rpm tag
  + * @param keyp               key data
  + * @param keylen     key data length (0 will use strlen(keyp))
  + * @return           number of instances
  + */
  +int rpmdbCount(/[EMAIL PROTECTED]@*/ rpmdb db, rpmTag tag,
  +             const void * keyp, size_t keylen)
  +     /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, 
internalState @*/
  +     /[EMAIL PROTECTED] db, rpmGlobalMacroContext, fileSystem, internalState 
@*/;
  +
  +/** \ingroup rpmdb
  + * Return number of instances of package in Name index.
    * @param db         rpm database
    * @param name               rpm package name
    * @return           number of instances
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to