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: 22-Oct-2007 04:48:42
Branch: HEAD Handle: 2007102203484002
Modified files:
rpm CHANGES
rpm/build files.c parsePreamble.c
rpm/lib psm.c rpmchecksig.c rpmfc.c rpmfi.c
rpm/rpmdb hdrNVR.c hdrinline.h header.h rpmdb.c
Log:
- jbj: drill headerAddExtension everywhere.
Summary:
Revision Changes Path
1.1754 +1 -0 rpm/CHANGES
1.279 +5 -5 rpm/build/files.c
2.140 +14 -14 rpm/build/parsePreamble.c
2.253 +22 -34 rpm/lib/psm.c
1.163 +27 -40 rpm/lib/rpmchecksig.c
1.30 +13 -25 rpm/lib/rpmfc.c
2.94 +8 -8 rpm/lib/rpmfi.c
1.22 +49 -53 rpm/rpmdb/hdrNVR.c
1.24 +24 -0 rpm/rpmdb/hdrinline.h
1.55 +6 -14 rpm/rpmdb/header.h
1.195 +4 -4 rpm/rpmdb/rpmdb.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1753 -r1.1754 CHANGES
--- rpm/CHANGES 22 Oct 2007 02:45:38 -0000 1.1753
+++ rpm/CHANGES 22 Oct 2007 02:48:40 -0000 1.1754
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: drill headerAddExtension everywhere.
- jbj: header.c: insturment headerGet{Entry,Extension} switch, debug goop.
- jbj: rpmchecksig.c: wrap headerAddEntry. headerAddOrAppend next ...
- jbj: rpmfc.c: wrap headerAddEntry.
@@ .
patch -p0 <<'@@ .'
Index: rpm/build/files.c
============================================================================
$ cvs diff -u -r1.278 -r1.279 files.c
--- rpm/build/files.c 21 Oct 2007 23:22:54 -0000 1.278
+++ rpm/build/files.c 22 Oct 2007 02:48:40 -0000 1.279
@@ -1166,8 +1166,8 @@
static void compressFilelist(Header h)
/*@modifies h @*/
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HRE_t hre = (HRE_t)headerRemoveEntry;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
const char ** fileNames;
@@ -1251,17 +1251,17 @@
he->t = RPM_INT32_TYPE;
he->p.i32p = dirIndexes;
he->c = count;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_BASENAMES;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = baseNames;
he->c = count;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_DIRNAMES;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = dirNames;
he->c = dirIndex + 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
}
fileNames = _free(fileNames);
@@ .
patch -p0 <<'@@ .'
Index: rpm/build/parsePreamble.c
============================================================================
$ cvs diff -u -r2.139 -r2.140 parsePreamble.c
--- rpm/build/parsePreamble.c 21 Oct 2007 23:22:54 -0000 2.139
+++ rpm/build/parsePreamble.c 22 Oct 2007 02:48:40 -0000 2.140
@@ -337,7 +337,7 @@
/*@globals rpmGlobalMacroContext, h_errno @*/
/*@modifies h, rpmGlobalMacroContext @*/
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
struct optionalTag *ot;
int xx;
@@ -351,7 +351,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = val;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
}
val = _free(val);
/*@=boundsread@*/
@@ -366,7 +366,7 @@
/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
/*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
const char *fn, *Lurlfn = NULL;
struct Source *sp;
@@ -431,13 +431,13 @@
he->t = RPM_BIN_TYPE;
he->p.i8p = icon;
he->c = nb;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
} else if (!strncmp(icon, "/* XPM", sizeof("/* XPM")-1)) {
he->tag = RPMTAG_XPM;
he->t = RPM_BIN_TYPE;
he->p.i8p = icon;
he->c = nb;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
} else {
rpmlog(RPMLOG_ERR, _("Unknown icon type: %s\n"), fn);
goto exit;
@@ -513,8 +513,8 @@
pkg->header, pkg->autoProv, pkg->autoReq, pkg->icon,
rpmGlobalMacroContext, fileSystem, internalState @*/
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
char * field = spec->line;
char * end;
@@ -579,7 +579,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = field;
he->c = 1;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(pkg->header, he, 0);
break;
case RPMTAG_GROUP:
case RPMTAG_SUMMARY:
@@ -594,7 +594,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = field;
he->c = 1;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(pkg->header, he, 0);
} else if (!(noLang && strcmp(lang, RPMBUILD_DEFAULT_LANG))) {
(void) headerAddI18NString(pkg->header, tag, field, lang);
}
@@ -670,7 +670,7 @@
he->t = RPM_INT32_TYPE;
he->p.i32p = #
he->c = 1;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(pkg->header, he, 0);
break;
case RPMTAG_AUTOREQPROV:
pkg->autoReq = parseYesNo(field);
@@ -777,7 +777,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = field;
he->c = 1;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(pkg->header, he, 0);
break;
}
@@ -963,8 +963,8 @@
/* XXX should return rpmParseState, but RPMRC_FAIL forces int return. */
int parsePreamble(Spec spec, int initialPackage)
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
rpmParseState nextPart;
int rc, xx;
@@ -1005,7 +1005,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = NVR;
he->c = 1;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(pkg->header, he, 0);
}
if ((rc = readLine(spec, STRIP_TRAILINGSPACE | STRIP_COMMENTS)) > 0) {
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/psm.c
============================================================================
$ cvs diff -u -r2.252 -r2.253 psm.c
--- rpm/lib/psm.c 22 Oct 2007 00:31:13 -0000 2.252
+++ rpm/lib/psm.c 22 Oct 2007 02:48:41 -0000 2.253
@@ -1369,15 +1369,14 @@
static int hCopyTag(Header sh, Header th, rpmTag tag)
/*@modifies th @*/
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
int xx = 1;
he->tag = tag;
if (hge(sh, he, 0) && he->c > 0)
- xx = hae(th, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(th, he, 0);
he->p.ptr = _free(he->p.ptr);
return 0;
}
@@ -1391,7 +1390,7 @@
static int hSaveBlinks(Header h, const struct rpmChainLink_s * blink)
/*@modifies h @*/
{
- HAE_t hae = (HAE_t) headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
/*@observer@*/
static const char * chain_end = RPMTE_CHAIN_END;
@@ -1409,8 +1408,7 @@
he->p.argv = &chain_end;
he->c = 1;
}
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_BLINKPKGID;
he->t = RPM_STRING_ARRAY_TYPE;
@@ -1422,8 +1420,7 @@
he->p.argv = &chain_end;
he->c = 1;
}
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_BLINKHDRID;
he->t = RPM_STRING_ARRAY_TYPE;
@@ -1435,8 +1432,7 @@
he->p.argv = &chain_end;
he->c = 1;
}
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
return 0;
}
@@ -1450,7 +1446,7 @@
static int hSaveFlinks(Header h, const struct rpmChainLink_s * flink)
/*@modifies h @*/
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
#ifdef NOTYET
/*@observer@*/
@@ -1473,8 +1469,7 @@
he->c = 1;
}
#endif
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_FLINKPKGID;
he->t = RPM_STRING_ARRAY_TYPE;
@@ -1489,8 +1484,7 @@
he->c = 1;
}
#endif
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_FLINKHDRID;
he->t = RPM_STRING_ARRAY_TYPE;
@@ -1505,8 +1499,7 @@
he->c = 1;
}
#endif
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
return 0;
}
@@ -1521,7 +1514,7 @@
static int populateInstallHeader(const rpmts ts, const rpmte te, rpmfi fi)
/*@modifies fi @*/
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
uint_32 tscolor = rpmtsColor(ts);
uint_32 tecolor = rpmteColor(te);
@@ -1535,23 +1528,20 @@
he->t = RPM_CHAR_TYPE;
he->p.i8p = fi->fstates;
he->c = fc;
- xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(fi->h, he, 0);
}
-assert(xx);
he->tag = RPMTAG_INSTALLTIME;
he->t = RPM_INT32_TYPE;
he->p.i32p = &installTime;
he->c = 1;
- xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(fi->h, he, 0);
he->tag = RPMTAG_INSTALLCOLOR;
he->t = RPM_INT32_TYPE;
he->p.ui32p = &tscolor;
he->c = 1;
- xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(fi->h, he, 0);
/* XXX FIXME: add preferred color at install. */
@@ -1559,8 +1549,7 @@
he->t = RPM_INT32_TYPE;
he->p.ui32p = &tecolor;
he->c = 1;
- xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(fi->h, he, 0);
/* Add the header's origin (i.e. URL) */
he->tag = RPMTAG_PACKAGEORIGIN;
@@ -1568,8 +1557,7 @@
he->p.str = headerGetOrigin(fi->h);
he->c = 1;
if (he->p.str != NULL)
- xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(fi->h, he, 0);
/* XXX Don't clobber forward/backward upgrade chain on rollbacks */
if (rpmtsType(ts) != RPMTRANS_TYPE_ROLLBACK)
@@ -1609,8 +1597,8 @@
/*@-nullpass@*/ /* FIX: testing null annotation for fi->h */
rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
const rpmts ts = psm->ts;
uint_32 tscolor = rpmtsColor(ts);
@@ -1885,7 +1873,7 @@
{
if (he->tag == RPMTAG_ARCHIVESIZE)
noArchiveSize = 1;
- xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(psm->oh, he, 0);
}
hi = headerFreeIterator(hi);
@@ -1948,7 +1936,7 @@
he->t = RPM_INT32_TYPE;
he->p.i32p = &tid;
he->c = 1;
- xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(psm->oh, he, 0);
/* Add original header's origin (i.e. URL) */
if (origin != NULL) {
@@ -1956,7 +1944,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = origin;
he->c = 1;
- xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(psm->oh, he, 0);
origin = _free(origin);
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmchecksig.c
============================================================================
$ cvs diff -u -r1.162 -r1.163 rpmchecksig.c
--- rpm/lib/rpmchecksig.c 22 Oct 2007 01:59:31 -0000 1.162
+++ rpm/lib/rpmchecksig.c 22 Oct 2007 02:48:41 -0000 1.163
@@ -177,8 +177,8 @@
/*@modifies ts, rpmGlobalMacroContext,
fileSystem, internalState @*/
{
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t)headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
rpmgi gi = NULL;
FD_t fd = NULL;
@@ -283,8 +283,7 @@
ohe->p.ptr = headerFreeData(ohe->p.ptr, ohe->t))
{
if (ohe->p.ptr) {
- xx = hae(nh, ohe->tag, ohe->t, ohe->p.ptr, ohe->c);
-assert(xx);
+ xx = hae(nh, ohe, 0);
}
}
hi = headerFreeIterator(hi);
@@ -456,7 +455,7 @@
rpmRC rpmcliImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t pktlen)
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
static unsigned char zeros[] =
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -524,13 +523,14 @@
/* Build pubkey header. */
h = headerNew();
+ he->append = 1;
+
he->tag = RPMTAG_PUBKEYS;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = &enc;
he->c = 1;
- he->append = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
+
he->append = 0;
d = headerSprintf(h, afmt, rpmTagTable, rpmHeaderFormats, NULL);
@@ -541,39 +541,31 @@
he->c = 1;
he->tag = RPMTAG_NAME;
he->p.str = "gpg-pubkey";
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_VERSION;
he->p.str = v+8;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_RELEASE;
he->p.str = r;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_DESCRIPTION;
he->p.str = d;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_GROUP;
he->p.str = group;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_LICENSE;
he->p.str = license;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_SUMMARY;
he->p.str = u;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_SIZE;
he->t = RPM_INT32_TYPE;
he->p.i32p = &zero;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
he->append = 1;
@@ -581,33 +573,33 @@
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = &u;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_PROVIDEVERSION;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = &evr;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_PROVIDEFLAGS;
he->t = RPM_INT32_TYPE;
he->p.i32p = &pflags;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_PROVIDENAME;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = &n;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_PROVIDEVERSION;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = &evr;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->tag = RPMTAG_PROVIDEFLAGS;
he->t = RPM_INT32_TYPE;
he->p.i32p = &pflags;
he->c = 1;
- xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->append = 0;
@@ -615,30 +607,26 @@
he->t = RPM_STRING_TYPE;
he->p.str = RPMVERSION;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
/* XXX W2DO: tag value inheirited from parent? */
he->tag = RPMTAG_BUILDHOST;
he->t = RPM_STRING_TYPE;
he->p.str = buildhost;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
{ int_32 tid = rpmtsGetTid(ts);
he->tag = RPMTAG_INSTALLTIME;
he->t = RPM_INT32_TYPE;
he->p.i32p = &tid;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
/* XXX W2DO: tag value inheirited from parent? */
he->tag = RPMTAG_BUILDTIME;
he->t = RPM_INT32_TYPE;
he->p.i32p = &tid;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
}
#ifdef NOTYET
@@ -647,8 +635,7 @@
he->t = RPM_STRING_TYPE;
he->p.str = fn;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(h, he, 0);
#endif
/* Add header to database. */
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmfc.c
============================================================================
$ cvs diff -u -r1.29 -r1.30 rpmfc.c
--- rpm/lib/rpmfc.c 22 Oct 2007 01:06:05 -0000 1.29
+++ rpm/lib/rpmfc.c 22 Oct 2007 02:48:41 -0000 1.30
@@ -1390,7 +1390,7 @@
int rpmfcGenerateDepends(void * specp, void * pkgp)
{
- HAE_t hae = (HAE_t)headerAddEntry;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
const Spec spec = specp;
Package pkg = pkgp;
@@ -1529,8 +1529,7 @@
for (i = 0; i < he->c; i++)
fcolors[i] &= 0x0f;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
/* Add classes(#classes) */
@@ -1539,8 +1538,7 @@
he->p.argv = argvData(fc->cdict);
he->c = argvCount(fc->cdict);
if (he->p.ptr != NULL && he->c > 0) {
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
/* Add per-file classes(#files) */
@@ -1550,8 +1548,7 @@
he->c = argiCount(fc->fcdictx);
assert(ac == he->c);
if (he->p.ptr != NULL && he->c > 0) {
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
/* Add Provides: */
@@ -1561,8 +1558,7 @@
he->tag = RPMTAG_PROVIDENAME;
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = fc->provides->N;
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
/*@-nullpass@*/
@@ -1570,15 +1566,13 @@
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = fc->provides->EVR;
assert(he->p.ptr != NULL);
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
he->tag = RPMTAG_PROVIDEFLAGS;
he->t = RPM_INT32_TYPE;
he->p.i32p = fc->provides->Flags;
assert(he->p.ptr != NULL);
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
/*@=nullpass@*/
}
@@ -1590,8 +1584,7 @@
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = fc->requires->N;
assert(he->p.ptr != NULL);
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
/*@-nullpass@*/
@@ -1599,15 +1592,13 @@
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = fc->requires->EVR;
assert(he->p.ptr != NULL);
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
he->tag = RPMTAG_REQUIREFLAGS;
he->t = RPM_INT32_TYPE;
he->p.i32p = fc->requires->Flags;
assert(he->p.ptr != NULL);
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
/*@=nullpass@*/
}
@@ -1617,8 +1608,7 @@
he->p.i32p = argiData(fc->ddictx);
he->c = argiCount(fc->ddictx);
if (he->p.ptr != NULL) {
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
/* Add per-file dependency (start,number) pairs (#files) */
@@ -1628,8 +1618,7 @@
he->c = argiCount(fc->fddictx);
assert(ac == he->c);
if (he->p.ptr != NULL) {
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
he->tag = RPMTAG_FILEDEPENDSN;
@@ -1638,8 +1627,7 @@
he->c = argiCount(fc->fddictn);
assert(ac == he->c);
if (he->p.ptr != NULL) {
- xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
-assert(xx);
+ xx = hae(pkg->header, he, 0);
}
printDeps(pkg->header);
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmfi.c
============================================================================
$ cvs diff -u -r2.93 -r2.94 rpmfi.c
--- rpm/lib/rpmfi.c 21 Oct 2007 23:22:55 -0000 2.93
+++ rpm/lib/rpmfi.c 22 Oct 2007 02:48:41 -0000 2.94
@@ -684,11 +684,11 @@
/*@modifies ts, fi, origH, actions, rpmGlobalMacroContext,
internalState @*/
{
- rpmte p = rpmtsRelocateElement(ts);
- HGE_t hge = (HGE_t)headerGetExtension;
- HAE_t hae = (HAE_t) headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HME_t hme = (HME_t) headerModifyEntry;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ rpmte p = rpmtsRelocateElement(ts);
static int _printed = 0;
int allowBadRelocate = (rpmtsFilterFlags(ts) & RPMPROB_FILTER_FORCERELOCATE);
rpmRelocation relocations = NULL;
@@ -745,7 +745,7 @@
he->t = validType;
he->p.argv = validRelocations;
he->c = numValid;
- xx = hae(origH, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(origH, he, 0);
}
validRelocations = _free(validRelocations);
}
@@ -873,7 +873,7 @@
he->t = RPM_STRING_ARRAY_TYPE;
he->p.argv = actualRelocations;
he->c = numActual;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
}
actualRelocations = _free(actualRelocations);
@@ -1102,19 +1102,19 @@
he->tag = RPMTAG_BASENAMES;
xx = hge(h, he, 0);
he->tag = RPMTAG_ORIGBASENAMES;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->p.ptr = _free(he->p.ptr);
he->tag = RPMTAG_DIRNAMES;
xx = hge(h, he, 0);
he->tag = RPMTAG_ORIGDIRNAMES;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->p.ptr = _free(he->p.ptr);
he->tag = RPMTAG_DIRINDEXES;
xx = hge(h, he, 0);
he->tag = RPMTAG_ORIGDIRINDEXES;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
he->p.ptr = _free(he->p.ptr);
he->tag = RPMTAG_BASENAMES;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/hdrNVR.c
============================================================================
$ cvs diff -u -r1.21 -r1.22 hdrNVR.c
--- rpm/rpmdb/hdrNVR.c 21 Oct 2007 23:22:56 -0000 1.21
+++ rpm/rpmdb/hdrNVR.c 22 Oct 2007 02:48:41 -0000 1.22
@@ -202,85 +202,81 @@
void headerMergeLegacySigs(Header h, const Header sigh)
{
+ HAE_t hae = headerAddExtension;
HFD_t hfd = (HFD_t) headerFreeData;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
HeaderIterator hi;
- int_32 tag;
- rpmTagType type;
- const void * ptr;
- rpmTagCount count;
int xx;
if (h == NULL || sigh == NULL)
return;
for (hi = headerInitIterator(sigh);
- headerNextIterator(hi, &tag, &type, &ptr, &count);
- ptr = hfd(ptr, type))
+ headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
+ he->p.ptr = hfd(he->p.ptr, he->t))
{
- switch (tag) {
/* XXX Translate legacy signature tag values. */
+ switch (he->tag) {
case RPMSIGTAG_SIZE:
- tag = RPMTAG_SIGSIZE;
+ he->tag = RPMTAG_SIGSIZE;
/*@switchbreak@*/ break;
#if defined(SUPPORT_RPMV3_BROKEN)
case RPMSIGTAG_LEMD5_1:
- tag = RPMTAG_SIGLEMD5_1;
+ he->tag = RPMTAG_SIGLEMD5_1;
/*@switchbreak@*/ break;
case RPMSIGTAG_LEMD5_2:
- tag = RPMTAG_SIGLEMD5_2;
+ he->tag = RPMTAG_SIGLEMD5_2;
/*@switchbreak@*/ break;
#endif
#if defined(SUPPORT_RPMV3_VERIFY_RSA)
case RPMSIGTAG_PGP:
- tag = RPMTAG_SIGPGP;
+ he->tag = RPMTAG_SIGPGP;
/*@switchbreak@*/ break;
case RPMSIGTAG_PGP5:
- tag = RPMTAG_SIGPGP5;
+ he->tag = RPMTAG_SIGPGP5;
/*@switchbreak@*/ break;
#endif
case RPMSIGTAG_MD5:
- tag = RPMTAG_SIGMD5;
+ he->tag = RPMTAG_SIGMD5;
/*@switchbreak@*/ break;
#if defined(SUPPORT_RPMV3_VERIFY_DSA)
case RPMSIGTAG_GPG:
- tag = RPMTAG_SIGGPG;
+ he->tag = RPMTAG_SIGGPG;
/*@switchbreak@*/ break;
#endif
case RPMSIGTAG_PAYLOADSIZE:
- tag = RPMTAG_ARCHIVESIZE;
+ he->tag = RPMTAG_ARCHIVESIZE;
/*@switchbreak@*/ break;
case RPMSIGTAG_SHA1:
case RPMSIGTAG_DSA:
case RPMSIGTAG_RSA:
default:
- if (!(tag >= HEADER_SIGBASE && tag < HEADER_TAGBASE))
+ /* Skip all unknown tags that are not in the signature tag range. */
+ if (!(he->tag >= HEADER_SIGBASE && he->tag < HEADER_TAGBASE))
continue;
/*@switchbreak@*/ break;
}
- if (ptr == NULL) continue; /* XXX can't happen */
- if (!headerIsEntry(h, tag)) {
- if (hdrchkType(type))
- continue;
- if (count < 0 || hdrchkData(count))
- continue;
- switch(type) {
- case RPM_MASK_TYPE:
- case RPM_OPENPGP_TYPE:
- case RPM_ASN1_TYPE:
- case RPM_NULL_TYPE:
- continue;
- /*@notreached@*/ /*@switchbreak@*/ break;
+assert(he->p.ptr != NULL);
+ if (!headerIsEntry(h, he->tag)) {
+ if (hdrchkType(he->t))
+ continue;
+ if (he->c < 0 || hdrchkData(he->c))
+ continue;
+ switch(he->t) {
+ default:
+assert(0); /* XXX keep gcc quiet */
+ /*@switchbreak@*/ break;
case RPM_CHAR_TYPE:
case RPM_INT8_TYPE:
case RPM_INT16_TYPE:
case RPM_INT32_TYPE:
case RPM_INT64_TYPE:
- if (count != 1)
+ if (he->c != 1)
continue;
/*@switchbreak@*/ break;
case RPM_STRING_TYPE:
case RPM_BIN_TYPE:
- if (count >= 16*1024)
+ if (he->c >= 16*1024)
continue;
/*@switchbreak@*/ break;
case RPM_STRING_ARRAY_TYPE:
@@ -288,7 +284,8 @@
continue;
/*@notreached@*/ /*@switchbreak@*/ break;
}
- xx = headerAddEntry(h, tag, type, ptr, count);
+ xx = hae(h, he, 0);
+assert(xx == 1);
}
}
hi = headerFreeIterator(hi);
@@ -296,67 +293,66 @@
Header headerRegenSigHeader(const Header h, int noArchiveSize)
{
+ HAE_t hae = headerAddExtension;
HFD_t hfd = (HFD_t) headerFreeData;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
Header sigh = headerNew();
HeaderIterator hi;
- int_32 stag;
- int_32 tag;
- rpmTagType type;
- const void * ptr;
- rpmTagCount count;
int xx;
for (hi = headerInitIterator(h);
- headerNextIterator(hi, &tag, &type, &ptr, &count);
- ptr = hfd(ptr, type))
+ headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
+ he->p.ptr = hfd(he->p.ptr, he->t))
{
- switch (tag) {
/* XXX Translate legacy signature tag values. */
+ switch (he->tag) {
case RPMTAG_SIGSIZE:
- stag = RPMSIGTAG_SIZE;
+ he->tag = RPMSIGTAG_SIZE;
/*@switchbreak@*/ break;
#if defined(SUPPORT_RPMV3_BROKEN)
case RPMTAG_SIGLEMD5_1:
- stag = RPMSIGTAG_LEMD5_1;
+ he->tag = RPMSIGTAG_LEMD5_1;
/*@switchbreak@*/ break;
case RPMTAG_SIGLEMD5_2:
- stag = RPMSIGTAG_LEMD5_2;
+ he->tag = RPMSIGTAG_LEMD5_2;
/*@switchbreak@*/ break;
#endif
#if defined(SUPPORT_RPMV3_VERIFY_RSA)
case RPMTAG_SIGPGP:
- stag = RPMSIGTAG_PGP;
+ he->tag = RPMSIGTAG_PGP;
/*@switchbreak@*/ break;
case RPMTAG_SIGPGP5:
- stag = RPMSIGTAG_PGP5;
+ he->tag = RPMSIGTAG_PGP5;
/*@switchbreak@*/ break;
#endif
case RPMTAG_SIGMD5:
- stag = RPMSIGTAG_MD5;
+ he->tag = RPMSIGTAG_MD5;
/*@switchbreak@*/ break;
#if defined(SUPPORT_RPMV3_VERIFY_DSA)
case RPMTAG_SIGGPG:
- stag = RPMSIGTAG_GPG;
+ he->tag = RPMSIGTAG_GPG;
/*@switchbreak@*/ break;
#endif
case RPMTAG_ARCHIVESIZE:
/* XXX rpm-4.1 and later has archive size in signature header. */
if (noArchiveSize)
continue;
- stag = RPMSIGTAG_PAYLOADSIZE;
+ he->tag = RPMSIGTAG_PAYLOADSIZE;
/*@switchbreak@*/ break;
case RPMTAG_SHA1HEADER:
case RPMTAG_DSAHEADER:
case RPMTAG_RSAHEADER:
default:
- if (!(tag >= HEADER_SIGBASE && tag < HEADER_TAGBASE))
+ /* Skip all unknown tags that are not in the signature tag range. */
+ if (!(he->tag >= HEADER_SIGBASE && he->tag < HEADER_TAGBASE))
continue;
- stag = tag;
/*@switchbreak@*/ break;
}
- if (ptr == NULL) continue; /* XXX can't happen */
- if (!headerIsEntry(sigh, stag))
- xx = headerAddEntry(sigh, stag, type, ptr, count);
+assert(he->p.ptr != NULL);
+ if (!headerIsEntry(sigh, he->tag)) {
+ xx = hae(sigh, he, 0);
+assert(xx == 1);
+ }
}
hi = headerFreeIterator(hi);
return sigh;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/hdrinline.h
============================================================================
$ cvs diff -u -r1.23 -r1.24 hdrinline.h
--- rpm/rpmdb/hdrinline.h 21 Oct 2007 23:22:56 -0000 1.23
+++ rpm/rpmdb/hdrinline.h 22 Oct 2007 02:48:42 -0000 1.24
@@ -268,6 +268,30 @@
}
/** \ingroup header
+ * Add or append tag container to header.
+ *
+ * @param h header
+ * @param he tag container
+ * @param flags (unused)
+ * @return 1 on success, 0 on failure
+ */
+/*@mayexit@*/
+/*@unused@*/ static inline
+int headerAddExtension(Header h, HE_t he, /*@unused@*/ unsigned int flags)
+ /*@modifies h @*/
+{
+ int xx;
+ if (he->append)
+ xx = (h2hv(h)->hdraddorappend) (h, he->tag, he->t, he->p.ptr, he->c);
+ else
+ xx = (h2hv(h)->hdradd) (h, he->tag, he->t, he->p.ptr, he->c);
+#if 0
+assert(xx);
+#endif
+ return xx;
+}
+
+/** \ingroup header
* Retrieve tag value.
* Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with
* RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.h
============================================================================
$ cvs diff -u -r1.54 -r1.55 header.h
--- rpm/rpmdb/header.h 22 Oct 2007 01:14:51 -0000 1.54
+++ rpm/rpmdb/header.h 22 Oct 2007 02:48:42 -0000 1.55
@@ -371,22 +371,14 @@
/*@modifies *he @*/;
/**
- * Prototype for headerAddEntry() vector.
+ * Add or append tag container to header.
*
- * Duplicate tags are okay, but only defined for iteration (with the
- * exceptions noted below). While you are allowed to add i18n string
- * arrays through this function, you probably don't mean to. See
- * headerAddI18NString() instead.
- *
- * @param h header
- * @param tag tag
- * @param type tag value data type
- * @param p tag value(s)
- * @param c number of values
- * @return 1 on success, 0 on failure
+ * @param h header
+ * @param he tag container
+ * @param flags (unused)
+ * @return 1 on success, 0 on failure
*/
-typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
- const void * p, rpmTagCount c)
+typedef int (*HAE_t) (Header h, HE_t he, unsigned int flags)
/*@modifies h @*/;
/**
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmdb.c
============================================================================
$ cvs diff -u -r1.194 -r1.195 rpmdb.c
--- rpm/rpmdb/rpmdb.c 21 Oct 2007 23:22:56 -0000 1.194
+++ rpm/rpmdb/rpmdb.c 22 Oct 2007 02:48:42 -0000 1.195
@@ -3097,8 +3097,8 @@
DBC * dbcursor = NULL;
DBT * key = alloca(sizeof(*key));
DBT * data = alloca(sizeof(*data));
- HGE_t hge = (HGE_t) headerGetExtension;
- HAE_t hae = (HAE_t) headerAddEntry;
+ HGE_t hge = headerGetExtension;
+ HAE_t hae = headerAddExtension;
HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
sigset_t signalMask;
#if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
@@ -3135,7 +3135,7 @@
he->p.i32p = &tid;
he->c = 1;
if (!headerIsEntry(h, he->tag))
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
}
/* Add the package color if not present. */
@@ -3145,7 +3145,7 @@
he->t = RPM_INT32_TYPE;
he->p.ui32p = &hcolor;
he->c = 1;
- xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
+ xx = hae(h, he, 0);
}
#if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
@@ .
Received on Mon Oct 22 04:48:42 2007