[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2010-12-14 Thread Per �yvind Karlsen
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs   Email:  pkarl...@rpm5.org
  Module: rpm  Date:   14-Dec-2010 09:07:57
  Branch: HEAD Handle: 2010121408075601

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
rpmts: don't default rootDir to  if set to NULL, as it
confusing rpm checks on NULL  / only, without , making ie.
%posttrans scriptlets fail where NULL is used (mdvbz#61696).

  Summary:
RevisionChanges Path
1.3506  +3  -0  rpm/CHANGES
2.189   +1  -1  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3505 -r1.3506 CHANGES
  --- rpm/CHANGES   13 Dec 2010 19:14:53 -  1.3505
  +++ rpm/CHANGES   14 Dec 2010 08:07:56 -  1.3506
  @@ -1,6 +1,9 @@
   5.3.7 - 5.4a1:
   
   5.3.6 - 5.3.7:
  +- proyvind: rpmts: don't default rootDir to  if set to NULL, as it
  + confusing rpm checks on NULL  / only, without , making ie.
  + %posttrans scriptlets fail where NULL is used (mdvbz#61696).
   - jbj: fix memory leak on user lookup error.
   - proyvind: rubygems: only add runtime dependencies (Rémy Clouard).
   - proyvind: export rpmbf.h  rpmgi.h to public API.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.188 -r2.189 rpmts.c
  --- rpm/lib/rpmts.c   29 Sep 2010 02:07:24 -  2.188
  +++ rpm/lib/rpmts.c   14 Dec 2010 08:07:57 -  2.189
  @@ -922,7 +922,7 @@
ts-rootDir = _free(ts-rootDir);
   
if (rootDir == NULL) {
  -#ifndef  DYING
  +#ifdef   DYING
ts-rootDir = xstrdup();
   #endif
return;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2010-09-28 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   29-Sep-2010 04:07:24
  Branch: HEAD Handle: 2010092902072301

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- solvedb's never need a chroot prefix.

  Summary:
RevisionChanges Path
1.3456  +1  -0  rpm/CHANGES
2.188   +7  -2  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3455 -r1.3456 CHANGES
  --- rpm/CHANGES   27 Sep 2010 23:48:52 -  1.3455
  +++ rpm/CHANGES   29 Sep 2010 02:07:23 -  1.3456
  @@ -1,4 +1,5 @@
   5.3.4 - 5.4a1:
  +- jbj: solvedb's never need a chroot prefix.
   
   5.3.3 - 5.3.4:
   - jbj: release 5.3.4.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.187 -r2.188 rpmts.c
  --- rpm/lib/rpmts.c   19 Aug 2010 01:04:56 -  2.187
  +++ rpm/lib/rpmts.c   29 Sep 2010 02:07:24 -  2.188
  @@ -250,6 +250,11 @@
   rpmdb sdb = NULL;
   int sdbmode = O_RDONLY;
   const char * s = NULL;
  +#ifdef   DYING   /* XXX solevedb's never need chroot prefix. */
  +const char * rootDir = ts-rootDir;
  +#else
  +const char * rootDir = /;
  +#endif
   ARGV_t av = NULL;
   int ac = 0;
   int rc = 0;
  @@ -295,11 +300,11 @@
   
/* XXX Lstat(fn, sb) to ensure a directory? */
addMacro(NULL, _dbpath, NULL, fn, RMIL_DEFAULT);
  - xx = rpmdbOpen(ts-rootDir, sdb, dbmode, (mode_t)0644);
  + xx = rpmdbOpen(rootDir, sdb, dbmode, (mode_t)0644);
delMacro(NULL, _dbpath);
   
if (xx) {
  - const char * dn = rpmGetPath(ts-rootDir, fn, NULL);
  + const char * dn = rpmGetPath(rootDir, /, fn, NULL);
rpmlog(RPMLOG_WARNING, _(cannot open Solve database in %s\n), dn);
dn = _free(dn);
if (rc == 0)
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2010-08-18 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   19-Aug-2010 03:04:57
  Branch: HEAD Handle: 2010081901045501

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- solve: use RPMTAG_PACKAGEORIGIN paths when available.

  Summary:
RevisionChanges Path
1.3417  +1  -0  rpm/CHANGES
2.187   +21 -12 rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3416 -r1.3417 CHANGES
  --- rpm/CHANGES   16 Aug 2010 16:09:08 -  1.3416
  +++ rpm/CHANGES   19 Aug 2010 01:04:55 -  1.3417
  @@ -1,4 +1,5 @@
   5.3.2 - 5.4a1:
  +- jbj: solve: use RPMTAG_PACKAGEORIGIN paths when available.
   - jbj: neon: fix: permit building w neon-0.25.x.
   - jbj: ssl: fix: permit building w/o ECDSA.
   - jbj: ruby: fix: retrofit RSTRING_PTR/RSTRING_LEN into ruby-1.8.5.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.186 -r2.187 rpmts.c
  --- rpm/lib/rpmts.c   13 Aug 2010 23:41:55 -  2.186
  +++ rpm/lib/rpmts.c   19 Aug 2010 01:04:56 -  2.187
  @@ -341,9 +341,8 @@
   HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   rpmbag bag = ts-bag;
   rpmsdb * sdbp = NULL;
  -const char * errstr;
  +const char * errstr = NULL;
   const char * str = NULL;
  -const char * qfmt;
   rpmmi mi;
   Header bh = NULL;
   Header h = NULL;
  @@ -400,7 +399,7 @@
continue;
   
/* Look for a matching Provides: in suggested universe. */
  - rpmtag = (*keyp == '/' ? RPMTAG_BASENAMES : RPMTAG_PROVIDENAME);
  + rpmtag = (*keyp == '/' ? RPMTAG_FILEPATHS : RPMTAG_PROVIDENAME);
mi = rpmmiInit(sdb, rpmtag, keyp, keylen);
while ((h = rpmmiNext(mi)) != NULL) {
size_t hnamelen;
  @@ -441,15 +440,25 @@
   if (bh == NULL)
goto exit;
   
  -/* Format the suggested resolution path. */
  -qfmt = rpmExpand(%{?_solve_name_fmt}, NULL);
  -if (qfmt == NULL || *qfmt == '\0')
  - goto exit;
  -str = headerSprintf(bh, qfmt, NULL, rpmHeaderFormats, errstr);
  -(void)headerFree(bh);
  +/* Get the path to the package file. */
  +he-tag = RPMTAG_PACKAGEORIGIN;
  +he-p.ptr = NULL;
  +xx = headerGet(bh, he, 0);
  +if (he-p.str) {
  + str = he-p.str;
  + he-p.str = NULL;
  +} else {
  + /* Format the suggested resolution path. */
  + const char * qfmt = rpmExpand(%{?_solve_name_fmt}, NULL);
  + if (qfmt == NULL || *qfmt == '\0')
  + goto exit;
  + str = headerSprintf(bh, qfmt, NULL, rpmHeaderFormats, errstr);
  + qfmt = _free(qfmt);
  +}
  +
  +(void) headerFree(bh);
   bh = NULL;
  -qfmt = _free(qfmt);
  -if (str == NULL) {
  +if (errstr) {
rpmlog(RPMLOG_ERR, _(incorrect solve path format: %s\n), errstr);
goto exit;
   }
  @@ -515,7 +524,7 @@
   
   exit:
   if (_rpmts_debug)
  -fprintf(stderr, -- %s(%p,%p,%p) rc %d\n, __FUNCTION__, ts, ds, data, rc);
  +fprintf(stderr, -- %s(%p,%p,%p) rc %d N %s EVR %s F 0x%x\n, __FUNCTION__, 
ts, ds, data, rc, rpmdsN(ds), rpmdsEVR(ds), rpmdsFlags(ds));
   return rc;
   }
   
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpmts.h

2010-08-13 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   13-Aug-2010 23:38:39
  Branch: HEAD Handle: 2010081321383800

  Modified files:
rpm CHANGES
rpm/lib rpmts.c rpmts.h

  Log:
- solve: loop over solve db's in a bag.

  Summary:
RevisionChanges Path
1.3414  +1  -0  rpm/CHANGES
2.185   +128 -52rpm/lib/rpmts.c
2.133   +2  -2  rpm/lib/rpmts.h
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3413 -r1.3414 CHANGES
  --- rpm/CHANGES   13 Aug 2010 21:34:02 -  1.3413
  +++ rpm/CHANGES   13 Aug 2010 21:38:38 -  1.3414
  @@ -1,4 +1,5 @@
   5.3.2 - 5.4a1:
  +- jbj: solve: loop over solve db's in a bag.
   - 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.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.184 -r2.185 rpmts.c
  --- rpm/lib/rpmts.c   13 Aug 2010 13:12:15 -  2.184
  +++ rpm/lib/rpmts.c   13 Aug 2010 21:38:38 -  2.185
  @@ -33,6 +33,7 @@
   #include rpmte.h
   
   #define  _RPMTS_INTERNAL
  +#define  _RPMBAG_INTERNAL
   #include rpmts.h
   
   #include rpmcli.h
  @@ -213,14 +214,30 @@
   
   int rpmtsCloseSDB(rpmts ts)
   {
  +rpmbag bag = ts-bag;
   int rc = 0;
   
  -if (ts-sdb != NULL) {
  - (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBGET), ts-sdb-db_getops);
  - (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBPUT), ts-sdb-db_putops);
  - (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBDEL), ts-sdb-db_delops);
  - rc = rpmdbClose(ts-sdb);
  - ts-sdb = NULL;
  +if (bag != NULL) {
  + rpmsdb * sdbp = bag-sdbp;
  + int i = bag-nsdbp;
  + if (sdbp)
  + while (--i = 0) {
  + rpmdb sdb;
  + if (sdbp[i] == NULL)
  + continue;
  + sdb = sdbp[i]-_db;
  + if (sdb) {
  + int xx;
  + (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBGET), sdb-db_getops);
  + (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBPUT), sdb-db_putops);
  + (void) rpmswAdd(rpmtsOp(ts, RPMTS_OP_DBDEL), sdb-db_delops);
  + xx = rpmdbClose(sdb);
  + if (xx  rc == 0)
  + rc = xx;
  + }
  + (void) rpmbagDel(bag, i);
  + }
  + ts-bag = rpmbagFree(ts-bag);
   }
   return rc;
   }
  @@ -228,9 +245,27 @@
   int rpmtsOpenSDB(rpmts ts, int dbmode)
   {
   static int has_sdbpath = -1;
  +rpmbag bag = ts-bag;
  +rpmsdb * sdbp = NULL;
  +rpmdb sdb = NULL;
  +int sdbmode = O_RDONLY;
  +const char * s = NULL;
  +ARGV_t av = NULL;
  +int ac = 0;
   int rc = 0;
  +int xx;
  +int i;
  +
  +if (bag == NULL) {
  + bag = ts-bag = rpmbagNew(NULL, 0);
  + if (bag == NULL)
  + goto exit;
  +}
  +sdbp = bag-sdbp;
  +sdb = (sdbp[i] ? sdbp[i]-_db : NULL);
  +sdbmode = (sdbp[i] ? sdbp[i]-dbmode : O_RDONLY);
   
  -if (ts-sdb != NULL  ts-sdbmode == dbmode) {
  +if (sdb != NULL  sdbmode == dbmode) {
rc = 0;
goto exit;
   }
  @@ -244,19 +279,42 @@
goto exit;
   }
   
  -addMacro(NULL, _dbpath, NULL, %{_solve_dbpath}, RMIL_DEFAULT);
  +s = rpmExpand(%{?_solve_dbpath}, NULL);
  +xx = argvSplit(av, s, :);
  +ac = argvCount(av);
  +
  +for (i = 0; i  ac; i++) {
  + const char * fn;
  + urltype ut;
   
  -rc = rpmdbOpen(ts-rootDir, ts-sdb, ts-sdbmode, (mode_t)0644);
  -if (rc) {
  - const char * dn;
  - dn = rpmGetPath(ts-rootDir, %{_dbpath}, NULL);
  - rpmlog(RPMLOG_WARNING,
  - _(cannot open Solve database in %s\n), dn);
  - dn = _free(dn);
  - /* XXX only try to open the solvedb once. */
  - has_sdbpath = 0;
  + if (av[i] == NULL || *av[i] == '\0')
  + continue;
  +
  + fn = NULL;
  + ut = urlPath(av[i], fn);
  +
  + /* XXX Lstat(fn, sb) to ensure a directory? */
  + addMacro(NULL, _dbpath, NULL, fn, RMIL_DEFAULT);
  + xx = rpmdbOpen(ts-rootDir, sdb, dbmode, (mode_t)0644);
  + delMacro(NULL, _dbpath);
  +
  + if (xx) {
  + const char * dn = rpmGetPath(ts-rootDir, fn, NULL);
  + rpmlog(RPMLOG_WARNING, _(cannot open Solve database in %s\n), dn);
  + dn = _free(dn);
  + if (rc == 0)
  + rc = xx;
  +
  +   

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpmts.h rpm/rpmdb/ pkgio.c rp...

2010-05-20 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   21-May-2010 07:01:03
  Branch: HEAD Handle: 2010052105010102

  Modified files:
rpm CHANGES
rpm/lib rpmts.c rpmts.h
rpm/rpmdb   pkgio.c rpmns.c signature.c

  Log:
- hkp: refactor pubkey material from rpmts - rpmhkp.

  Summary:
RevisionChanges Path
1.3362  +1  -0  rpm/CHANGES
2.183   +4  -9  rpm/lib/rpmts.c
2.132   +1  -4  rpm/lib/rpmts.h
1.108   +64 -42 rpm/rpmdb/pkgio.c
1.13+18 -10 rpm/rpmdb/rpmns.c
1.65+18 -1  rpm/rpmdb/signature.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3361 -r1.3362 CHANGES
  --- rpm/CHANGES   21 May 2010 04:41:33 -  1.3361
  +++ rpm/CHANGES   21 May 2010 05:01:01 -  1.3362
  @@ -1,4 +1,5 @@
   5.3.0 - 5.4a1:
  +- jbj: hkp: refactor pubkey material from rpmts - rpmhkp.
   - jbj: hkp: fix: unbreak package signatures (but creepy logic todo++).
   - jbj: hkp: pull the trailing ...=0x out of _hkp_keyserver_query.
   - jbj: hkp: retrofit macro madness disablers for hkp:// lookups.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.182 -r2.183 rpmts.c
  --- rpm/lib/rpmts.c   8 May 2010 22:53:26 -   2.182
  +++ rpm/lib/rpmts.c   21 May 2010 05:01:02 -  2.183
  @@ -12,6 +12,7 @@
   #include rpmpgp.h
   #include rpmmacro.h/* XXX rpmtsOpenDB() needs rpmGetPath */
   #include rpmkeyring.h
  +#include rpmhkp.h
   #include rpmsx.h
   
   #include rpmtypes.h
  @@ -644,11 +645,8 @@
   ts-orderAlloced = 0;
   
   ts-keyring = rpmKeyringFree(ts-keyring);
  -ts-pkpkt = _free(ts-pkpkt);
  -ts-pkpktlen = 0;
  -(void) rpmbfFree((rpmbf)ts-pkbf);
  -ts-pkbf = NULL;
  -memset(ts-pksignid, 0, sizeof(ts-pksignid));
  +(void) rpmhkpFree(ts-hkp);
  +ts-hkp = NULL;
   
   if (_rpmts_stats)
rpmtsPrintStats(ts);
  @@ -1426,10 +1424,7 @@
   ts-probs = NULL;
   
   ts-keyring = NULL;
  -ts-pkpkt = NULL;
  -ts-pkpktlen = 0;
  -ts-pkbf = NULL;
  -memset(ts-pksignid, 0, sizeof(ts-pksignid));
  +ts-hkp = NULL;
   ts-dig = NULL;
   
   /* Set autorollback goal to the end of time. */
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.h
  
  $ cvs diff -u -r2.131 -r2.132 rpmts.h
  --- rpm/lib/rpmts.h   8 May 2010 22:53:26 -   2.131
  +++ rpm/lib/rpmts.h   21 May 2010 05:01:02 -  2.132
  @@ -308,10 +308,7 @@
   /*...@refcounted@*/ /*...@relnull@*/
   rpmKeyring keyring;  /*! Keyring in use. */
   /*...@relnull@*/
  -rpmuint8_t * pkpkt;  /*! Current pubkey packet. */
  -size_t pkpktlen; /*! Current pubkey packet length. */
  -rpmuint8_t pksignid[8];  /*! Current pubkey fingerprint. */
  -void * pkbf; /*! Negative pubkey lookup Bloom filter. */
  +void * hkp;  /*! Pubkey validation container. */
   
   struct rpmop_s ops[RPMTS_OP_MAX];
   
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/pkgio.c
  
  $ cvs diff -u -r1.107 -r1.108 pkgio.c
  --- rpm/rpmdb/pkgio.c 21 May 2010 03:16:15 -  1.107
  +++ rpm/rpmdb/pkgio.c 21 May 2010 05:01:03 -  1.108
  @@ -16,8 +16,9 @@
   #include rpmio_internal.h
   #include rpmcb.h
   #include rpmbc.h   /* XXX beecrypt base64 */
  -#include rpmbf.h   /* XXX negative lookup cache */
   #include rpmmacro.h
  +#define  _RPMHKP_INTERNAL
  +#include rpmhkp.h
   #include rpmku.h
   
   #define  _RPMTAG_INTERNAL
  @@ -163,41 +164,51 @@
   pgpDigParams pubp = pgpGetPubkey(dig);
   rpmRC res = RPMRC_NOKEY;
   const char * pubkeysource = NULL;
  -rpmbf bf;
  +rpmhkp hkp = NULL;
  +rpmbf awol;
   rpmiob iob = NULL;
   int krcache = 1; /* XXX assume pubkeys are cached in keyutils keyring. */
   int xx;
   
  +if (_rpmhkp_debug)
  +fprintf(stderr, -- %s(%p,%p)\n, __FUNCTION__, ts, _dig);
  +
   assert(dig != NULL);
   assert(sigp != NULL);
   assert(pubp != NULL);
   /*...@-sefparams@*/
   assert(rpmtsDig(ts) == dig);
   /*...@=sefparams@*/
  +if (ts-hkp == NULL)
  + ts-hkp = rpmhkpNew(NULL, 0);
  +hkp = rpmhkpLink(ts-hkp);
  +awol = 

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpmts.h rpm/rpmdb/ pkgio.c

2010-05-08 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-May-2010 00:53:27
  Branch: HEAD Handle: 2010050822532501

  Modified files:
rpm CHANGES
rpm/lib rpmts.c rpmts.h
rpm/rpmdb   pkgio.c

  Log:
- add a negative pubkey lookup Bloom filter.

  Summary:
RevisionChanges Path
1.3348  +1  -0  rpm/CHANGES
2.182   +3  -0  rpm/lib/rpmts.c
2.131   +1  -0  rpm/lib/rpmts.h
1.106   +19 -4  rpm/rpmdb/pkgio.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3347 -r1.3348 CHANGES
  --- rpm/CHANGES   8 May 2010 14:58:22 -   1.3347
  +++ rpm/CHANGES   8 May 2010 22:53:25 -   1.3348
  @@ -1,4 +1,5 @@
   5.3.0 - 5.4a1:
  +- jbj: add a negative pubkey lookup Bloom filter.
   - jbj: fix: save chroot value across embedded scriptlet execution.
from Przemyslaw Iskra spa...@pld-linux.org.
   - jbj: update version used details in INSTALL.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.181 -r2.182 rpmts.c
  --- rpm/lib/rpmts.c   6 Mar 2010 15:31:29 -   2.181
  +++ rpm/lib/rpmts.c   8 May 2010 22:53:26 -   2.182
  @@ -646,6 +646,8 @@
   ts-keyring = rpmKeyringFree(ts-keyring);
   ts-pkpkt = _free(ts-pkpkt);
   ts-pkpktlen = 0;
  +(void) rpmbfFree((rpmbf)ts-pkbf);
  +ts-pkbf = NULL;
   memset(ts-pksignid, 0, sizeof(ts-pksignid));
   
   if (_rpmts_stats)
  @@ -1426,6 +1428,7 @@
   ts-keyring = NULL;
   ts-pkpkt = NULL;
   ts-pkpktlen = 0;
  +ts-pkbf = NULL;
   memset(ts-pksignid, 0, sizeof(ts-pksignid));
   ts-dig = NULL;
   
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.h
  
  $ cvs diff -u -r2.130 -r2.131 rpmts.h
  --- rpm/lib/rpmts.h   21 Feb 2010 20:52:35 -  2.130
  +++ rpm/lib/rpmts.h   8 May 2010 22:53:26 -   2.131
  @@ -311,6 +311,7 @@
   rpmuint8_t * pkpkt;  /*! Current pubkey packet. */
   size_t pkpktlen; /*! Current pubkey packet length. */
   rpmuint8_t pksignid[8];  /*! Current pubkey fingerprint. */
  +void * pkbf; /*! Negative pubkey lookup Bloom filter. */
   
   struct rpmop_s ops[RPMTS_OP_MAX];
   
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/pkgio.c
  
  $ cvs diff -u -r1.105 -r1.106 pkgio.c
  --- rpm/rpmdb/pkgio.c 6 Mar 2010 16:20:46 -   1.105
  +++ rpm/rpmdb/pkgio.c 8 May 2010 22:53:26 -   1.106
  @@ -16,6 +16,7 @@
   #include rpmio_internal.h
   #include rpmcb.h
   #include rpmbc.h   /* XXX beecrypt base64 */
  +#include rpmbf.h   /* XXX negative lookup cache */
   #include rpmmacro.h
   #include rpmku.h
   
  @@ -162,6 +163,7 @@
   pgpDigParams pubp = pgpGetPubkey(dig);
   rpmRC res = RPMRC_NOKEY;
   const char * pubkeysource = NULL;
  +rpmbf bf;
   rpmiob iob = NULL;
   int krcache = 1; /* XXX assume pubkeys are cached in keyutils keyring. */
   int xx;
  @@ -189,6 +191,11 @@
memset(ts-pksignid, 0, sizeof(ts-pksignid));
   }
   
  +/* Has this pubkey failled a previous lookup? */
  +if (ts-pkpkt == NULL  (bf = ts-pkbf) != NULL
  +   rpmbfChk(bf, sigp-signid, sizeof(sigp-signid)))
  + return res;
  +
   /* Try keyutils keyring lookup. */
   if (ts-pkpkt == NULL) {
iob = NULL;
  @@ -259,10 +266,9 @@
const char * fn = rpmExpand(%{_hkp_keyserver_query},
pgpHexStr(sigp-signid, sizeof(sigp-signid)), NULL);
   
  - xx = 0;
  - if (fn  *fn != '%') {
  - xx = (pgpReadPkts(fn, ts-pkpkt, ts-pkpktlen) != 
PGPARMOR_PUBKEY);
  - }
  + xx = (fn  *fn != '%')
  + ? (pgpReadPkts(fn, ts-pkpkt, ts-pkpktlen) != PGPARMOR_PUBKEY)
  + : 1;/* XXX assume failure */
fn = _free(fn);
if (xx) {
ts-pkpkt = _free(ts-pkpkt);
  @@ -336,6 +342,15 @@
   if (res != RPMRC_OK) {
ts-pkpkt = _free(ts-pkpkt);
ts-pkpktlen = 0;
  + if ((bf = ts-pkbf) == NULL) {
  + static size_t n = 64;
  + static double e = 1.0e-6;
  + size_t m = 0;
  + size_t k = 0;
  + rpmbfParams(n, e, m, k);
  + ts-pkbf = bf = rpmbfNew(m, k, 0);
  + }
  + xx = rpmbfAdd(bf, sigp-signid, 

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2009-12-08 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   09-Dec-2009 04:55:35
  Branch: HEAD Handle: 2009120903553302

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- rpmts: take checkpoints beroe and after --rebuilddb.

  Summary:
RevisionChanges Path
1.3188  +1  -0  rpm/CHANGES
2.178   +16 -7  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3187 -r1.3188 CHANGES
  --- rpm/CHANGES   8 Dec 2009 21:20:34 -   1.3187
  +++ rpm/CHANGES   9 Dec 2009 03:55:33 -   1.3188
  @@ -1,5 +1,6 @@
   
   5.2b1 - 5.3a1
  +- jbj: rpmts: take checkpoints beroe and after --rebuilddb.
   - jbj: rpmdb: do in-place rebuilddb, opt-in for now.
   - jbj: rpmdb: lazily create non-existent secondary indices.
   - jbj: rpmdb: consolidate primary key swabbing to network order.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.177 -r2.178 rpmts.c
  --- rpm/lib/rpmts.c   7 Dec 2009 17:53:47 -   2.177
  +++ rpm/lib/rpmts.c   9 Dec 2009 03:55:35 -   2.178
  @@ -116,10 +116,8 @@
   ts-dbmode = dbmode;
   rc = rpmdbOpen(ts-rootDir, ts-rdb, ts-dbmode, 0644);
   if (rc) {
  - const char * dn;
  - dn = rpmGetPath(ts-rootDir, %{_dbpath}, NULL);
  - rpmlog(RPMLOG_ERR,
  - _(cannot open Packages database in %s\n), dn);
  + const char * dn = rpmGetPath(ts-rootDir, %{_dbpath}, NULL);
  + rpmlog(RPMLOG_ERR, _(cannot open Packages database in %s\n), dn);
dn = _free(dn);
   }
   return rc;
  @@ -128,11 +126,22 @@
   int rpmtsRebuildDB(rpmts ts)
   {
   void * lock = rpmtsAcquireLock(ts);
  -int rc = rpmtsOpenDB(ts, ts-dbmode);
  +int rc;
  +
  +rc = rpmtsOpenDB(ts, O_RDWR);
  +if (rc) goto exit;
   
  -if (rc == 0)
  - rc = rpmdbRebuild(ts-rootDir,
  +rc = rpmtxnCheckpoint(rpmtsGetRdb(ts));
  +if (rc) goto exit;
  +
  +rc = rpmdbRebuild(ts-rootDir,
(!(rpmtsVSFlags(ts)  RPMVSF_NOHDRCHK) ? ts : NULL));
  +if (rc) goto exit;
  +
  +rc = rpmtxnCheckpoint(rpmtsGetRdb(ts));
  +if (rc) goto exit;
  +
  +exit:
   lock = rpmtsFreeLock(lock);
   return rc;
   }
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpm/rpmdb/ rpmdb.c

2009-12-07 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   07-Dec-2009 18:53:47
  Branch: HEAD Handle: 2009120717534601

  Modified files:
rpm CHANGES
rpm/lib rpmts.c
rpm/rpmdb   rpmdb.c

  Log:
- rpmdb: handle optional .A just like optional -V and -R patterns.

  Summary:
RevisionChanges Path
1.3183  +1  -0  rpm/CHANGES
2.177   +3  -73 rpm/lib/rpmts.c
1.348   +4  -2  rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3182 -r1.3183 CHANGES
  --- rpm/CHANGES   4 Dec 2009 23:22:51 -   1.3182
  +++ rpm/CHANGES   7 Dec 2009 17:53:46 -   1.3183
  @@ -1,5 +1,6 @@
   
   5.2b1 - 5.3a1
  +- jbj: rpmdb: handle optional .A just like optional -V and -R patterns.
   - jbj: rpmdb: use RPMTAG_NVRA patterns for RPMDBI_LABEL rpmmi iterators.
   - jbj: rpmdb: permit anchored patterns on RPMDBI_LABEL retrieves. strings
are escaped and anchored. Still only RPMTAG_NAME, RPMTAG_NVRA next.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.176 -r2.177 rpmts.c
  --- rpm/lib/rpmts.c   4 Dec 2009 04:51:43 -   2.176
  +++ rpm/lib/rpmts.c   7 Dec 2009 17:53:47 -   2.177
  @@ -141,79 +141,9 @@
   rpmmi rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
const void * keyp, size_t keylen)
   {
  -rpmmi mi;
  -const char * arch = NULL;
  -int xx;
  -
  -if (ts-rdb == NULL  rpmtsOpenDB(ts, ts-dbmode))
  - return NULL;
  -
  -/* Parse out N(EVR).A tokens from a label key. */
  -if (rpmtag == RPMDBI_LABEL  keyp != NULL) {
  - const char * s = keyp;
  - const char *se;
  - size_t slen = strlen(s);
  - char *t = alloca(slen+1);
  - int level = 0;
  - int c;
  -
  - keyp = t;
  - while ((c = *s++) != '\0') {
  - switch (c) {
  - default:
  - *t++ = (char)c;
  - /*...@switchbreak@*/ break;
  - case '(':
  - /* XXX Fail if nested parens. */
  - if (level++ != 0) {
  - rpmlog(RPMLOG_ERR, _(extra '(' in package label: %s\n), 
(char *)keyp);
  - return NULL;
  - }
  - /* Parse explicit epoch. */
  - for (se = s; *se  xisdigit(*se); se++)
  - {};
  - if (*se == ':') {
  - /* XXX skip explicit epoch's (for now) */
  - *t++ = '-';
  - s = se + 1;
  - } else {
  - /* No Epoch: found. Convert '(' to '-' and chug. */
  - *t++ = '-';
  - }
  - /*...@switchbreak@*/ break;
  - case ')':
  - /* XXX Fail if nested parens. */
  - if (--level != 0) {
  - rpmlog(RPMLOG_ERR, _(missing '(' in package label: %s\n), 
(char *)keyp);
  - return NULL;
  - }
  - /* Don't copy trailing ')' */
  - /*...@switchbreak@*/ break;
  - }
  - }
  - if (level) {
  - rpmlog(RPMLOG_ERR, _(missing ')' in package label: %s\n), (char 
*)keyp);
  - return NULL;
  - }
  - *t = '\0';
  - t = (char *) keyp;
  - t = strrchr(t, '.');
  - /* Is this a valid .arch suffix? */
  - if (t != NULL  rpmnsArch(t+1)) {
  -*t++ = '\0';
  -arch = t;
  - }
  -}
  -
  -mi = rpmmiInit(ts-rdb, rpmtag, keyp, keylen);
  -
  -/* Verify header signature/digest during retrieve (if not disabled). */
  -if (mi  !(rpmtsVSFlags(ts)  RPMVSF_NOHDRCHK))
  - (void) rpmmiSetHdrChk(mi, ts);
  -
  -/* Select specified arch only. */
  -if (arch != NULL)
  - xx = rpmmiAddPattern(mi, RPMTAG_ARCH, RPMMIRE_DEFAULT, arch);
  +rpmmi mi = (ts-rdb == NULL  rpmtsOpenDB(ts, ts-dbmode))
  + ? NULL
  + : rpmmiInit(ts-rdb, rpmtag, keyp, keylen);
   return mi;
   }
   /*...@=compdef@*/
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.347 -r1.348 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 6 Dec 2009 20:22:01 -   1.347
  +++ rpm/rpmdb/rpmdb.c 7 Dec 2009 17:53:47 -   1.348
  @@ -1296,7 +1296,7 @@
   char * te;
   
   if (_pre == NULL) _pre = ^;
  -if (_post == NULL) _post = (-[^-]+-[^-]+|-[^-]+|)\\.[^.]+$;
  +  

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpmts.h

2009-12-03 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   04-Dec-2009 05:51:44
  Branch: HEAD Handle: 2009120404514300

  Modified files:
rpm CHANGES
rpm/lib rpmts.c rpmts.h

  Log:
- rpm.org: Only report disk space/inode issues for affected packages.

  Summary:
RevisionChanges Path
1.3178  +1  -0  rpm/CHANGES
2.176   +10 -4  rpm/lib/rpmts.c
2.125   +2  -0  rpm/lib/rpmts.h
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3177 -r1.3178 CHANGES
  --- rpm/CHANGES   4 Dec 2009 04:16:15 -   1.3177
  +++ rpm/CHANGES   4 Dec 2009 04:51:43 -   1.3178
  @@ -1,5 +1,6 @@
   
   5.2b1 - 5.3a1
  +- rpm.org: Only report disk space/inode issues for affected packages.
   - jbj: rpmdb: mark code to renumber primary keys when needed.
   - jbj: rpmmi: fix: return native endian, but store big endian, primary 
keys.
   - jbj: DB_CONFIG: create /var/lib/rpm/tmp subdir.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.175 -r2.176 rpmts.c
  --- rpm/lib/rpmts.c   17 Nov 2009 00:23:05 -  2.175
  +++ rpm/lib/rpmts.c   4 Dec 2009 04:51:43 -   2.176
  @@ -1146,17 +1146,23 @@
   for (i = 0; i  ts-filesystemCount; i++, dsi++) {
   
if (dsi-f_bavail  0  adj_fs_blocks(dsi-bneeded)  dsi-f_bavail) {
  - rpmpsAppend(ps, RPMPROB_DISKSPACE,
  + if (dsi-bneeded != dsi-obneeded) {
  + rpmpsAppend(ps, RPMPROB_DISKSPACE,
rpmteNEVR(te), rpmteKey(te),
ts-filesystems[i], NULL, NULL,
  -(adj_fs_blocks(dsi-bneeded) - dsi-f_bavail) * dsi-f_bsize);
  +   (adj_fs_blocks(dsi-bneeded) - dsi-f_bavail) * dsi-f_bsize);
  + dsi-obneeded = dsi-bneeded;
  + }
}
   
if (dsi-f_favail  0  adj_fs_blocks(dsi-ineeded)  dsi-f_favail) {
  - rpmpsAppend(ps, RPMPROB_DISKNODES,
  + if (dsi-ineeded != dsi-oineeded) {
  + rpmpsAppend(ps, RPMPROB_DISKNODES,
rpmteNEVR(te), rpmteKey(te),
ts-filesystems[i], NULL, NULL,
  - (adj_fs_blocks(dsi-ineeded) - dsi-f_favail));
  + (adj_fs_blocks(dsi-ineeded) - dsi-f_favail));
  + dsi-oineeded = dsi-ineeded;
  + }
}
   
if ((dsi-bneeded || dsi-ineeded)  (dsi-f_flag  ST_RDONLY)) {
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.h
  
  $ cvs diff -u -r2.124 -r2.125 rpmts.h
  --- rpm/lib/rpmts.h   4 Dec 2009 04:18:51 -   2.124
  +++ rpm/lib/rpmts.h   4 Dec 2009 04:51:43 -   2.125
  @@ -188,6 +188,8 @@
   
   signed long long bneeded;/*! No. of blocks needed. */
   signed long long ineeded;/*! No. of inodes needed. */
  +signed long long obneeded;   /*! Bookkeeping to avoid duplicate 
reports. */
  +signed long long oineeded;   /*! Bookkeeping to avoid duplicate 
reports. */
   dev_t dev;   /*! File system device number. */
   };
   
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2009-06-25 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   25-Jun-2009 14:38:49
  Branch: HEAD Handle: 2009062512384801

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- selinux: fix: disabler bit toggle sense was inverted.

  Summary:
RevisionChanges Path
1.3032  +1  -0  rpm/CHANGES
2.171   +4  -4  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3031 -r1.3032 CHANGES
  --- rpm/CHANGES   22 Jun 2009 00:25:56 -  1.3031
  +++ rpm/CHANGES   25 Jun 2009 12:38:48 -  1.3032
  @@ -1,5 +1,6 @@
   
   5.2b1 - 5.3a1
  +- jbj: selinux: fix: disabler bit toggle sense was inverted.
   - jbj: js: add getters/setters to handle defvar() variables.
   - jbj: js: add methods and unit tests for the Aug class.
   - jbj: augtool: finish proof-of-concept embedding. stdout capture todo++.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.170 -r2.171 rpmts.c
  --- rpm/lib/rpmts.c   15 May 2009 13:40:58 -  2.170
  +++ rpm/lib/rpmts.c   25 Jun 2009 12:38:49 -  2.171
  @@ -1244,9 +1244,9 @@
   if (ts != NULL) {
transFlags = ts-transFlags;
if (rpmtsSELinuxEnabled(ts)  0)
  - transFlags |= RPMTRANS_FLAG_NOCONTEXTS;
  - else
transFlags = ~RPMTRANS_FLAG_NOCONTEXTS;
  + else
  + transFlags |= RPMTRANS_FLAG_NOCONTEXTS;
   }
   return transFlags;
   }
  @@ -1257,9 +1257,9 @@
   if (ts != NULL) {
otransFlags = ts-transFlags;
if (rpmtsSELinuxEnabled(ts)  0)
  - transFlags |= RPMTRANS_FLAG_NOCONTEXTS;
  - else
transFlags = ~RPMTRANS_FLAG_NOCONTEXTS;
  + else
  + transFlags |= RPMTRANS_FLAG_NOCONTEXTS;
ts-transFlags = transFlags;
   }
   return otransFlags;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpmts.h

2009-03-24 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   24-Mar-2009 18:22:54
  Branch: HEAD Handle: 2009032417225301

  Modified files:
rpm CHANGES
rpm/lib rpmts.c rpmts.h

  Log:
- yarn: wire up rpmtsFini, mark rpmtsFree for destruction.

  Summary:
RevisionChanges Path
1.2866  +1  -0  rpm/CHANGES
2.164   +54 -65 rpm/lib/rpmts.c
2.114   +4  -0  rpm/lib/rpmts.h
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.2865 -r1.2866 CHANGES
  --- rpm/CHANGES   24 Mar 2009 16:45:54 -  1.2865
  +++ rpm/CHANGES   24 Mar 2009 17:22:53 -  1.2866
  @@ -1,5 +1,6 @@
   
   5.2a3 - 5.2a4:
  +- jbj: yarn: wire up rpmtsFini, mark rpmtsFree for destruction.
   - jbj: yarn: for now, don't assert fail, just print FIXME.
   - jbj: yarn: wire up headerScrub, eliminate header{Link,Unlink}.
   - devzero2000: fix: add autofu AC_CPP_FUNC portability macro in the 
acinclude.m4
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.163 -r2.164 rpmts.c
  --- rpm/lib/rpmts.c   21 Mar 2009 20:15:39 -  2.163
  +++ rpm/lib/rpmts.c   24 Mar 2009 17:22:54 -  2.164
  @@ -88,24 +88,6 @@
   /*...@unchecked@*/
   int _rpmts_macros = 0;
   
  -
  -/*...@unchecked@*/ /*...@null@*/
  -rpmioPool _rpmtsPool;
  -
  -static rpmts rpmtsGetPool(/*...@null@*/ rpmioPool pool)
  - /*...@modifies pool @*/
  -{
  -rpmts ts;
  -
  -if (_rpmtsPool == NULL) {
  - _rpmtsPool = rpmioNewPool(ts, sizeof(*ts), -1, _rpmts_debug,
  - NULL, NULL, NULL);
  - pool = _rpmtsPool;
  -}
  -return (rpmts) rpmioGetPool(pool, sizeof(*ts));
  -}
  -
  -
   int rpmtsCloseDB(rpmts ts)
   {
   int rc = 0;
  @@ -636,82 +618,89 @@
   /*...@=globstate@*/
   }
   
  -rpmts rpmtsFree(rpmts ts)
  +static void rpmtsFini(void * _ts)
  + /*...@modifies *_ts @*/
   {
  -if (ts == NULL)
  - return NULL;
  -
  -yarnPossess(ts-_item.use);
  -/*...@-modfilesys@*/
  -if (_rpmts_debug)
  -fprintf(stderr, -- ts %p -- %ld %s at %s:%u\n, ts, 
yarnPeekLock(ts-_item.use), tsCreate, __FILE__, __LINE__);
  -/*...@=modfilesys@*/
  -
  -if (yarnPeekLock(ts-_item.use) = 1L) {
  +rpmts ts = _ts;
   
   /*...@-nullstate@*/  /* FIX: partial annotations */
  - /* XXX there's a recursion here ... release and reacquire the lock */
  +/* XXX there's a recursion here ... release and reacquire the lock */
   #ifndef  BUGGY
  - yarnRelease(ts-_item.use); /* XXX hack-o-round */
  +yarnRelease(ts-_item.use);  /* XXX hack-o-round */
   #endif
  - rpmtsEmpty(ts);
  +rpmtsEmpty(ts);
   #ifndef  BUGGY
  - yarnPossess(ts-_item.use); /* XXX hack-o-round */
  +yarnPossess(ts-_item.use);  /* XXX hack-o-round */
   #endif
   /*...@=nullstate@*/
   
  - ts-PRCO = rpmdsFreePRCO(ts-PRCO);
  +ts-PRCO = rpmdsFreePRCO(ts-PRCO);
   
  - (void) rpmtsCloseDB(ts);
  +(void) rpmtsCloseDB(ts);
   
  - (void) rpmtsCloseSDB(ts);
  +(void) rpmtsCloseSDB(ts);
   
  - ts-sx = rpmsxFree(ts-sx);
  +ts-sx = rpmsxFree(ts-sx);
   
  - ts-removedPackages = _free(ts-removedPackages);
  +ts-removedPackages = _free(ts-removedPackages);
   
  - ts-availablePackages = rpmalFree(ts-availablePackages);
  - ts-numAvailablePackages = 0;
  +ts-availablePackages = rpmalFree(ts-availablePackages);
  +ts-numAvailablePackages = 0;
   
  - ts-dsi = _free(ts-dsi);
  +ts-dsi = _free(ts-dsi);
   
  - if (ts-scriptFd != NULL) {
  +if (ts-scriptFd != NULL) {
   /*...@-refcounttrans@*/  /* FIX: XfdFree annotation */
  - ts-scriptFd = fdFree(ts-scriptFd, rpmtsFree);
  + ts-scriptFd = fdFree(ts-scriptFd, rpmtsFree);
   /*...@=refcounttrans@*/
  - ts-scriptFd = NULL;
  - }
  - ts-rootDir = _free(ts-rootDir);
  - ts-currDir = _free(ts-currDir);
  + ts-scriptFd = NULL;
  +}
  +ts-rootDir = _free(ts-rootDir);
  +ts-currDir = _free(ts-currDir);
   
   /*...@-type +voidabstract @*//* FIX: double indirection */
  - ts-order = _free(ts-order);
  +ts-order = _free(ts-order);
   /*...@=type =voidabstract @*/
  - ts-orderAlloced = 0;
  +ts-orderAlloced = 0;
   
  - ts-keyring = rpmKeyringFree(ts-keyring);
  - ts-pkpkt = _free(ts-pkpkt);
  - ts-pkpktlen = 0;
  - memset(ts-pksignid, 0, 

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpm/rpmio/ rpmdav.c rpmdav.h

2008-10-30 Thread Jeff Johnson
  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:   30-Oct-2008 16:56:22
  Branch: HEAD Handle: 2008103015562101

  Modified files:
rpm CHANGES
rpm/lib rpmts.c
rpm/rpmio   rpmdav.c rpmdav.h

  Log:
- add #ifdef's needed to compile on __OpenBSD__.

  Summary:
RevisionChanges Path
1.2637  +1  -0  rpm/CHANGES
2.157   +3  -0  rpm/lib/rpmts.c
2.91+1  -1  rpm/rpmio/rpmdav.c
2.34+1  -1  rpm/rpmio/rpmdav.h
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.2636 -r1.2637 CHANGES
  --- rpm/CHANGES   28 Oct 2008 15:25:19 -  1.2636
  +++ rpm/CHANGES   30 Oct 2008 15:56:21 -  1.2637
  @@ -1,5 +1,6 @@
   
   5.2a2 - 5.2a3:
  +- jbj: add #ifdef's needed to compile on __OpenBSD__.
   - proyvind: Mandriva: make directory  symlink dependencies optional with
   %{_check_symlink_deps}  %{_check_dirname_deps}. 
(optional-dirname-and-symlink-deps)
   - proyvind: Mandriva: prefer file extension for detecting file 
compression.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.156 -r2.157 rpmts.c
  --- rpm/lib/rpmts.c   7 Oct 2008 20:49:53 -   2.156
  +++ rpm/lib/rpmts.c   30 Oct 2008 15:56:22 -  2.157
  @@ -1045,6 +1045,9 @@
   #elif defined(__APPLE__)  defined(__MACH__)  !defined(_SYS_STATVFS_H_)
dsi-f_fsid = 0; /* Not meaningful in this implementation. */
dsi-f_namemax = pathconf(ts-filesystems[i], _PC_NAME_MAX);
  +#elif defined(__OpenBSD__)
  + dsi-f_fsid = 0; /* sfb.f_fsid is a structure on OpenBSD */
  + dsi-f_namemax = pathconf(ts-filesystems[i], _PC_NAME_MAX);
   #else
dsi-f_fsid = sfb.f_fsid;
dsi-f_namemax = sfb.f_namelen;
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmio/rpmdav.c
  
  $ cvs diff -u -r2.90 -r2.91 rpmdav.c
  --- rpm/rpmio/rpmdav.c2 Aug 2008 22:37:38 -   2.90
  +++ rpm/rpmio/rpmdav.c30 Oct 2008 15:56:22 -  2.91
  @@ -220,7 +220,7 @@
   #endif
   
   #if !(defined(hpux) || defined(__hpux) || defined(sun) || 
defined(RPM_OS_AIX) || defined(__CYGWIN__) || defined(__QNXNTO__))
  -#if !defined(__APPLE__)  !defined(__FreeBSD_kernel__)  
!defined(__FreeBSD__)  !defined(__NetBSD__)  !defined(__DragonFly__)
  +#if !defined(__APPLE__)  !defined(__FreeBSD_kernel__)  
!defined(__FreeBSD__)  !defined(__NetBSD__)  !defined(__DragonFly__)  
!defined(__OpenBSD__)
   dp-d_off = 0;   /* W2DO? */
   #endif
   dp-d_type = dt[i];
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmio/rpmdav.h
  
  $ cvs diff -u -r2.33 -r2.34 rpmdav.h
  --- rpm/rpmio/rpmdav.h31 Jul 2008 02:40:10 -  2.33
  +++ rpm/rpmio/rpmdav.h30 Oct 2008 15:56:21 -  2.34
  @@ -45,7 +45,7 @@
   typedef struct __dirstream * AVDIR;
   typedef struct __dirstream * DAVDIR;
   #else
  -# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
  +# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) 
|| defined(__OpenBSD__)
   typedef struct __dirstream * AVDIR;
   typedef struct __dirstream * DAVDIR;
   #else/* __FreeBSD__ */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c transaction.c

2008-07-03 Thread Jeff Johnson
  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:   03-Jul-2008 16:27:31
  Branch: HEAD Handle: 2008070314273001

  Modified files:
rpm CHANGES
rpm/lib rpmts.c transaction.c

  Log:
- rpm.org: single point to control how callbacks are made.

  Summary:
RevisionChanges Path
1.2457  +1  -0  rpm/CHANGES
2.148   +12 -4  rpm/lib/rpmts.c
1.372   +26 -51 rpm/lib/transaction.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.2456 -r1.2457 CHANGES
  --- rpm/CHANGES   3 Jul 2008 13:50:47 -   1.2456
  +++ rpm/CHANGES   3 Jul 2008 14:27:30 -   1.2457
  @@ -1,5 +1,6 @@
   
   5.1.0 - 5.2a0:
  +- rpm.org: single point to control how callbacks are made.
   - rpm.org: Don't leak memory on python expandMacro().
   - jbj: rpmgpg: stub in gpg options using popt.
   - rpm.org: get/set transaction keyring methods.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.147 -r2.148 rpmts.c
  --- rpm/lib/rpmts.c   2 Jul 2008 16:02:50 -   2.147
  +++ rpm/lib/rpmts.c   3 Jul 2008 14:27:31 -   2.148
  @@ -1150,12 +1150,20 @@
rpmCallbackType what, uint64_t amount, uint64_t total)
   {
   void * ptr = NULL;
  -if (ts  ts-notify  te) {
  -assert(!(te-type == TR_ADDED  te-h == NULL));
  +if (ts  ts-notify) {
  + Header h;
  + fnpyKey cbkey;
/[EMAIL PROTECTED]@*/ /* FIX: cast? */
/[EMAIL PROTECTED] @*/ /* FIX: check rc */
  - ptr = ts-notify(te-h, what, amount, total,
  - rpmteKey(te), ts-notifyData);
  + if (te) {
  + h = headerLink(te-h);
  + cbkey = rpmteKey(te);
  + } else {
  + h = NULL;
  + cbkey = NULL;
  + }
  + ptr = ts-notify(h, what, amount, total, cbkey, ts-notifyData);
  + h = headerFree(h);
/[EMAIL PROTECTED] @*/
/[EMAIL PROTECTED]@*/
   }
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/transaction.c
  
  $ cvs diff -u -r1.371 -r1.372 transaction.c
  --- rpm/lib/transaction.c 12 Mar 2008 18:11:08 -  1.371
  +++ rpm/lib/transaction.c 3 Jul 2008 14:27:31 -   1.372
  @@ -33,7 +33,6 @@
   
   #include debug.h
   
  -/[EMAIL PROTECTED] Header @*//* XXX ts-notify arg1 is void 
ptr */
   /[EMAIL PROTECTED] rpmps @*/ /* XXX need rpmProblemSetOK() */
   /[EMAIL PROTECTED] dbiIndexSet @*/
   
  @@ -1117,8 +1116,6 @@
   return 0;
   }
   
  -#define  NOTIFY(_ts, _al) /[EMAIL PROTECTED]@*/ if ((_ts)-notify) 
(void) (_ts)-notify _al
  -
   int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
   {
   uint32_t tscolor = rpmtsColor(ts);
  @@ -1309,9 +1306,8 @@
if (fi-pretrans == NULL)
continue;
   
  - p-fd = ts-notify(p-h, RPMCALLBACK_INST_OPEN_FILE, 0, 0,
  - rpmteKey(p), ts-notifyData);
p-h = NULL;
  + p-fd = rpmtsNotify(ts, p, RPMCALLBACK_INST_OPEN_FILE, 0, 0);
if (rpmteFd(p) != NULL) {
rpmVSFlags ovsflags = rpmtsVSFlags(ts);
rpmVSFlags vsflags = ovsflags | RPMVSF_NEEDPAYLOAD;
  @@ -1322,11 +1318,7 @@
vsflags = rpmtsSetVSFlags(ts, ovsflags);
switch (rpmrc) {
default:
  - /[EMAIL PROTECTED]@*/ /* FIX: notify annotations */
  - p-fd = ts-notify(p-h, RPMCALLBACK_INST_CLOSE_FILE,
  - 0, 0,
  - rpmteKey(p), ts-notifyData);
  - /[EMAIL PROTECTED]@*/
  + p-fd = rpmtsNotify(ts, p, RPMCALLBACK_INST_CLOSE_FILE, 0, 
0);
p-fd = NULL;
/[EMAIL PROTECTED]@*/ break;
case RPMRC_NOTTRUSTED:
  @@ -1353,10 +1345,9 @@
xx = rpmpsmStage(psm, PSM_SCRIPT);
psm = rpmpsmFree(psm);
   
  -/[EMAIL PROTECTED] -compdef -usereleased @*/
  - (void) ts-notify(p-h, RPMCALLBACK_INST_CLOSE_FILE, 0, 0,
  -   rpmteKey(p), ts-notifyData);
  -/[EMAIL PROTECTED] =compdef =usereleased @*/
  +/[EMAIL PROTECTED] -usereleased @*/
  + p-fd = rpmtsNotify(ts, p, RPMCALLBACK_INST_CLOSE_FILE, 0, 0);
  +/[EMAIL PROTECTED] =usereleased @*/
p-fd = NULL;
   

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2008-02-20 Thread Per �yvind Karlsen
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Per Øyvind Karlsen
  Root:   /v/rpm/cvs   Email:  [EMAIL PROTECTED]
  Module: rpm  Date:   20-Feb-2008 20:14:10
  Branch: HEAD Handle: 2008022019140901

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
from pixel:
librpm uses bavail ie free blocks avail to non-superuser
that's ok, it will help keeping some free space, even for root
but when bavail == 0, librpm thinks statfs failed, and do not check
so setting bavail to 1 when bavail it is 0
(no package should fit in one block!)

  Summary:
RevisionChanges Path
1.2199  +1  -0  rpm/CHANGES
2.139   +1  -1  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.2198 -r1.2199 CHANGES
  --- rpm/CHANGES   20 Feb 2008 00:39:14 -  1.2198
  +++ rpm/CHANGES   20 Feb 2008 19:14:09 -  1.2199
  @@ -1,4 +1,5 @@
   5.0.0 - 5.1a1:
  +- pixel: do check free size when bavail is 0
   - jbj: add variadic checks, remove warnings.
   - jbj: refactor rpmcliErase to use same code as rpmtsInstall.
   - jbj: fix: rpmtsCheck non-zero return prevents --erase.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.138 -r2.139 rpmts.c
  --- rpm/lib/rpmts.c   20 Feb 2008 00:39:14 -  2.138
  +++ rpm/lib/rpmts.c   20 Feb 2008 19:14:10 -  2.139
  @@ -991,7 +991,7 @@
dsi-bneeded = 0;
dsi-ineeded = 0;
   #ifdef STATFS_HAS_F_BAVAIL
  - dsi-f_bavail = sfb.f_bavail;
  + dsi-f_bavail = sfb.f_bavail ? sfb.f_bavail : 1;
if (sfb.f_ffree  0  sfb.f_files  0  sfb.f_favail  0)
dsi-f_favail = sfb.f_favail;
else/* XXX who knows what evil lurks here? */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c rpm/rpmdb/ librpmdb.vers pkgi...

2007-09-29 Thread Jeff Johnson
  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:   29-Sep-2007 19:06:26
  Branch: HEAD Handle: 2007092918062500

  Modified files:
rpm CHANGES
rpm/lib rpmts.c
rpm/rpmdb   librpmdb.vers pkgio.c rpmdb.h sqlite.c

  Log:
- move rpmtsFindPubkey() and rpmtsOp() to rpmdb for forward linkage.

  Summary:
RevisionChanges Path
1.1647  +1  -0  rpm/CHANGES
2.101   +0  -259rpm/lib/rpmts.c
1.18+2  -0  rpm/rpmdb/librpmdb.vers
1.7 +237 -21rpm/rpmdb/pkgio.c
1.65+8  -6  rpm/rpmdb/rpmdb.h
1.14+1  -1  rpm/rpmdb/sqlite.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.1646 -r1.1647 CHANGES
  --- rpm/CHANGES   29 Sep 2007 16:23:39 -  1.1646
  +++ rpm/CHANGES   29 Sep 2007 17:06:25 -  1.1647
  @@ -1,4 +1,5 @@
   4.5 - 5.0:
  +- jbj: move rpmtsFindPubkey() and rpmtsOp() to rpmdb for forward linkage.
   - jbj: add _RPMTS_PRINT to keep rpmrollback.c happy.
   - jbj: rearrange package.c internals to new locations.
   - jbj: start eliminating rpmtsSetSig by inlining.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.100 -r2.101 rpmts.c
  --- rpm/lib/rpmts.c   29 Sep 2007 16:23:39 -  2.100
  +++ rpm/lib/rpmts.c   29 Sep 2007 17:06:25 -  2.101
  @@ -3,9 +3,6 @@
* Routine(s) to handle a rpmts transaction sets.
*/
   #include system.h
  -#if defined(HAVE_KEYUTILS_H)
  -#include keyutils.h
  -#endif
   
   #include rpmio_internal.h  /* XXX for pgp and beecrypt */
   #include rpmlib.h
  @@ -240,204 +237,6 @@
   }
   /[EMAIL PROTECTED]@*/
   
  -rpmRC rpmtsFindPubkey(rpmts ts, void * _dig)
  -{
  -pgpDig dig = (_dig ? _dig : rpmtsDig(ts));
  -const void * sig = pgpGetSig(dig);
  -pgpDigParams sigp = pgpGetSignature(dig);
  -pgpDigParams pubp = pgpGetPubkey(dig);
  -rpmRC res = RPMRC_NOKEY;
  -const char * pubkeysource = NULL;
  -#if defined(HAVE_KEYUTILS_H)
  -int krcache = 1; /* XXX assume pubkeys are cached in keyutils keyring. */
  -#endif
  -int xx;
  -
  -if (sig == NULL || dig == NULL || sigp == NULL || pubp == NULL)
  - goto exit;
  -
  -#if 0
  -fprintf(stderr, == find sig id %08x %08x ts pubkey id %08x %08x\n,
  -pgpGrab(sigp-signid, 4), pgpGrab(sigp-signid+4, 4),
  -pgpGrab(ts-pksignid, 4), pgpGrab(ts-pksignid+4, 4));
  -#endif
  -
  -/* Lazy free of previous pubkey if pubkey does not match this signature. 
*/
  -if (memcmp(sigp-signid, ts-pksignid, sizeof(ts-pksignid))) {
  -#if 0
  -fprintf(stderr, *** free pkt %p[%d] id %08x %08x\n, ts-pkpkt, 
ts-pkpktlen, pgpGrab(ts-pksignid, 4), pgpGrab(ts-pksignid+4, 4));
  -#endif
  - ts-pkpkt = _free(ts-pkpkt);
  - ts-pkpktlen = 0;
  - memset(ts-pksignid, 0, sizeof(ts-pksignid));
  -}
  -
  -#if defined(HAVE_KEYUTILS_H)
  - /* Try keyutils keyring lookup. */
  -if (krcache  ts-pkpkt == NULL) {
  - key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
  - const char * krprefix = rpm:gpg:pubkey:;
  - char krfp[32];
  - char * krn = alloca(strlen(krprefix) + sizeof(12345678));
  - long key;
  -
  - snprintf(krfp, sizeof(krfp), %08X, pgpGrab(sigp-signid+4, 4));
  - krfp[sizeof(krfp)-1] = '\0';
  - *krn = '\0';
  - (void) stpcpy( stpcpy(krn, krprefix), krfp);
  -
  - key = keyctl_search(keyring, user, krn, 0);
  - xx = keyctl_read(key, NULL, 0);
  - if (xx  0) {
  - ts-pkpktlen = xx;
  - ts-pkpkt = NULL;
  - xx = keyctl_read_alloc(key, (void **)ts-pkpkt);
  - if (xx  0) {
  - pubkeysource = xstrdup(krn);
  - krcache = 0;/* XXX don't bother caching. */
  - } else {
  - ts-pkpkt = _free(ts-pkpkt);
  - ts-pkpktlen = 0;
  - }
  -}
  -}
  -#endif
  -
  -/* Try rpmdb keyring lookup. */
  -if (ts-pkpkt == NULL) {
  - int hx = -1;
  - int ix = -1;
  - rpmdbMatchIterator mi;
  - Header h;
  -
  - /* Retrieve the pubkey that matches the signature. */
  - mi = rpmtsInitIterator(ts, RPMTAG_PUBKEYS, sigp-signid, 
sizeof(sigp-signid));
  - while ((h = rpmdbNextIterator(mi)) != NULL) {
  - const char ** pubkeys;
  - int_32 pt, pc;
  -
  - if (!headerGetEntry(h, RPMTAG_PUBKEYS, pt, pubkeys, pc))
  - continue;
  - hx = 

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2007-08-31 Thread Jeff Johnson
  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:   31-Aug-2007 16:49:33
  Branch: HEAD Handle: 2007083115493200

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- afb: handle Mac OS X 10.3.9 statvfs deviance.

  Summary:
RevisionChanges Path
1.1610  +1  -0  rpm/CHANGES
2.91+3  -0  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.1609 -r1.1610 CHANGES
  --- rpm/CHANGES   30 Aug 2007 09:34:08 -  1.1609
  +++ rpm/CHANGES   31 Aug 2007 14:49:32 -  1.1610
  @@ -1,4 +1,5 @@
   4.5 - 5.0:
  +- afb: handle Mac OS X 10.3.9 statvfs deviance.
   - rse: make devtool %standalone fully modular for allowing its modules 
to be reused in other devtool targets
   - jbj: assume that mount(2) et al are linux-peculier for the moment.
   - jbj: add rpmio Mount/Umount/Umount2 stubs.
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.90 -r2.91 rpmts.c
  --- rpm/lib/rpmts.c   28 Aug 2007 19:38:53 -  2.90
  +++ rpm/lib/rpmts.c   31 Aug 2007 14:49:32 -  2.91
  @@ -1260,6 +1260,9 @@
dsi-f_flag = sfb.f_flag;
dsi-f_favail = sfb.f_favail;
dsi-f_namemax = sfb.f_namemax;
  +#elif defined(__APPLE__)  defined(__MACH__)  !defined(_SYS_STATVFS_H_)
  + dsi-f_fsid = 0; /* Not meaningful in this implementation. */
  + dsi-f_namemax = pathconf(ts-filesystems[i], _PC_NAME_MAX);
   #else
dsi-f_fsid = sfb.f_fsid;
dsi-f_namemax = sfb.f_namelen;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmts.c

2007-08-28 Thread Jeff Johnson
  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:   28-Aug-2007 21:22:34
  Branch: HEAD Handle: 2007082820223400

  Modified files:
rpm CHANGES
rpm/lib rpmts.c

  Log:
- use keyutils for pubkey cache.

  Summary:
RevisionChanges Path
1.1605  +1  -0  rpm/CHANGES
2.88+48 -0  rpm/lib/rpmts.c
  

  patch -p0 '@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.1604 -r1.1605 CHANGES
  --- rpm/CHANGES   28 Aug 2007 00:36:52 -  1.1604
  +++ rpm/CHANGES   28 Aug 2007 19:22:34 -  1.1605
  @@ -1,4 +1,5 @@
   4.5 - 5.0:
  +- jbj: use keyutils for pubkey cache.
   - jbj: update id.po (Translation Project).
   - jbj: teach --querytags to chain through headerCompoundFormats.
   - rse: apply upstream vendor Lua 5.1.2 patches 1-7
  @@ .
  patch -p0 '@@ .'
  Index: rpm/lib/rpmts.c
  
  $ cvs diff -u -r2.87 -r2.88 rpmts.c
  --- rpm/lib/rpmts.c   21 Aug 2007 03:41:52 -  2.87
  +++ rpm/lib/rpmts.c   28 Aug 2007 19:22:34 -  2.88
  @@ -3,6 +3,9 @@
* Routine(s) to handle a rpmts transaction sets.
*/
   #include system.h
  +#if defined(HAVE_KEYUTILS_H)
  +#include keyutils.h
  +#endif
   
   #include rpmio_internal.h  /* XXX for pgp and beecrypt */
   #include rpmlib.h
  @@ -266,6 +269,36 @@
memset(ts-pksignid, 0, sizeof(ts-pksignid));
   }
   
  +#if defined(HAVE_KEYUTILS_H)
  + /* Try keyutils keyring lookup. */
  +if (ts-pkpkt == NULL) {
  + key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
  + const char * krprefix = rpm:gpg:pubkey:;
  + char krfp[32];
  + char * krn = alloca(strlen(krprefix) + sizeof(12345678));
  + long key;
  +
  + snprintf(krfp, sizeof(krfp), %08X, pgpGrab(sigp-signid+4, 4));
  + krfp[sizeof(krfp)-1] = '\0';
  + *krn = '\0';
  + (void) stpcpy( stpcpy(krn, krprefix), krfp);
  +
  + key = keyctl_search(keyring, user, krn, 0);
  + xx = keyctl_read(key, NULL, 0);
  + if (xx  0) {
  + ts-pkpktlen = xx;
  + ts-pkpkt = NULL;
  + xx = keyctl_read_alloc(key, (void **)ts-pkpkt);
  + if (xx  0) {
  + pubkeysource = xstrdup(krn);
  + } else {
  + ts-pkpkt = _free(ts-pkpkt);
  + ts-pkpktlen = 0;
  + }
  +}
  +}
  +#endif
  +
   /* Try rpmdb keyring lookup. */
   if (ts-pkpkt == NULL) {
int hx = -1;
  @@ -361,6 +394,21 @@
   
/* XXX Verify any pubkey signatures. */
   
  +#if defined(HAVE_KEYUTILS_H)
  + /* Save the pubkey in the keyutils keyring. */
  + {   key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
  + const char * krprefix = rpm:gpg:pubkey:;
  + char krfp[32];
  + char * krn = alloca(strlen(krprefix) + sizeof(12345678));
  +
  + snprintf(krfp, sizeof(krfp), %08X, pgpGrab(sigp-signid+4, 4));
  + krfp[sizeof(krfp)-1] = '\0';
  + *krn = '\0';
  + (void) stpcpy( stpcpy(krn, krprefix), krfp);
  + (void) add_key(user, krn, ts-pkpkt, ts-pkpktlen, keyring);
  + }
  +#endif
  +
/* Pubkey packet looks good, save the signer id. */
   /[EMAIL PROTECTED]@*/
memcpy(ts-pksignid, pubp-signid, sizeof(ts-pksignid));
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org