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: 17-Oct-2007 20:32:58 Branch: HEAD Handle: 2007101719325305 Modified files: rpm CHANGES rpm/build files.c pack.c parsePreamble.c parseSpec.c reqprov.c rpm/lib depends.c formats.c package.c psm.c rpmchecksig.c rpmds.c rpmfc.c rpmfi.c rpminstall.c rpmrollback.c rpmte.c rpmts.c transaction.c rpm/python header-py.c rpm/rpmdb fprint.c hdrNVR.c hdrfmt.c header.c header.h pkgio.c rpmdb.c signature.c rpm/tools rpmcache.c Log: - jbj: remove the pointless ;-) indirection in *(HE_t) for type/count. Summary: Revision Changes Path 1.1723 +1 -0 rpm/CHANGES 1.274 +20 -28 rpm/build/files.c 2.238 +10 -16 rpm/build/pack.c 2.136 +13 -19 rpm/build/parsePreamble.c 2.109 +2 -4 rpm/build/parseSpec.c 1.74 +6 -8 rpm/build/reqprov.c 1.352 +10 -16 rpm/lib/depends.c 2.113 +19 -19 rpm/lib/formats.c 2.175 +10 -12 rpm/lib/package.c 2.246 +57 -77 rpm/lib/psm.c 1.159 +12 -20 rpm/lib/rpmchecksig.c 2.74 +13 -19 rpm/lib/rpmds.c 1.26 +3 -5 rpm/lib/rpmfc.c 2.90 +47 -51 rpm/lib/rpmfi.c 1.176 +5 -7 rpm/lib/rpminstall.c 1.21 +11 -17 rpm/lib/rpmrollback.c 2.61 +17 -23 rpm/lib/rpmte.c 2.112 +3 -5 rpm/lib/rpmts.c 1.345 +6 -12 rpm/lib/transaction.c 1.65 +37 -49 rpm/python/header-py.c 1.19 +5 -7 rpm/rpmdb/fprint.c 1.18 +10 -16 rpm/rpmdb/hdrNVR.c 1.15 +23 -36 rpm/rpmdb/hdrfmt.c 1.86 +50 -55 rpm/rpmdb/header.c 1.40 +23 -23 rpm/rpmdb/header.h 1.19 +5 -9 rpm/rpmdb/pkgio.c 1.190 +63 -75 rpm/rpmdb/rpmdb.c 1.12 +3 -5 rpm/rpmdb/signature.c 2.19 +2 -4 rpm/tools/rpmcache.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.1722 -r1.1723 CHANGES --- rpm/CHANGES 17 Oct 2007 16:53:21 -0000 1.1722 +++ rpm/CHANGES 17 Oct 2007 18:32:53 -0000 1.1723 @@ -1,4 +1,5 @@ 4.5 -> 5.0: + - jbj: remove the pointless ;-) indirection in *(HE_t) for type/count. - jbj: drill rpmTagData everywhere. - jbj: start regularizing hae/hme calls. - jbj: drill rpmTagCount everywhere. @@ . patch -p0 <<'@@ .' Index: rpm/build/files.c ============================================================================ $ cvs diff -u -r1.273 -r1.274 files.c --- rpm/build/files.c 17 Oct 2007 16:53:22 -0000 1.273 +++ rpm/build/files.c 17 Oct 2007 18:32:54 -0000 1.274 @@ -271,10 +271,8 @@ /*@modifies internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int_32 currentTime = time(NULL); int_32 * mtime; @@ -282,12 +280,12 @@ int i; he->tag = RPMTAG_FILEMTIMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); mtime = he_p.i32p; he->tag = RPMTAG_OLDFILENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { xx = currentTime - mtime[i]; if (xx < 0) xx = -xx; if (xx > tc) @@ -1170,10 +1168,8 @@ /*@modifies h @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; HAE_t hae = (HAE_t)headerAddEntry; HRE_t hre = (HRE_t)headerRemoveEntry; @@ -1199,9 +1195,9 @@ } he->tag = RPMTAG_OLDFILENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fileNames = he_p.argv; - count = he_c; + count = he->c; if (!xx || fileNames == NULL || count <= 0) return; /* no file list */ @@ -1255,20 +1251,20 @@ exit: if (count > 0) { he->tag = RPMTAG_DIRINDEXES; - he_t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; he_p.i32p = dirIndexes; - he_c = count; - xx = hae(h, he->tag, he_t, he_p, he_c); + he->c = count; + xx = hae(h, he->tag, he->t, he_p, he->c); he->tag = RPMTAG_BASENAMES; - he_t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; he_p.argv = baseNames; - he_c = count; - xx = hae(h, he->tag, he_t, he_p, he_c); + he->c = count; + xx = hae(h, he->tag, he->t, he_p, he->c); he->tag = RPMTAG_DIRNAMES; - he_t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; he_p.argv = dirNames; - he_c = dirIndex + 1; - xx = hae(h, he->tag, he_t, he_p, he_c); + he->c = dirIndex + 1; + xx = hae(h, he->tag, he->t, he_p, he->c); } fileNames = _free(fileNames); @@ -2165,10 +2161,8 @@ rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; struct FileList_s fl; char *s, **files, **fp; @@ -2233,7 +2227,7 @@ fl.buildRootURL = rpmGenPath(spec->rootURL, "%{?buildroot}", NULL); he->tag = RPMTAG_DEFAULTPREFIX; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); fl.prefix = he_p.str; fl.fileCount = 0; @@ -2695,10 +2689,8 @@ /*@modifies check_fileList @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; Package pkg; int res = 0; @@ -2715,7 +2707,7 @@ (void) headerMacrosLoad(pkg->header); he->tag = RPMTAG_NVRA; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), he_p.str); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/build/pack.c ============================================================================ $ cvs diff -u -r2.237 -r2.238 pack.c --- rpm/build/pack.c 17 Oct 2007 16:53:22 -0000 2.237 +++ rpm/build/pack.c 17 Oct 2007 18:32:54 -0000 2.238 @@ -174,16 +174,14 @@ /*@modifies h, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; StringBuf sb = newStringBuf(); int xx; he->tag = tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (xx) { appendLineStringBuf(sb, he_p.str); (void) headerRemoveEntry(h, tag); @@ -440,10 +438,8 @@ void providePackageNVR(Header h) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char *N, *V, *R; int_32 E; @@ -465,7 +461,7 @@ pEVR = p = alloca(21 + strlen(V) + 1 + strlen(R) + 1); *p = '\0'; he->tag = RPMTAG_EPOCH; - gotE = hge(h, he->tag, he->t, he->p, he->c); + gotE = hge(h, he->tag, &he->t, he->p, &he->c); E = (he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); if (gotE) { @@ -479,9 +475,9 @@ * If no provides at all are available, we can just add. */ he->tag = RPMTAG_PROVIDENAME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); provides = he_p.argv; - providesCount = he_c; + providesCount = he->c; if (!xx) goto exit; @@ -489,7 +485,7 @@ * Otherwise, fill in entries on legacy packages. */ he->tag = RPMTAG_PROVIDEVERSION; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); providesEVR = he_p.argv; if (!xx) { for (i = 0; i < providesCount; i++) { @@ -504,7 +500,7 @@ } he->tag = RPMTAG_PROVIDEFLAGS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); provideFlags = he_p.i32p; /*@-nullderef@*/ /* LCL: providesEVR is not NULL */ @@ -863,10 +859,8 @@ int packageBinaries(Spec spec) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; struct cpioSourceArchive_s csabuf; CSA_t csa = &csabuf; @@ -917,7 +911,7 @@ binFormat = _free(binFormat); if (binRpm == NULL) { he->tag = RPMTAG_NVRA; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); rpmlog(RPMLOG_ERR, _("Could not generate output " "filename for package %s: %s\n"), he_p.str, errorString); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/build/parsePreamble.c ============================================================================ $ cvs diff -u -r2.135 -r2.136 parsePreamble.c --- rpm/build/parsePreamble.c 17 Oct 2007 16:53:22 -0000 2.135 +++ rpm/build/parsePreamble.c 17 Oct 2007 18:32:54 -0000 2.136 @@ -212,25 +212,23 @@ /*@*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int xx; he->tag = tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx) return -1; /*@-boundsread@*/ - while (he_c--) { - if (!xstrcasecmp(he_p.argv[he_c], name)) + while (he->c--) { + if (!xstrcasecmp(he_p.argv[he->c], name)) break; } he_p.ptr = _free(he_p.ptr); /*@=boundsread@*/ - return (he_c >= 0 ? 1 : 0); + return (he->c >= 0 ? 1 : 0); } /** @@ -443,10 +441,8 @@ spectag stashSt(Spec spec, Header h, int tag, const char * lang) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; spectag t = NULL; int xx; @@ -465,7 +461,7 @@ t->t_msgid = NULL; if (!(t->t_lang && strcmp(t->t_lang, RPMBUILD_DEFAULT_LANG))) { he->tag = RPMTAG_NAME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (xx) { char buf[1024]; sprintf(buf, "%s(%s)", he_p.str, tagName(tag)); @@ -504,10 +500,8 @@ rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; char * field = spec->line; char * end; @@ -607,18 +601,18 @@ case RPMTAG_PREFIXES: addOrAppendListEntry(pkg->header, tag, field); he->tag = tag; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); if (tag == RPMTAG_PREFIXES) - while (he_c--) { - if (he_p.argv[he_c][0] != '/') { + while (he->c--) { + if (he_p.argv[he->c][0] != '/') { rpmlog(RPMLOG_ERR, _("line %d: Prefixes must begin with \"/\": %s\n"), spec->lineNum, spec->line); he_p.ptr = _free(he_p.ptr); return RPMRC_FAIL; } - len = strlen(he_p.argv[he_c]); - if (he_p.argv[he_c][len - 1] == '/' && len > 1) { + len = strlen(he_p.argv[he->c]); + if (he_p.argv[he->c][len - 1] == '/' && len > 1) { rpmlog(RPMLOG_ERR, _("line %d: Prefixes must not end with \"/\": %s\n"), spec->lineNum, spec->line); @@ . patch -p0 <<'@@ .' Index: rpm/build/parseSpec.c ============================================================================ $ cvs diff -u -r2.108 -r2.109 parseSpec.c --- rpm/build/parseSpec.c 17 Oct 2007 16:53:22 -0000 2.108 +++ rpm/build/parseSpec.c 17 Oct 2007 18:32:54 -0000 2.109 @@ -435,10 +435,8 @@ const char *cookie, int anyarch, int force, int verify) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmParseState parsePart = PART_PREAMBLE; int initialPackage = 1; @@ -608,7 +606,7 @@ for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) { if (!headerIsEntry(pkg->header, RPMTAG_DESCRIPTION)) { he->tag = RPMTAG_NVRA; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); rpmlog(RPMLOG_ERR, _("Package has no %%description: %s\n"), he_p.str); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/build/reqprov.c ============================================================================ $ cvs diff -u -r1.73 -r1.74 reqprov.c --- rpm/build/reqprov.c 17 Oct 2007 16:53:22 -0000 1.73 +++ rpm/build/reqprov.c 17 Oct 2007 18:32:54 -0000 1.74 @@ -15,10 +15,8 @@ int index) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char ** names; rpmTag nametag = 0; @@ -64,9 +62,9 @@ /* Check for duplicate dependencies. */ he->tag = nametag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); names = he_p.argv; - len = he_c; + len = he->c; if (xx) { const char ** versions = NULL; int_32 *flags = NULL; @@ -75,15 +73,15 @@ if (flagtag) { he->tag = versiontag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); versions = he_p.argv; he->tag = flagtag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); flags = he_p.i32p; } if (indextag) { he->tag = indextag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); indexes = he_p.i32p; } @@ . patch -p0 <<'@@ .' Index: rpm/lib/depends.c ============================================================================ $ cvs diff -u -r1.351 -r1.352 depends.c --- rpm/lib/depends.c 17 Oct 2007 16:53:22 -0000 1.351 +++ rpm/lib/depends.c 17 Oct 2007 18:32:55 -0000 1.352 @@ -151,20 +151,18 @@ /*@*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * one, * two; int rc = 0; int xx; he->tag = RPMTAG_HDRID; - xx = hge(first, he->tag, he->t, he->p, he->c); + xx = hge(first, he->tag, &he->t, he->p, &he->c); one = he_p.str; he->tag = RPMTAG_HDRID; - xx = hge(second, he->tag, he->t, he->p, he->c); + xx = hge(second, he->tag, &he->t, he->p, &he->c); two = he_p.str; if (one && two) @@ -195,10 +193,8 @@ fnpyKey key, int upgrade, rpmRelocation relocs) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmdepFlags depFlags = rpmtsDFlags(ts); uint_32 tscolor = rpmtsColor(ts); @@ -238,16 +234,16 @@ * Check platform affinity of binary packages. */ he->tag = RPMTAG_ARCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); arch = he_p.str; he->tag = RPMTAG_OS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); os = he_p.str; if (nplatpat > 1) { const char * platform = NULL; he->tag = RPMTAG_PLATFORM; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); platform = he_p.str; if (!xx || platform == NULL) platform = rpmExpand(arch, "-unknown-", os, NULL); @@ -256,7 +252,7 @@ if (rc <= 0) { rpmps ps = rpmtsProblems(ts); he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); rpmpsAppend(ps, RPMPROB_BADPLATFORM, he_p.str, key, platform, NULL, NULL, 0); @@ -1316,10 +1312,8 @@ /*@modifies ts, mi, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmdepFlags depFlags = rpmtsDFlags(ts); uint_32 tscolor = rpmtsColor(ts); @@ -1337,7 +1331,7 @@ int rc; he->tag = RPMTAG_NVRA; - rc = hge(h, he->tag, he->t, he->p, he->c); + rc = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); if (!(depFlags & RPMDEPS_FLAG_NOREQUIRES)) requires = rpmdsNew(h, RPMTAG_REQUIRENAME, scareMem); @@ . patch -p0 <<'@@ .' Index: rpm/lib/formats.c ============================================================================ $ cvs diff -u -r2.112 -r2.113 formats.c --- rpm/lib/formats.c 17 Oct 2007 16:53:22 -0000 2.112 +++ rpm/lib/formats.c 17 Oct 2007 18:32:55 -0000 2.113 @@ -32,10 +32,10 @@ { const char ** list; - if (rpmGetFilesystemList(&list, he->c)) + if (rpmGetFilesystemList(&list, &he->c)) return 1; - if (he->t) *he->t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; if (he->p) (*he->p).argv = list; he->freeData = 0; @@ -69,14 +69,14 @@ fnames.argv = _free(fnames.argv); } - if (rpmGetFilesystemList(NULL, he->c)) + if (rpmGetFilesystemList(NULL, &he->c)) goto exit; - *he->t = RPM_INT64_TYPE; + he->t = RPM_INT64_TYPE; he->freeData = 1; if (fnames.ptr == NULL) - usages = xcalloc((*he->c), sizeof(*usages)); + usages = xcalloc(he->c, sizeof(*usages)); else if (rpmGetFilesystemUsage(fnames.argv, fsizes.ui32p, numFiles, &usages, 0)) goto exit; @@ -102,8 +102,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFClasses(h, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFClasses(h, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -119,8 +119,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFContexts(h, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFContexts(h, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -136,8 +136,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFSContexts(h, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFSContexts(h, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -153,8 +153,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildREContexts(h, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildREContexts(h, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -170,8 +170,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFDeps(h, RPMTAG_PROVIDENAME, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFDeps(h, RPMTAG_PROVIDENAME, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -187,8 +187,8 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFDeps(h, RPMTAG_REQUIRENAME, &(*he->p).argv, he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFDeps(h, RPMTAG_REQUIRENAME, &(*he->p).argv, &he->c); he->freeData = 1; return 0; } @@ -243,9 +243,9 @@ /* XXX perhaps return "(none)" inband if no suggests/enhances <shrug>. */ - *he->t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; (*he->p).argv = argv; - *he->c = argc; + he->c = argc; he->freeData = 1; return 0; } @@ . patch -p0 <<'@@ .' Index: rpm/lib/package.c ============================================================================ $ cvs diff -u -r2.174 -r2.175 package.c --- rpm/lib/package.c 17 Oct 2007 16:53:22 -0000 2.174 +++ rpm/lib/package.c 17 Oct 2007 18:32:55 -0000 2.175 @@ -185,10 +185,8 @@ rpmRC rpmReadPackageFile(rpmts ts, void * _fd, const char * fn, Header * hdrp) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; pgpDig dig = rpmtsDig(ts); FD_t fd = _fd; @@ -353,10 +351,10 @@ /* Retrieve the tag parameters from the signature header. */ sig = NULL; he->tag = sigtag; - xx = hge(sigh, he->tag, he->t, he->p, he->c); - sigtype = he_t; + xx = hge(sigh, he->tag, &he->t, he->p, &he->c); + sigtype = he->t; sig = he_p.ptr; - siglen = he_c; + siglen = he->c; if (sig == NULL) { rc = RPMRC_FAIL; goto exit; @@ -383,10 +381,10 @@ size_t nmagic = 0; he->tag = RPMTAG_HEADERIMMUTABLE; - xx = hge(h, he->tag, he->t, he->p, he->c); - uht = he_t; + xx = hge(h, he->tag, &he->t, he->p, &he->c); + uht = he->t; uh = he_p.ptr; - uhc = he_c; + uhc = he->c; if (!xx) break; (void) headerGetMagic(NULL, &hmagic, &nmagic); @@ -422,10 +420,10 @@ size_t nmagic = 0; he->tag = RPMTAG_HEADERIMMUTABLE; - xx = hge(h, he->tag, he->t, he->p, he->c); - uht = he_t; + xx = hge(h, he->tag, &he->t, he->p, &he->c); + uht = he->t; uh = he_p.ptr; - uhc = he_c; + uhc = he->c; if (!xx) break; (void) headerGetMagic(NULL, &hmagic, &nmagic); @@ . patch -p0 <<'@@ .' Index: rpm/lib/psm.c ============================================================================ $ cvs diff -u -r2.245 -r2.246 psm.c --- rpm/lib/psm.c 17 Oct 2007 16:53:22 -0000 2.245 +++ rpm/lib/psm.c 17 Oct 2007 18:32:55 -0000 2.246 @@ -56,10 +56,8 @@ int rpmVersionCompare(Header first, Header second) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * one, * two; int_32 Eone, Etwo; @@ -67,11 +65,11 @@ int xx; he->tag = RPMTAG_EPOCH; - xx = hge(first, he->tag, he->t, he->p, he->c); + xx = hge(first, he->tag, &he->t, he->p, &he->c); Eone = (xx && he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_EPOCH; - xx = hge(second, he->tag, he->t, he->p, he->c); + xx = hge(second, he->tag, &he->t, he->p, &he->c); Etwo = (xx && he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); @@ -81,10 +79,10 @@ return 1; he->tag = RPMTAG_VERSION; - xx = hge(first, he->tag, he->t, he->p, he->c); + xx = hge(first, he->tag, &he->t, he->p, &he->c); one = he_p.str; he->tag = RPMTAG_VERSION; - xx = hge(second, he->tag, he->t, he->p, he->c); + xx = hge(second, he->tag, &he->t, he->p, &he->c); two = he_p.str; rc = rpmvercmp(one, two); one = _free(one); @@ -93,10 +91,10 @@ return rc; he->tag = RPMTAG_RELEASE; - xx = hge(first, he->tag, he->t, he->p, he->c); + xx = hge(first, he->tag, &he->t, he->p, &he->c); one = he_p.str; he->tag = RPMTAG_RELEASE; - xx = hge(second, he->tag, he->t, he->p, he->c); + xx = hge(second, he->tag, &he->t, he->p, &he->c); two = he_p.str; rc = rpmvercmp(one, two); one = _free(one); @@ -189,10 +187,8 @@ const char ** specFilePtr, const char ** cookie) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; FD_t fd = _fd; int scareMem = 0; @@ -269,7 +265,7 @@ if (cookie) { *cookie = NULL; he->tag = RPMTAG_COOKIE; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); *cookie = he_p.str; } @@ -289,7 +285,7 @@ if (fi->h != NULL) { /* XXX can't happen */ he->tag = RPMTAG_FILEPATHS; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); fi->apath = he_p.argv; if (headerIsEntry(fi->h, RPMTAG_COOKIE)) @@ -499,10 +495,8 @@ /*@modifies psm, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const rpmts ts = psm->ts; int rootFdno = -1; @@ -519,7 +513,7 @@ *ssp |= (RPMSCRIPT_STATE_LUA|RPMSCRIPT_STATE_EXEC); he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(xx && he_p.str != NULL); /* Save the current working directory. */ @@ -636,10 +630,8 @@ fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const rpmts ts = psm->ts; const char ** argv = NULL; @@ -667,7 +659,7 @@ return RPMRC_OK; he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); NVRA = he_p.str; @@ -717,13 +709,13 @@ } he->tag = RPMTAG_INSTPREFIXES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); prefixes = he_p.argv; - numPrefixes = he_c; + numPrefixes = he->c; if (!xx) { he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_INSTALLPREFIX; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (xx) { char * t; prefixes = xmalloc(sizeof(*prefixes) + strlen(he_p.argv[0]) + 1); @@ -967,10 +959,8 @@ /*@modifies psm, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmfi fi = psm->fi; const char * argv0 = NULL; @@ -980,17 +970,17 @@ assert(fi->h != NULL); he->tag = psm->scriptTag; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); script = he_p.str; if (script == NULL) goto exit; he->tag = psm->progTag; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); if (he_p.ptr == NULL) goto exit; /* Coerce strings into header argv return. */ - if (he_t == RPM_STRING_TYPE) { + if (he->t == RPM_STRING_TYPE) { const char * s = he_p.str; char * t; he_p.argv = xmalloc(sizeof(*he_p.argv)+strlen(s)+1); @@ -1004,7 +994,7 @@ if (he_p.argv[0][0] == '%') he_p.argv[0] = argv0 = rpmExpand(he_p.argv[0], NULL); - rc = runScript(psm, fi->h, tag2sln(psm->scriptTag), he_c, he_p.argv, + rc = runScript(psm, fi->h, tag2sln(psm->scriptTag), he->c, he_p.argv, script, psm->scriptArg, -1); exit: @@ -1033,10 +1023,8 @@ { int scareMem = 0; HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const rpmts ts = psm->ts; rpmds trigger = NULL; @@ -1050,10 +1038,10 @@ int i; he->tag = RPMTAG_NAME; - xx = hge(sourceH, he->tag, he->t, he->p, he->c); + xx = hge(sourceH, he->tag, &he->t, he->p, &he->c); sourceName = he_p.str; he->tag = RPMTAG_NAME; - xx = hge(triggeredH, he->tag, he->t, he->p, he->c); + xx = hge(triggeredH, he->tag, &he->t, he->p, &he->c); triggerName = he_p.str; trigger = rpmdsInit(rpmdsNew(triggeredH, RPMTAG_TRIGGERNAME, scareMem)); @@ -1081,13 +1069,13 @@ continue; he->tag = RPMTAG_TRIGGERINDEX; - xx = hge(triggeredH, he->tag, he->t, he->p, he->c); + xx = hge(triggeredH, he->tag, &he->t, he->p, &he->c); triggerIndices = he_p.i32p; he->tag = RPMTAG_TRIGGERSCRIPTS; - xx = hge(triggeredH, he->tag, he->t, he->p, he->c); + xx = hge(triggeredH, he->tag, &he->t, he->p, &he->c); triggerScripts = he_p.argv; he->tag = RPMTAG_TRIGGERSCRIPTPROG; - xx = hge(triggeredH, he->tag, he->t, he->p, he->c); + xx = hge(triggeredH, he->tag, &he->t, he->p, &he->c); triggerProgs = he_p.argv; if (triggerIndices && triggerScripts && triggerProgs) { @@ -1187,10 +1175,8 @@ fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const rpmts ts = psm->ts; rpmfi fi = psm->fi; @@ -1207,13 +1193,13 @@ if (fi->h == NULL) return rc; /* XXX can't happen */ he->tag = RPMTAG_TRIGGERNAME; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); triggerNames = he_p.argv; - numTriggers = he_c; + numTriggers = he->c; he->tag = RPMTAG_TRIGGERINDEX; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); triggerIndices = he_p.i32p; - numTriggerIndices = he_c; + numTriggerIndices = he->c; if (!(triggerNames && numTriggers > 0 && triggerIndices && numTriggerIndices > 0)) goto exit; @@ -1375,16 +1361,14 @@ /*@*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; uint_32 val; int xx; he->tag = tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); val = (xx && he_p.ui32p ? *he_p.ui32p : 0); he_p.ptr = _free(he_p.ptr); return val; @@ -1401,16 +1385,14 @@ /*@modifies th @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int xx = 1; he->tag = tag; - if (hge(sh, he->tag, he->t, he->p, he->c) && he_c > 0) - xx = headerAddEntry(th, he->tag, he_t, he_p.ptr, he_c); + if (hge(sh, he->tag, &he->t, he->p, &he->c) && he->c > 0) + xx = headerAddEntry(th, he->tag, he->t, he_p.ptr, he->c); assert(xx); he_p.ptr = _free(he_p.ptr); return 0; @@ -1596,10 +1578,8 @@ rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const rpmts ts = psm->ts; uint_32 tscolor = rpmtsColor(ts); @@ -1695,7 +1675,7 @@ * need the leading / stripped. */ he->tag = RPMTAG_DEFAULTPREFIX; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); fi->striplen = (xx && he_p.str ? strlen(he_p.str) + 1 : 1); he_p.ptr = _free(he_p.ptr); fi->mapflags = @@ -1705,18 +1685,18 @@ he->tag = RPMTAG_ORIGPATHS; else he->tag = RPMTAG_FILEPATHS; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); assert(he_p.argv != NULL); fi->apath = he_p.argv; if (fi->fuser == NULL) { he->tag = RPMTAG_FILEUSERNAME; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); fi->fuser = he_p.argv; } if (fi->fgroup == NULL) { he->tag = RPMTAG_FILEGROUPNAME; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); fi->fgroup = he_p.argv; } rc = RPMRC_OK; @@ -1838,19 +1818,19 @@ /* Save originnal header's origin (i.e. URL) */ he->tag = RPMTAG_PACKAGEORIGIN; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); origin = he_p.str; /* Retrieve original header blob. */ he->tag = RPMTAG_HEADERIMMUTABLE; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); uh = he_p.ptr; if (xx && uh != NULL) { psm->oh = headerCopyLoad(uh); uh = _free(uh); } else { he->tag = RPMTAG_HEADERIMAGE; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); uh = he_p.ptr; if (xx && uh != NULL) { HeaderIterator hi; @@ -1874,10 +1854,10 @@ noArchiveSize = 1; if (ptr) { he->tag = tag; - he_t = type; + he->t = type; he_p.ptr = (void *) ptr; /* NOCAST */ - he_c = count; - xx = hae(psm->oh, he->tag, he_t, he_p, he_c); + he->c = count; + xx = hae(psm->oh, he->tag, he->t, he_p, he->c); } } hi = headerFreeIterator(hi); @@ -1938,18 +1918,18 @@ { int_32 tid = rpmtsGetTid(ts); he->tag = RPMTAG_REMOVETID; - he_t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; he_p.i32p = &tid; - he_c = 1; - xx = hae(psm->oh, he->tag, he_t, he_p, he_c); + he->c = 1; + xx = hae(psm->oh, he->tag, he->t, he_p, he->c); /* Add original header's origin (i.e. URL) */ if (origin != NULL) { he->tag = RPMTAG_PACKAGEORIGIN; - he_t = RPM_STRING_TYPE; + he->t = RPM_STRING_TYPE; he_p.str = origin; - he_c = 1; - xx = hae(psm->oh, he->tag, he_t, he_p, he_c); + he->c = 1; + xx = hae(psm->oh, he->tag, he->t, he_p, he->c); origin = _free(origin); } @@ -2337,7 +2317,7 @@ char * t; he->tag = RPMTAG_PAYLOADCOMPRESSOR; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); payload_compressor = he_p.str; if (payload_compressor == NULL) payload_compressor = xstrdup("gzip"); @@ -2354,7 +2334,7 @@ payload_compressor = _free(payload_compressor); he->tag = RPMTAG_PAYLOADFORMAT; - xx = hge(fi->h, he->tag, he->t, he->p, he->c); + xx = hge(fi->h, he->tag, &he->t, he->p, &he->c); payload_format = he_p.str; if (!xx || payload_format == NULL || !(!strcmp(payload_format, "tar") || !strcmp(payload_format, "ustar"))) { @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmchecksig.c ============================================================================ $ cvs diff -u -r1.158 -r1.159 rpmchecksig.c --- rpm/lib/rpmchecksig.c 17 Oct 2007 16:53:22 -0000 1.158 +++ rpm/lib/rpmchecksig.c 17 Oct 2007 18:32:55 -0000 1.159 @@ -143,20 +143,18 @@ /*@modifies *signid, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int rc = 1; int xx; he->tag = sigtag; - xx = hge(sigh, he->tag, he->t, he->p, he->c); + xx = hge(sigh, he->tag, &he->t, he->p, &he->c); if (xx && he_p.ptr != NULL) { pgpDig dig = pgpNewDig(0); - if (!pgpPrtPkts(he_p.ptr, he_c, dig, 0)) { + if (!pgpPrtPkts(he_p.ptr, he->c, dig, 0)) { memcpy(signid, dig->signature.signid, sizeof(dig->signature.signid)); rc = 0; } @@ -182,10 +180,8 @@ fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmgi gi = NULL; FD_t fd = NULL; @@ -271,7 +267,7 @@ /* Dump the immutable region (if present). */ he->tag = RPMTAG_HEADERSIGNATURES; - xx = hge(sigh, he->tag, he->t, he->p, he->c); + xx = hge(sigh, he->tag, &he->t, he->p, &he->c); if (xx) { HeaderIterator hi; int_32 htag; @@ -677,10 +673,8 @@ /*@modifies fd, *dig, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; unsigned char buf[4*BUFSIZ]; ssize_t count; @@ -704,7 +698,7 @@ size_t nmagic = 0; he->tag = RPMTAG_HEADERIMMUTABLE; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx || he_p.ptr == NULL) { h = headerFree(h); rpmlog(RPMLOG_ERR, _("%s: headerGetEntry failed\n"), fn); @@ -714,11 +708,11 @@ dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE); if (hmagic && nmagic > 0) (void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, nmagic); - (void) rpmDigestUpdate(dig->hdrsha1ctx, he_p.ptr, he_c); + (void) rpmDigestUpdate(dig->hdrsha1ctx, he_p.ptr, he->c); dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE); if (hmagic && nmagic > 0) (void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, nmagic); - (void) rpmDigestUpdate(dig->hdrmd5ctx, he_p.ptr, he_c); + (void) rpmDigestUpdate(dig->hdrmd5ctx, he_p.ptr, he->c); he_p.ptr = _free(he_p.ptr); } h = headerFree(h); @@ -768,10 +762,8 @@ const char * fn) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int res2, res3; char result[1024]; @@ -868,8 +860,8 @@ #endif ) { he->tag = sigtag; - xx = hge(sigh, he->tag, he->t, he->p, he->c); - xx = pgpPrtPkts(he_p.ptr, he_c, dig, 0); + xx = hge(sigh, he->tag, &he->t, he->p, &he->c); + xx = pgpPrtPkts(he_p.ptr, he->c, dig, 0); he_p.ptr = _free(he_p.ptr); #if defined(SUPPORT_RPMV3_VERIFY_RSA) /* XXX assume same hash_algo in header-only and header+payload */ @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmds.c ============================================================================ $ cvs diff -u -r2.73 -r2.74 rpmds.c --- rpm/lib/rpmds.c 17 Oct 2007 16:53:22 -0000 2.73 +++ rpm/lib/rpmds.c 17 Oct 2007 18:32:55 -0000 2.74 @@ -236,10 +236,8 @@ { int scareMem = (flags & 0x1); HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmTag tagEVR, tagF; @@ -288,9 +286,9 @@ goto exit; he->tag = tagN; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); N = he_p.argv; - Count = he_c; + Count = he->c; if (xx && N != NULL && Count > 0) { ds = xcalloc(1, sizeof(*ds)); ds->Type = Type; @@ -304,22 +302,22 @@ if (tagEVR > 0) { he->tag = tagEVR; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->EVR = he_p.argv; } if (tagF > 0) { he->tag = tagF; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->Flags = he_p.i32p; } { he->tag = RPMTAG_ARCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->A = he_p.str; } { he->tag = RPMTAG_BUILDTIME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->BT = (he_p.ui32p ? *he_p.ui32p : 0); he_p.ptr = _free(he_p.ptr); } @@ -477,10 +475,8 @@ rpmds rpmdsThis(Header h, rpmTag tagN, int_32 Flags) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmds ds = NULL; const char * Type; @@ -514,7 +510,7 @@ goto exit; he->tag = RPMTAG_EPOCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); E = (he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); @@ -547,11 +543,11 @@ ds->Flags = xmalloc(sizeof(*ds->Flags)); ds->Flags[0] = Flags; he->tag = RPMTAG_ARCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->A = he_p.str; he->tag = RPMTAG_BUILDTIME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); ds->BT = (he_p.ui32p ? *he_p.ui32p : 0); he_p.ptr = _free(he_p.ptr); @@ -3717,10 +3713,8 @@ int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * pkgN, * V, * R; int_32 E; @@ -3746,7 +3740,7 @@ (void) headerNEVRA(h, &pkgN, NULL, &V, &R, NULL); /*@=mods@*/ he->tag = RPMTAG_EPOCH; - gotE = hge(h, he->tag, he->t, he->p, he->c); + gotE = hge(h, he->tag, &he->t, he->p, &he->c); E = (he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmfc.c ============================================================================ $ cvs diff -u -r1.25 -r1.26 rpmfc.c --- rpm/lib/rpmfc.c 17 Oct 2007 16:53:22 -0000 1.25 +++ rpm/lib/rpmfc.c 17 Oct 2007 18:32:55 -0000 1.26 @@ -1322,10 +1322,8 @@ /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; StringBuf sb_stdin = newStringBuf(); StringBuf sb_stdout = NULL; @@ -1343,7 +1341,7 @@ /* Retrieve scriptlet interpreter. */ he->tag = dm->ntag; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); if (!xx || he_p.str == NULL) continue; xx = strcmp(he_p.str, "/bin/sh") && strcmp(he_p.str, "/bin/bash"); @@ -1353,7 +1351,7 @@ /* Retrieve scriptlet body. */ he->tag = dm->vtag; - xx = hge(pkg->header, he->tag, he->t, he->p, he->c); + xx = hge(pkg->header, he->tag, &he->t, he->p, &he->c); if (!xx || he_p.str == NULL) continue; truncStringBuf(sb_stdin); @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmfi.c ============================================================================ $ cvs diff -u -r2.89 -r2.90 rpmfi.c --- rpm/lib/rpmfi.c 17 Oct 2007 16:53:22 -0000 2.89 +++ rpm/lib/rpmfi.c 17 Oct 2007 18:32:55 -0000 2.90 @@ -686,10 +686,8 @@ { rpmte p = rpmtsRelocateElement(ts); HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; HAE_t hae = (HAE_t) headerAddEntry; HME_t hme = (HME_t) headerModifyEntry; @@ -722,10 +720,10 @@ int xx; he->tag = RPMTAG_PREFIXES; - xx = hge(origH, he->tag, he->t, he->p, he->c); - validType = he_t; + xx = hge(origH, he->tag, &he->t, he->p, &he->c); + validType = he->t; validRelocations = he_p.argv; - numValid = he_c; + numValid = he->c; if (!xx) numValid = 0; @@ -746,10 +744,10 @@ if (numValid) { if (!headerIsEntry(origH, RPMTAG_INSTPREFIXES)) { he->tag = RPMTAG_INSTPREFIXES; - he_t = validType; + he->t = validType; he_p.argv = validRelocations; - he_c = numValid; - xx = hae(origH, he->tag, he_t, he_p, he_c); + he->c = numValid; + xx = hae(origH, he->tag, he->t, he_p, he->c); } validRelocations = _free(validRelocations); } @@ -874,10 +872,10 @@ if (numActual) { he->tag = RPMTAG_INSTPREFIXES; - he_t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; he_p.argv = actualRelocations; - he_c = numActual; - xx = hae(h, he->tag, he_t, he_p, he_c); + he->c = numActual; + xx = hae(h, he->tag, he->t, he_p, he->c); } actualRelocations = _free(actualRelocations); @@ -885,24 +883,24 @@ } he->tag = RPMTAG_BASENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); baseNames = he_p.argv; - fileCount = he_c; + fileCount = he->c; he->tag = RPMTAG_DIRINDEXES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirIndexes = he_p.i32p; he->tag = RPMTAG_DIRNAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirNames = he_p.argv; - dirCount = he_c; + dirCount = he->c; he->tag = RPMTAG_FILEFLAGS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fFlags = he_p.ui32p; he->tag = RPMTAG_FILECOLORS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fColors = he_p.ui32p; he->tag = RPMTAG_FILEMODES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fModes = he_p.ui16p; dColors = alloca(dirCount * sizeof(*dColors)); @@ -1104,50 +1102,50 @@ /* Save original filenames in header and replace (relocated) filenames. */ if (nrelocated) { he->tag = RPMTAG_BASENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); he->tag = RPMTAG_ORIGBASENAMES; - xx = hae(h, he->tag, he_t, he_p, he_c); + xx = hae(h, he->tag, he->t, he_p, he->c); he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_DIRNAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); he->tag = RPMTAG_ORIGDIRNAMES; - xx = hae(h, he->tag, he_t, he_p, he_c); + xx = hae(h, he->tag, he->t, he_p, he->c); he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_DIRINDEXES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); he->tag = RPMTAG_ORIGDIRINDEXES; - xx = hae(h, he->tag, he_t, he_p, he_c); + xx = hae(h, he->tag, he->t, he_p, he->c); he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_BASENAMES; - he_t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; he_p.argv = baseNames; - he_c = fileCount; - xx = hme(h, he->tag, he_t, he_p, he_c); + he->c = fileCount; + xx = hme(h, he->tag, he->t, he_p, he->c); fi->bnl = _free(fi->bnl); - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fi->bnl = he_p.argv; - fi->fc = he_c; + fi->fc = he->c; he->tag = RPMTAG_DIRNAMES; - he_t = RPM_STRING_ARRAY_TYPE; + he->t = RPM_STRING_ARRAY_TYPE; he_p.argv = dirNames; - he_c = dirCount; - xx = hme(h, he->tag, he_t, he_p, he_c); + he->c = dirCount; + xx = hme(h, he->tag, he->t, he_p, he->c); fi->dnl = _free(fi->dnl); - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fi->dnl = he_p.argv; - fi->dc = he_c; + fi->dc = he->c; he->tag = RPMTAG_DIRINDEXES; - he_t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; he_p.i32p = dirIndexes; - he_c = fileCount; - xx = hme(h, he->tag, he_t, he_p, he_c); + he->c = fileCount; + xx = hme(h, he->tag, he->t, he_p, he->c); fi->dil = _free(fi->dil); - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fi->dil = he_p.ui32p; } @@ -1266,22 +1264,20 @@ #define _fdupestring(_h, _tag, _data) \ he->tag = _tag; \ - xx = hge((_h), he->tag, he->t, he->p, he->c); \ + xx = hge((_h), he->tag, &he->t, he->p, &he->c); \ _data = he_p.str; #define _fdupedata(_h, _tag, _data) \ he->tag = _tag; \ - xx = hge((_h), he->tag, he->t, he->p, he->c); \ + xx = hge((_h), he->tag, &he->t, he->p, &he->c); \ _data = he_p.ptr; rpmfi rpmfiNew(const rpmts ts, Header h, rpmTag tagN, int flags) { int scareMem = (flags & 0x1); HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmte p; rpmfi fi = NULL; @@ -1321,7 +1317,7 @@ /* 0 means unknown */ he->tag = RPMTAG_ARCHIVESIZE; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fi->archivePos = 0; fi->archiveSize = (xx && he_p.ui32p ? *he_p.ui32p : 0); he_p.ptr = _free(he_p.ptr); @@ -1335,16 +1331,16 @@ _fdupestring(h, RPMTAG_VERIFYSCRIPTPROG, fi->verifyscriptprog); he->tag = RPMTAG_BASENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fi->bnl = he_p.argv; - fi->fc = he_c; + fi->fc = he->c; if (!xx) { fi->fc = 0; fi->dc = 0; goto exit; } _fdupedata(h, RPMTAG_DIRNAMES, fi->dnl); - fi->dc = he_c; + fi->dc = he->c; _fdupedata(h, RPMTAG_DIRINDEXES, fi->dil); _fdupedata(h, RPMTAG_FILEMODES, fi->fmodes); _fdupedata(h, RPMTAG_FILEFLAGS, fi->fflags); @@ -1357,11 +1353,11 @@ for (i = 0; i < fi->fc; i++) fi->color |= fi->fcolors[i]; _fdupedata(h, RPMTAG_CLASSDICT, fi->cdict); - fi->ncdict = he_c; + fi->ncdict = he->c; _fdupedata(h, RPMTAG_FILECLASS, fi->fcdictx); _fdupedata(h, RPMTAG_DEPENDSDICT, fi->ddict); - fi->nddict = he_c; + fi->nddict = he->c; _fdupedata(h, RPMTAG_FILEDEPENDSX, fi->fddictx); _fdupedata(h, RPMTAG_FILEDEPENDSN, fi->fddictn); @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpminstall.c ============================================================================ $ cvs diff -u -r1.175 -r1.176 rpminstall.c --- rpm/lib/rpminstall.c 17 Oct 2007 16:53:22 -0000 1.175 +++ rpm/lib/rpminstall.c 17 Oct 2007 18:32:55 -0000 1.176 @@ -307,10 +307,8 @@ int rpmcliInstall(rpmts ts, QVA_t ia, const char ** argv) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int numFailed = 0; int numRPMS = 0; @@ -423,14 +421,14 @@ /* === Check for relocatable package. */ if (relocations) { he->tag = RPMTAG_PREFIXES; - xx = hge(h, he->tag, he->t, he->p, he->c); - if (xx && he_c == 1) { + xx = hge(h, he->tag, &he->t, he->p, &he->c); + if (xx && he->c == 1) { relocations->oldPath = xstrdup(he_p.argv[0]); he_p.ptr = _free(he_p.ptr); } else { he_p.ptr = _free(he_p.ptr); he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); rpmlog(RPMLOG_ERR, _("package %s is not relocatable\n"), he_p.str); he_p.ptr = _free(he_p.ptr); @@ -447,7 +445,7 @@ int count; he->tag = RPMTAG_NAME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(xx != 0 && he_p.str != NULL); mi = rpmtsInitIterator(ts, RPMTAG_NAME, he_p.str, 0); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmrollback.c ============================================================================ $ cvs diff -u -r1.20 -r1.21 rpmrollback.c --- rpm/lib/rpmrollback.c 17 Oct 2007 16:53:22 -0000 1.20 +++ rpm/lib/rpmrollback.c 17 Oct 2007 18:32:55 -0000 1.21 @@ -91,10 +91,8 @@ IDTX IDTXload(rpmts ts, rpmTag tag, uint_32 rbtid) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; IDTX idtx = NULL; rpmdbMatchIterator mi; @@ -108,7 +106,7 @@ #endif while ((h = rpmdbNextIterator(mi)) != NULL) { he->tag = tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx || he_p.i32p == NULL) continue; tid = (he_p.i32p ? *he_p.i32p : 0); @@ -145,10 +143,8 @@ IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag, uint_32 rbtid) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; IDTX idtx = NULL; Header h; @@ -200,7 +196,7 @@ assert(!strcmp(av[i], origin)); } he->tag = tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx || he_p.i32p == NULL) goto bottom; tid = (he_p.i32p ? *he_p.i32p : 0); @@ -295,10 +291,8 @@ /*@modifies ts, p, ip, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int rc = 0; int xx; @@ -319,9 +313,9 @@ int bingo; he->tag = RPMTAG_BLINKPKGID; - xx = hge(ip->h, he->tag, he->t, he->p, he->c); + xx = hge(ip->h, he->tag, &he->t, he->p, &he->c); flinkPkgid = he_p.argv; - pn = he_c; + pn = he->c; /* XXX Always erase packages at beginning of upgrade chain. */ if (pn == 1 && flinkPkgid[0] != NULL && !strcmp(flinkPkgid[0], RPMTE_CHAIN_END)) { @@ -330,13 +324,13 @@ } he->tag = RPMTAG_BLINKHDRID; - xx = hge(ip->h, he->tag, he->t, he->p, he->c); + xx = hge(ip->h, he->tag, &he->t, he->p, &he->c); flinkHdrid = he_p.argv; - hn = he_c; + hn = he->c; he->tag = RPMTAG_BLINKNEVRA; - xx = hge(ip->h, he->tag, he->t, he->p, he->c); + xx = hge(ip->h, he->tag, &he->t, he->p, &he->c); flinkNEVRA = he_p.argv; - nn = he_c; + nn = he->c; /* * Link data may be missing and can have multiple entries. @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmte.c ============================================================================ $ cvs diff -u -r2.60 -r2.61 rpmte.c --- rpm/lib/rpmte.c 17 Oct 2007 16:53:22 -0000 2.60 +++ rpm/lib/rpmte.c 17 Oct 2007 18:32:55 -0000 2.61 @@ -96,15 +96,13 @@ { int scareMem = 0; HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int xx; he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); p->NEVR = he_p.str; p->name = xstrdup(p->NEVR); @@ -116,18 +114,18 @@ p->db_instance = 0; he->tag = RPMTAG_HDRID; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); p->hdrid = he_p.str; he->tag = RPMTAG_PKGID; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (he_p.ui8p != NULL) { static const char hex[] = "0123456789abcdef"; char * t; int i; - p->pkgid = t = xmalloc((2*he_c) + 1); - for (i = 0 ; i < he_c; i++) { + p->pkgid = t = xmalloc((2*he->c) + 1); + for (i = 0 ; i < he->c; i++) { *t++ = hex[ (unsigned)((he_p.ui8p[i] >> 4) & 0x0f) ]; *t++ = hex[ (unsigned)((he_p.ui8p[i] ) & 0x0f) ]; } @@ -137,11 +135,11 @@ p->pkgid = NULL; he->tag = RPMTAG_ARCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); p->arch = he_p.str; he->tag = RPMTAG_OS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); p->os = he_p.str; p->isSource = @@ -151,7 +149,7 @@ p->NEVRA = xstrdup(p->NEVR); he->tag = RPMTAG_EPOCH; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (he_p.i32p != NULL) { p->epoch = xmalloc(20); sprintf(p->epoch, "%d", *he_p.i32p); @@ -219,10 +217,8 @@ alKey pkgKey) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; rpmte p = xcalloc(1, sizeof(*p)); int xx; @@ -236,7 +232,7 @@ /* XXX 256 is only an estimate of signature header. */ p->pkgFileSize = 96 + 256; he->tag = RPMTAG_SIGSIZE; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (xx && he_p.ui32p) p->pkgFileSize += *he_p.ui32p; he_p.ptr = _free(he_p.ptr); @@ -607,10 +603,8 @@ int rpmteChain(rpmte p, rpmte q, Header oh, const char * msg) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * blinkNEVRA = NULL; const char * blinkPkgid = NULL; @@ -620,7 +614,7 @@ if (msg == NULL) msg = ""; he->tag = RPMTAG_NVRA; - xx = hge(oh, he->tag, he->t, he->p, he->c); + xx = hge(oh, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); blinkNEVRA = he_p.str; @@ -630,14 +624,14 @@ * tags appended. */ he->tag = RPMTAG_PKGID; - xx = hge(oh, he->tag, he->t, he->p, he->c); + xx = hge(oh, he->tag, &he->t, he->p, &he->c); if (xx && he_p.ui8p != NULL) { static const char hex[] = "0123456789abcdef"; char * t; int i; - blinkPkgid = t = xmalloc((2*he_c) + 1); - for (i = 0 ; i < he_c; i++) { + blinkPkgid = t = xmalloc((2*he->c) + 1); + for (i = 0 ; i < he->c; i++) { *t++ = hex[ ((he_p.ui8p[i] >> 4) & 0x0f) ]; *t++ = hex[ ((he_p.ui8p[i] ) & 0x0f) ]; } @@ -647,7 +641,7 @@ blinkPkgid = NULL; he->tag = RPMTAG_HDRID; - xx = hge(oh, he->tag, he->t, he->p, he->c); + xx = hge(oh, he->tag, &he->t, he->p, &he->c); blinkHdrid = he_p.str; /*@-modfilesys@*/ @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmts.c ============================================================================ $ cvs diff -u -r2.111 -r2.112 rpmts.c --- rpm/lib/rpmts.c 17 Oct 2007 16:53:22 -0000 2.111 +++ rpm/lib/rpmts.c 17 Oct 2007 18:32:55 -0000 2.112 @@ -305,10 +305,8 @@ int rpmtsSolve(rpmts ts, rpmds ds, /*@unused@*/ const void * data) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * errstr; const char * str = NULL; @@ -359,7 +357,7 @@ continue; he->tag = RPMTAG_NAME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); hnamelen = ((xx && he_p.str) ? strlen(he_p.str) : 0); he_p.ptr = _free(he_p.ptr); @@ -369,7 +367,7 @@ /* XXX Prefer the newest build if given alternatives. */ he->tag = RPMTAG_BUILDTIME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); htime = (xx && he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/lib/transaction.c ============================================================================ $ cvs diff -u -r1.344 -r1.345 transaction.c --- rpm/lib/transaction.c 17 Oct 2007 16:53:22 -0000 1.344 +++ rpm/lib/transaction.c 17 Oct 2007 18:32:55 -0000 1.345 @@ -101,10 +101,8 @@ /*@modifies ts, p, fi, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * altNVRA = NULL; uint_32 tscolor = rpmtsColor(ts); @@ -125,7 +123,7 @@ &shared->otherPkg, sizeof(shared->otherPkg)); while ((h = rpmdbNextIterator(mi)) != NULL) { he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); altNVRA = he_p.str; otherFi = rpmfiNew(ts, h, RPMTAG_BASENAMES, scareMem); @@ -251,10 +249,8 @@ /*@modifies ts, fi, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; Header h; const unsigned char * otherStates; @@ -271,7 +267,7 @@ } he->tag = RPMTAG_FILESTATES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); otherStates = he_p.ptr; /* XXX there's an obscure segfault here w/o NULL check ... */ @@ -619,10 +615,8 @@ /*@modifies ts @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int_32 reqFlags = (RPMSENSE_LESS | RPMSENSE_EQUAL); const char * reqEVR; @@ -650,7 +644,7 @@ if (rc == 0) { rpmps ps = rpmtsProblems(ts); he->tag = RPMTAG_NVRA; - rc = hge(h, he->tag, he->t, he->p, he->c); + rc = hge(h, he->tag, &he->t, he->p, &he->c); assert(he_p.str != NULL); rpmpsAppend(ps, RPMPROB_OLDPACKAGE, rpmteNEVR(p), rpmteKey(p), @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.c ============================================================================ $ cvs diff -u -r1.64 -r1.65 header-py.c --- rpm/python/header-py.c 17 Oct 2007 16:53:24 -0000 1.64 +++ rpm/python/header-py.c 17 Oct 2007 18:32:57 -0000 1.65 @@ -173,10 +173,8 @@ /*@modifies h @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; HAE_t hae = (HAE_t)headerAddEntry; HRE_t hre = (HRE_t)headerRemoveEntry; @@ -185,10 +183,10 @@ /*@-branchstate@*/ if (!headerIsEntry(h, RPMTAG_OLDFILENAMES)) { he->tag = RPMTAG_FILEPATHS; - xx = hge(h, he->tag, he->t, he->p, he->c); - if (he_p.ptr == NULL || he_c <= 0) + xx = hge(h, he->tag, &he->t, he->p, &he->c); + if (he_p.ptr == NULL || he->c <= 0) return; - xx = hae(h, RPMTAG_OLDFILENAMES, he_t, he_p.ptr, he_c); + xx = hae(h, RPMTAG_OLDFILENAMES, he->t, he_p.ptr, he->c); he_p.ptr = _free(he_p.ptr); } /*@=branchstate@*/ @@ -207,10 +205,8 @@ /*@modifies h @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; HAE_t hae = (HAE_t)headerAddEntry; HRE_t hre = (HRE_t)headerRemoveEntry; @@ -235,9 +231,9 @@ } he->tag = RPMTAG_OLDFILENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); fileNames = he_p.argv; - count = he_c; + count = he->c; if (!xx || fileNames == NULL || count <= 0) return; /* no file list */ @@ -309,10 +305,8 @@ /*@*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int xx; @@ -322,13 +316,13 @@ compressFilelist(h); he->tag = RPMTAG_FILEPATHS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); - if (he_p.ptr == NULL || he_c <= 0) + if (he_p.ptr == NULL || he->c <= 0) return; /* XXX Legacy tag needs to go away. */ - headerAddEntry(h, RPMTAG_OLDFILENAMES, he_t, he_p.ptr, he_c); + headerAddEntry(h, RPMTAG_OLDFILENAMES, he->t, he_p.ptr, he->c); he_p.ptr = _free(he_p.ptr); } @@ -343,10 +337,8 @@ static void providePackageNVR(Header h) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char *N, *V, *R; int_32 E; @@ -368,7 +360,7 @@ pEVR = p = alloca(21 + strlen(V) + 1 + strlen(R) + 1); *p = '\0'; he->tag = RPMTAG_EPOCH; - gotE = hge(h, he->tag, he->t, he->p, he->c); + gotE = hge(h, he->tag, &he->t, he->p, &he->c); E = (he_p.i32p ? *he_p.i32p : 0); he_p.ptr = _free(he_p.ptr); if (gotE) { @@ -382,9 +374,9 @@ * If no provides at all are available, we can just add. */ he->tag = RPMTAG_PROVIDENAME; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); provides = he_p.argv; - providesCount = he_c; + providesCount = he->c; if (!xx) goto exit; @@ -392,7 +384,7 @@ * Otherwise, fill in entries on legacy packages. */ he->tag = RPMTAG_PROVIDEVERSION; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); providesEVR = he_p.argv; if (!xx) { for (i = 0; i < providesCount; i++) { @@ -407,7 +399,7 @@ } he->tag = RPMTAG_PROVIDEFLAGS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); provideFlags = he_p.i32p; /*@-nullderef@*/ /* LCL: providesEVR is not NULL */ @@ -712,10 +704,8 @@ /*@modifies *type, *p, *c @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int xx; @@ -723,14 +713,14 @@ case RPMTAG_OLDFILENAMES: { he->tag = RPMTAG_FILEPATHS; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (p) *p = he_p.ptr; else he_p.ptr = _free(he_p.ptr); - if (c) *c = he_c; - if (type) *type = he_t; - return (he_c > 0 ? 1 : 0); + if (c) *c = he->c; + if (type) *type = he->t; + return (he->c > 0 ? 1 : 0); } /*@notreached@*/ break; case RPMTAG_GROUP: @@ -768,10 +758,8 @@ static PyObject * hdr_subscript(hdrObject * s, PyObject * item) /*@*/ { - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; int_32 tag = -1; void * data; @@ -814,7 +802,7 @@ return NULL; } - if (!rpmHeaderGetEntry(s->h, tag, &he_t, &data, &he_c)) { + if (!rpmHeaderGetEntry(s->h, tag, &he->t, &data, &he->c)) { switch (tag) { case RPMTAG_EPOCH: case RPMTAG_NAME: @@ -874,17 +862,17 @@ break; } - switch (he_t) { + switch (he->t) { case RPM_OPENPGP_TYPE: case RPM_ASN1_TYPE: case RPM_BIN_TYPE: - o = PyString_FromStringAndSize(data, he_c); + o = PyString_FromStringAndSize(data, he->c); break; case RPM_INT64_TYPE: - if (he_c != 1 || forceArray) { + if (he->c != 1 || forceArray) { metao = PyList_New(0); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { o = PyInt_FromLong(((long long *) data)[i]); PyList_Append(metao, o); Py_DECREF(o); @@ -895,9 +883,9 @@ } break; case RPM_INT32_TYPE: - if (he_c != 1 || forceArray) { + if (he->c != 1 || forceArray) { metao = PyList_New(0); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { o = PyInt_FromLong(((int *) data)[i]); PyList_Append(metao, o); Py_DECREF(o); @@ -910,9 +898,9 @@ case RPM_CHAR_TYPE: case RPM_INT8_TYPE: - if (he_c != 1 || forceArray) { + if (he->c != 1 || forceArray) { metao = PyList_New(0); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { o = PyInt_FromLong(((char *) data)[i]); PyList_Append(metao, o); Py_DECREF(o); @@ -924,9 +912,9 @@ break; case RPM_INT16_TYPE: - if (he_c != 1 || forceArray) { + if (he->c != 1 || forceArray) { metao = PyList_New(0); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { o = PyInt_FromLong(((short *) data)[i]); PyList_Append(metao, o); Py_DECREF(o); @@ -941,7 +929,7 @@ stringArray = data; metao = PyList_New(0); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { o = PyString_FromString(stringArray[i]); PyList_Append(metao, o); Py_DECREF(o); @@ -951,11 +939,11 @@ break; case RPM_STRING_TYPE: - if (he_c != 1 || forceArray) { + if (he->c != 1 || forceArray) { stringArray = data; metao = PyList_New(0); - for (i=0; i < he_c; i++) { + for (i=0; i < he->c; i++) { o = PyString_FromString(stringArray[i]); PyList_Append(metao, o); Py_DECREF(o); @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/fprint.c ============================================================================ $ cvs diff -u -r1.18 -r1.19 fprint.c --- rpm/rpmdb/fprint.c 17 Oct 2007 16:53:24 -0000 1.18 +++ rpm/rpmdb/fprint.c 17 Oct 2007 18:32:57 -0000 1.19 @@ -249,10 +249,8 @@ /*@modifies h, cache, *fpList @*/; { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char ** baseNames; const char ** dirNames; @@ -261,17 +259,17 @@ int xx; he->tag = RPMTAG_BASENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c);) + xx = hge(h, he->tag, &he->t, he->p, &he->c); baseNames = he_p.argv; - fileCount = he_c; + fileCount = he->c; if (!xx) return; he->tag = RPMTAG_DIRNAMES; - xx = hge(h, he->tag, he->t, he->p, he->c);) + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirNames = he_p.argv; he->tag = RPMTAG_DIRINDEXES; - xx = hge(h, he->tag, he->t, he->p, he->c);) + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirIndexes = he_p.ui32p; fpLookupList(cache, dirNames, baseNames, dirIndexes, fileCount, fpList); @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/hdrNVR.c ============================================================================ $ cvs diff -u -r1.17 -r1.18 hdrNVR.c --- rpm/rpmdb/hdrNVR.c 17 Oct 2007 16:53:24 -0000 1.17 +++ rpm/rpmdb/hdrNVR.c 17 Oct 2007 18:32:57 -0000 1.18 @@ -36,10 +36,8 @@ /*@modifies rpmGlobalMacroContext @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; struct tagMacro * tagm; char numbuf[32]; @@ -59,10 +57,10 @@ for (tagm = tagMacros; tagm->macroname != NULL; tagm++) { he->tag = tagm->tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx) continue; - switch (he_t) { + switch (he->t) { case RPM_INT32_TYPE: sprintf(numbuf, "%d", *he_p.i32p); addMacro(NULL, tagm->macroname, NULL, numbuf, -1); @@ -92,20 +90,18 @@ /*@modifies rpmGlobalMacroContext @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; struct tagMacro * tagm; int xx; for (tagm = tagMacros; tagm->macroname != NULL; tagm++) { he->tag = tagm->tag; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); if (!xx) continue; - switch (he_t) { + switch (he->t) { case RPM_INT32_TYPE: delMacro(NULL, tagm->macroname); /*@switchbreak@*/ break; @@ -182,19 +178,17 @@ uint_32 hGetColor(Header h) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; uint_32 hcolor = 0; int xx; he->tag = RPMTAG_FILECOLORS; - xx = hge(h, he->tag, he->t, he->p, he->c); - if (xx && he_p.ptr != NULL && he_c > 0) { + xx = hge(h, he->tag, &he->t, he->p, &he->c); + if (xx && he_p.ptr != NULL && he->c > 0) { int i; - for (i = 0; i < he_c; i++) + for (i = 0; i < he->c; i++) hcolor |= he_p.ui32p[i]; } he_p.ptr = _free(he_p.ptr); @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/hdrfmt.c ============================================================================ $ cvs diff -u -r1.14 -r1.15 hdrfmt.c --- rpm/rpmdb/hdrfmt.c 17 Oct 2007 16:53:24 -0000 1.14 +++ rpm/rpmdb/hdrfmt.c 17 Oct 2007 18:32:57 -0000 1.15 @@ -843,13 +843,14 @@ char ** array; he->tag = RPMTAG_INSTALLPREFIX; - if (headerGetEntry(h, RPMTAG_INSTALLPREFIX, he->t, he->p, he->c)) { + if (headerGetEntry(h, RPMTAG_INSTALLPREFIX, &he->t, he->p, &he->c)) { he->freeData = 0; return 0; } he->tag = RPMTAG_INSTPREFIXES; - if (headerGetEntry(h, he->tag, &ipt, &array, he->c)) { - if (he->t) *he->t = RPM_STRING_TYPE; + if (headerGetEntry(h, he->tag, &ipt, &array, &he->c)) { + he->t = RPM_STRING_TYPE; + he->c = 1; if (he->p) (*he->p).str = xstrdup(array[0]); he->freeData = 1; array = headerFreeData(array, ipt); @@ -889,10 +890,8 @@ xx = headerGetEntry(h, RPMTAG_TRIGGERVERSION, NULL, &versions, NULL); xx = headerGetEntry(h, RPMTAG_TRIGGERSCRIPTS, NULL, &s, &numScripts); - if (he->t) - *he->t = RPM_STRING_ARRAY_TYPE; - if (he->c) - *he->c = numScripts; + he->t = RPM_STRING_ARRAY_TYPE; + he->c = numScripts; if (he->p == NULL) goto exit; @@ -953,10 +952,8 @@ xx = headerGetEntry(h, RPMTAG_TRIGGERFLAGS, NULL, &flags, NULL); xx = headerGetEntry(h, RPMTAG_TRIGGERSCRIPTS, NULL, &s, &numScripts); - if (he->t) - *he->t = RPM_STRING_ARRAY_TYPE; - if (he->c) - *he->c = numScripts; + he->t = RPM_STRING_ARRAY_TYPE; + he->c = numScripts; if (he->p == NULL) goto exit; @@ -1013,12 +1010,10 @@ char * dstring = rpmExpand(_macro_i18ndomains, NULL); int rc = 1; /* assume failure */ - if (he->t) - *he->t = RPM_STRING_TYPE; + he->t = RPM_STRING_TYPE; if (he->p) (*he->p).ptr = NULL; - if (he->c) - *he->c = 0; + he->c = 0; he->freeData = 0; if (dstring && *dstring) { @@ -1073,8 +1068,7 @@ he->freeData = 1; } else he->freeData = 0; - if (he->c) - *he->c = 1; + he->c = 1; } } } @@ -1085,7 +1079,7 @@ if (!rc) return rc; - rc = headerGetEntry(h, he->tag, he->t, he->p, he->c); + rc = headerGetEntry(h, he->tag, &he->t, he->p, &he->c); if (rc) { rc = 0; if (he->p) { @@ -1098,14 +1092,12 @@ /*@=nullstate@*/ } - if (he->t) - *he->t = RPM_STRING_TYPE; + he->t = RPM_STRING_TYPE; + he->c = 0; if (he->p) { (*he->p).ptr = NULL; he->freeData = 0; } - if (he->c) - *he->c = 0; return 1; } @@ -1124,8 +1116,7 @@ if (!rc || d == NULL || c == 0) { if (he->p) (*he->p).ptr = NULL; - if (he->c) - *he->c = 0; + he->c = 0; he->freeData = 0; return 1; } @@ -1156,12 +1147,10 @@ } else he->freeData = 0; - if (he->t) - *he->t = t; + he->t = t; if (he->p) (*he->p).ptr = (void **)d; - if (he->c) - *he->c = c; + he->c = c; return 0; } @@ -1235,16 +1224,14 @@ fileSystem, internalState @*/ { he->tag = RPMTAG_DBINSTANCE; - if (he->t) - *he->t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; if (he->p) { (*he->p).i32p = xcalloc(1, sizeof(*(*he->p).i32p)); (*he->p).i32p[0] = headerGetInstance(h); he->freeData = 1; } else he->freeData = 0; - if (he->c) - *he->c = 1; + he->c = 1; return 0; } @@ -1294,9 +1281,9 @@ /*@modifies h, he, rpmGlobalMacroContext, fileSystem, internalState @*/ { - if (he->t) *he->t = RPM_STRING_TYPE; + he->t = RPM_STRING_TYPE; if (he->p) (*he->p).str = hGetNVRA(h); - if (he->c) *he->c = 1; + he->c = 1; he->freeData = 1; return 0; } @@ -1388,8 +1375,8 @@ static int _fnTag(Header h, HE_t he) /*@modifies he @*/ { - if (he->t) *he->t = RPM_STRING_ARRAY_TYPE; - rpmfiBuildFNames(h, he->tag, (he->p ? &(*he->p).argv : NULL), he->c); + he->t = RPM_STRING_ARRAY_TYPE; + rpmfiBuildFNames(h, he->tag, (he->p ? &(*he->p).argv : NULL), &he->c); he->freeData = 1; return 0; } @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/header.c ============================================================================ $ cvs diff -u -r1.85 -r1.86 header.c --- rpm/rpmdb/header.c 17 Oct 2007 00:32:26 -0000 1.85 +++ rpm/rpmdb/header.c 17 Oct 2007 18:32:57 -0000 1.86 @@ -1819,9 +1819,7 @@ const char * name = tagName(tag); headerSprintfExtension exts = (headerSprintfExtension)headerCompoundFormats; headerSprintfExtension ext; - rpmTagType he_t = 0; hRET_t he_p = { .ptr = NULL }; - int_32 he_c = 0; HE_t he = alloca(sizeof(*he)); size_t nb = 0; int extNum; @@ -1833,11 +1831,9 @@ memset(&he_p, 0, sizeof(he_p)); memset(he, 0, sizeof(*he)); he->tag = tag; - he->t = &he_t; /*@-immediatetrans@*/ he->p = (p ? &he_p : NULL); /*@=immediatetrans@*/ - he->c = &he_c; /* Search extensions for specific tag override. */ for (ext = exts, extNum = 0; ext != NULL && ext->type != HEADER_EXT_LAST; @@ -1852,12 +1848,12 @@ if (ext && ext->name != NULL && ext->type == HEADER_EXT_TAG) rc = ext->u.tagFunction(h, he); else - rc = intGetEntry(h, he->tag, he->t, he->p, he->c, 0); + rc = intGetEntry(h, he->tag, &he->t, he->p, &he->c, 0); if (!rc) goto exit; - switch (*he->t) { + switch (he->t) { case RPM_NULL_TYPE: default: assert(0); /* XXX stop unimplemented oversights. */ @@ -1869,16 +1865,16 @@ /*@fallthrough@*/ case RPM_CHAR_TYPE: case RPM_INT8_TYPE: - nb = he_c * sizeof(*he_p.i8p); + nb = he->c * sizeof(*he_p.i8p); break; case RPM_INT16_TYPE: - nb = he_c * sizeof(*he_p.i16p); + nb = he->c * sizeof(*he_p.i16p); break; case RPM_INT32_TYPE: - nb = he_c * sizeof(*he_p.i32p); + nb = he->c * sizeof(*he_p.i32p); break; case RPM_INT64_TYPE: - nb = he_c * sizeof(*he_p.i64p); + nb = he->c * sizeof(*he_p.i64p); break; case RPM_I18NSTRING_TYPE: case RPM_STRING_TYPE: @@ -1899,11 +1895,11 @@ exit: if (type) - *type = *he->t; + *type = he->t; if (p) p->ptr = he_p.ptr; if (c) - *c = *he->c; + *c = he->c; if (sw != NULL) (void) rpmswExit(sw, 0); @@ -3167,16 +3163,21 @@ if (!ec->avail) { HE_s he_s; HE_t he = &he_s; + int xx; + he->tag = 0; /*@-immediatetrans@*/ - he->t = &ec->type; + he->t = 0; /*@-type@*/ he->p = &ec->data; /*@=type@*/ - he->c = &ec->count; + he->c = 0; /*@=immediatetrans@*/ he->freeData = 0; - if (fn(hsa->h, he)) + xx = fn(hsa->h, he); + ec->type = he->t; + ec->count = he->c; + if (xx) return 1; ec->freeit = he->freeData; ec->avail = 1; @@ -3200,10 +3201,8 @@ static char * formatValue(headerSprintfArgs hsa, sprintfTag tag, int element) /*@modifies hsa @*/ { - rpmTagType he_t = 0; hRET_t he_p = { .ptr = NULL }; - int_32 he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; char * val = NULL; size_t need = 0; @@ -3216,25 +3215,25 @@ memset(buf, 0, sizeof(buf)); if (tag->ext) { - if (getExtension(hsa, tag->ext, he->t, he->p, he->c, hsa->ec + tag->extNum)) + if (getExtension(hsa, tag->ext, &he->t, he->p, &he->c, hsa->ec + tag->extNum)) { - he_c = 1; - he_t = RPM_STRING_TYPE; + he->c = 1; + he->t = RPM_STRING_TYPE; he_p.str = "(none)"; } } else { - if (!headerGetEntry(hsa->h, tag->tag, he->t, he->p, he->c)) { - he_c = 1; - he_t = RPM_STRING_TYPE; + if (!headerGetEntry(hsa->h, tag->tag, &he->t, he->p, &he->c)) { + he->c = 1; + he->t = RPM_STRING_TYPE; he_p.str = "(none)"; } /* XXX this test is unnecessary, array sizes are checked */ - switch (he_t) { + switch (he->t) { default: - if (element >= he_c) { + if (element >= he->c) { /*@-modobserver -observertrans@*/ - he_p.ptr = headerFreeData(he_p.ptr, he_t); + he_p.ptr = headerFreeData(he_p.ptr, he->t); /*@=modobserver =observertrans@*/ hsa->errmsg = _("(index out of range)"); @@ -3253,26 +3252,26 @@ if (tag->arrayCount) { /*@-modobserver -observertrans@*/ if (he->freeData) { - he_p.ptr = headerFreeData(he_p.ptr, he_t); + he_p.ptr = headerFreeData(he_p.ptr, he->t); he->freeData = 0; } /*@=modobserver =observertrans@*/ - countBuf = he_c; + countBuf = he->c; he_p.i32p = &countBuf; - he_c = 1; - he_t = RPM_INT32_TYPE; + he->c = 1; + he->t = RPM_INT32_TYPE; } (void) stpcpy( stpcpy(buf, "%"), tag->format); if (he_p.ptr) - switch (he_t) { + switch (he->t) { case RPM_STRING_ARRAY_TYPE: strarray.argv = he_p.argv; if (tag->fmt) - val = tag->fmt(RPM_STRING_TYPE, (hPTR_t) strarray.argv[element], buf, tag->pad, (he_c > 1 ? element : -1)); /* NOCAST */ + val = tag->fmt(RPM_STRING_TYPE, (hPTR_t) strarray.argv[element], buf, tag->pad, (he->c > 1 ? element : -1)); /* NOCAST */ if (val) { need = strlen(val); @@ -3306,7 +3305,7 @@ case RPM_INT64_TYPE: llVal = he_p.i64p[element]; if (tag->fmt) - val = tag->fmt(RPM_INT64_TYPE, (hPTR_t) &llVal, buf, tag->pad, (he_c > 1 ? element : -1)); /* NOCAST */ + val = tag->fmt(RPM_INT64_TYPE, (hPTR_t) &llVal, buf, tag->pad, (he->c > 1 ? element : -1)); /* NOCAST */ if (val) { need = strlen(val); } else { @@ -3323,7 +3322,7 @@ case RPM_INT8_TYPE: case RPM_INT16_TYPE: case RPM_INT32_TYPE: - switch (he_t) { + switch (he->t) { case RPM_CHAR_TYPE: case RPM_INT8_TYPE: intVal = he_p.i8p[element]; @@ -3338,7 +3337,7 @@ } if (tag->fmt) - val = tag->fmt(RPM_INT32_TYPE, (hPTR_t) &intVal, buf, tag->pad, (he_c > 1 ? element : -1)); /* NOCAST */ + val = tag->fmt(RPM_INT32_TYPE, (hPTR_t) &intVal, buf, tag->pad, (he->c > 1 ? element : -1)); /* NOCAST */ if (val) { need = strlen(val); @@ -3357,21 +3356,21 @@ case RPM_BIN_TYPE: /* XXX HACK ALERT: element field abused as no. bytes of binary data. */ if (tag->fmt) - val = tag->fmt(RPM_BIN_TYPE, he_p.ptr, buf, tag->pad, he_c); + val = tag->fmt(RPM_BIN_TYPE, he_p.ptr, buf, tag->pad, he->c); if (val) { need = strlen(val); } else { #ifdef NOTYET - val = memcpy(xmalloc(he_c), he_p.ptr, he_c); + val = memcpy(xmalloc(he->c), he_p.ptr, he->c); #else /* XXX format string not used */ static char hex[] = "0123456789abcdef"; const char * s = he_p.str; - need = 2*he_c + tag->pad; + need = 2 * he->c + tag->pad; val = t = xmalloc(need+1); - while (he_c-- > 0) { + while (he->c-- > 0) { unsigned int i; i = *s++; *t++ = hex[ (i >> 4) & 0xf ]; @@ -3390,7 +3389,7 @@ /*@-modobserver -observertrans@*/ if (he->freeData) { - he_p.ptr = headerFreeData(he_p.ptr, he_t); + he_p.ptr = headerFreeData(he_p.ptr, he->t); he->freeData = 0; } /*@=modobserver =observertrans@*/ @@ -3417,10 +3416,8 @@ int element) /*@modifies hsa @*/ { - rpmTagType he_t = 0; hRET_t he_p = { .ptr = NULL }; - int_32 he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; char numbuf[64]; /* XXX big enuf for "Tag_0x01234567" */ char * t, * te; @@ -3482,19 +3479,19 @@ spft->u.tag.justOne) continue; if (spft->u.tag.ext) { - if (getExtension(hsa, spft->u.tag.ext, he->t, NULL, he->c, + if (getExtension(hsa, spft->u.tag.ext, &he->t, NULL, &he->c, hsa->ec + spft->u.tag.extNum)) continue; } else { - if (!headerGetEntry(hsa->h, spft->u.tag.tag, he->t, NULL, he->c)) + if (!headerGetEntry(hsa->h, spft->u.tag.tag, &he->t, NULL, &he->c)) continue; } - if (he_t == RPM_BIN_TYPE || he_t == RPM_ASN1_TYPE || he_t == RPM_OPENPGP_TYPE) - he_c = 1; /* XXX count abused as no. of bytes. */ + if (he->t == RPM_BIN_TYPE || he->t == RPM_ASN1_TYPE || he->t == RPM_OPENPGP_TYPE) + he->c = 1; /* XXX count abused as no. of bytes. */ - if (numElements > 1 && he_c != numElements) - switch (he_t) { + if (numElements > 1 && he->c != numElements) + switch (he->t) { default: hsa->errmsg = _("array iterator used with different sized arrays"); @@ -3506,8 +3503,8 @@ case RPM_STRING_TYPE: /*@switchbreak@*/ break; } - if (he_c > numElements) - numElements = he_c; + if (he->c > numElements) + numElements = he->c; } if (numElements == -1) { @@ -3674,10 +3671,8 @@ /*@requires maxSet(errmsg) >= 0 @*/ { headerSprintfArgs hsa = memset(alloca(sizeof(*hsa)), 0, sizeof(*hsa)); - rpmTagType he_t = 0; hRET_t he_p = { .ptr = NULL }; - int_32 he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; sprintfToken nextfmt; sprintfTag tag; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/header.h ============================================================================ $ cvs diff -u -r1.39 -r1.40 header.h --- rpm/rpmdb/header.h 17 Oct 2007 16:53:24 -0000 1.39 +++ rpm/rpmdb/header.h 17 Oct 2007 18:32:57 -0000 1.40 @@ -131,6 +131,27 @@ typedef enum rpmTag_e rpmTag; /** \ingroup header + * The basic types of data in tags from headers. + */ +enum rpmTagType_e { + RPM_NULL_TYPE = 0, + RPM_CHAR_TYPE = 1, + RPM_INT8_TYPE = 2, + RPM_INT16_TYPE = 3, + RPM_INT32_TYPE = 4, + RPM_INT64_TYPE = 5, + RPM_STRING_TYPE = 6, + RPM_BIN_TYPE = 7, + RPM_STRING_ARRAY_TYPE = 8, + RPM_I18NSTRING_TYPE = 9, + RPM_ASN1_TYPE = 10, + RPM_OPENPGP_TYPE = 11, + RPM_MASK_TYPE = 0x0000ffff +}; +#define RPM_MIN_TYPE 0 +#define RPM_MAX_TYPE 11 + +/** \ingroup header */ typedef enum rpmTagType_e rpmTagType; @@ -156,11 +177,11 @@ struct _HE_s { int_32 tag; /*@null@*/ - hTYP_t t; + rpmTagType t; /*@null@*/ hRET_t * p; /*@null@*/ - hCNT_t c; + rpmTagCount c; int freeData; }; typedef struct _HE_s HE_s; @@ -288,27 +309,6 @@ /*@=redecl@*/ /** \ingroup header - * The basic types of data in tags from headers. - */ -enum rpmTagType_e { - RPM_NULL_TYPE = 0, - RPM_CHAR_TYPE = 1, - RPM_INT8_TYPE = 2, - RPM_INT16_TYPE = 3, - RPM_INT32_TYPE = 4, - RPM_INT64_TYPE = 5, - RPM_STRING_TYPE = 6, - RPM_BIN_TYPE = 7, - RPM_STRING_ARRAY_TYPE = 8, - RPM_I18NSTRING_TYPE = 9, - RPM_ASN1_TYPE = 10, - RPM_OPENPGP_TYPE = 11, - RPM_MASK_TYPE = 0x0000ffff -}; -#define RPM_MIN_TYPE 0 -#define RPM_MAX_TYPE 11 - -/** \ingroup header * New rpm data types under consideration/development. * These data types may (or may not) be added to rpm at some point. In order * to avoid incompatibility with legacy versions of rpm, these data (sub-)types @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/pkgio.c ============================================================================ $ cvs diff -u -r1.18 -r1.19 pkgio.c --- rpm/rpmdb/pkgio.c 17 Oct 2007 16:53:24 -0000 1.18 +++ rpm/rpmdb/pkgio.c 17 Oct 2007 18:32:57 -0000 1.19 @@ -74,10 +74,8 @@ rpmRC rpmtsFindPubkey(rpmts ts, void * _dig) { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; pgpDig dig = (_dig ? _dig : rpmtsDig(ts)); const void * sig = pgpGetSig(dig); @@ -156,12 +154,12 @@ he->tag = RPMTAG_PUBKEYS; mi = rpmdbInitIterator(rpmtsGetRdb(ts), RPMTAG_PUBKEYS, sigp->signid, sizeof(sigp->signid)); while ((h = rpmdbNextIterator(mi)) != NULL) { - if (!hge(h, he->tag, he->t, he->p, he->c)) + if (!hge(h, he->tag, &he->t, he->p, &he->c)) continue; hx = rpmdbGetIteratorOffset(mi); ix = rpmdbGetIteratorFileNum(mi); /*@-moduncon -nullstate @*/ - if (ix >= he_c + if (ix >= he->c || b64decode(he_p.argv[ix], (void **) &ts->pkpkt, &ts->pkpktlen)) ix = -1; /*@=moduncon =nullstate @*/ @@ -541,10 +539,8 @@ /*@modifies *ptr, *msg, fileSystem @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; Header * sighp = ptr; char buf[BUFSIZ]; @@ -712,7 +708,7 @@ /* Print package component sizes. */ he->tag = RPMSIGTAG_SIZE; - xx = hge(sigh, he->tag, he->t, he->p, he->c); + xx = hge(sigh, he->tag, &he->t, he->p, &he->c); if (xx) { size_t datasize = *he_p.ui32p; rc = printSize(fd, sigSize, pad, datasize); @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.c ============================================================================ $ cvs diff -u -r1.189 -r1.190 rpmdb.c --- rpm/rpmdb/rpmdb.c 17 Oct 2007 16:53:24 -0000 1.189 +++ rpm/rpmdb/rpmdb.c 17 Oct 2007 18:32:57 -0000 1.190 @@ -860,10 +860,8 @@ fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * fn = NULL; int xx; @@ -884,7 +882,7 @@ xx = Fclose(fd); fd = NULL; he->tag = RPMTAG_INSTALLTID; - if (hge(h, he->tag, he->t, he->p, he->c)) { + if (hge(h, he->tag, &he->t, he->p, &he->c)) { struct utimbuf stamp; stamp.actime = *he_p.i32p; stamp.modtime = *he_p.i32p; @@ -1410,10 +1408,8 @@ /*@requires maxSet(matches) >= 0 @*/ { HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; const char * dirName; const char * baseName; @@ -1514,13 +1510,13 @@ } he->tag = RPMTAG_BASENAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); baseNames = he_p.argv; he->tag = RPMTAG_DIRNAMES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirNames = he_p.argv; he->tag = RPMTAG_DIRINDEXES; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); dirIndexes = he_p.ui32p; do { @@ -2154,10 +2150,8 @@ /*@modifies mi->mi_re @*/ { HGE_t hge = (HGE_t) headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; char numbuf[32]; miRE mire; @@ -2181,19 +2175,19 @@ he->tag = mire->tag; - if (!hge(mi->mi_h, he->tag, he->t, he->p, he->c)) { + if (!hge(mi->mi_h, he->tag, &he->t, he->p, &he->c)) { if (he->tag != RPMTAG_EPOCH) { ntags++; continue; } - he_t = RPM_INT32_TYPE; - he_c = 1; - he_p.i32p = xcalloc(he_c, sizeof(*he_p.i32p)); + he->t = RPM_INT32_TYPE; + he->c = 1; + he_p.i32p = xcalloc(he->c, sizeof(*he_p.i32p)); } anymatch = 0; /* no matches yet */ while (1) { - switch (he_t) { + switch (he->t) { case RPM_CHAR_TYPE: case RPM_INT8_TYPE: sprintf(numbuf, "%d", (int) *he_p.i8p); @@ -2220,7 +2214,7 @@ anymatch++; /*@switchbreak@*/ break; case RPM_STRING_ARRAY_TYPE: - for (j = 0; j < he_c; j++) { + for (j = 0; j < he->c; j++) { rc = mireRegexec(mire, he_p.argv[j]); if ((!rc && !mire->notmatch) || (rc && mire->notmatch)) { anymatch++; @@ -2229,7 +2223,7 @@ } /*@switchbreak@*/ break; case RPM_BIN_TYPE: - { const char * s = bin2hex(he_p.ptr, he_c); + { const char * s = bin2hex(he_p.ptr, he->c); rc = mireRegexec(mire, s); if ((!rc && !mire->notmatch) || (rc && mire->notmatch)) anymatch++; @@ -2785,10 +2779,8 @@ DBT * data = alloca(sizeof(*data)); union _dbswap mi_offset; HGE_t hge = (HGE_t)headerGetExtension; - rpmTagType he_t = 0; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c = 0; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; Header h; sigset_t signalMask; @@ -2825,7 +2817,7 @@ #endif he->tag = RPMTAG_NVRA; - xx = hge(h, he->tag, he->t, he->p, he->c); + xx = hge(h, he->tag, &he->t, he->p, &he->c); rpmlog(RPMLOG_DEBUG, " --- h#%8u %s\n", hdrNum, he_p.str); he_p.ptr = _free(he_p.ptr); @@ -2843,9 +2835,9 @@ dbi = NULL; he->tag = db->db_tagn[dbix]; - he_t = 0; + he->t = 0; he_p.ptr = NULL; - he_c = 0; + he->c = 0; switch (he->tag) { /* Filter out temporary databases */ @@ -2885,7 +2877,7 @@ continue; /*@notreached@*/ /*@switchbreak@*/ break; default: - if (!hge(h, he->tag, he->t, he->p, he->c)) + if (!hge(h, he->tag, &he->t, he->p, &he->c)) continue; /*@switchbreak@*/ break; @@ -2896,19 +2888,19 @@ int printed; /* XXX Coerce strings into header argv return. */ - if (he_t == RPM_STRING_TYPE) { + if (he->t == RPM_STRING_TYPE) { const char * s = he_p.str; char * t; he_p.argv = xcalloc(1, sizeof(*he_p.argv)+strlen(s)+1); he_p.argv[0] = t = (char *) &he_p.argv[1]; (void) strcpy(t, s); s = _free(s); - he_c = 1; + he->c = 1; } printed = 0; xx = dbiCopen(dbi, dbi->dbi_txnid, &dbcursor, DB_WRITECURSOR); - for (i = 0; i < he_c; i++) { + for (i = 0; i < he->c; i++) { dbiIndexSet set; int stringvalued; @@ -2925,7 +2917,7 @@ /* Identify value pointer and length. */ stringvalued = 0; - switch (he_t) { + switch (he->t) { case RPM_NULL_TYPE: /* XXX never occurs. */ assert(0); /*@switchbreak@*/ break; @@ -2949,13 +2941,13 @@ case RPM_OPENPGP_TYPE: case RPM_ASN1_TYPE: case RPM_BIN_TYPE: - key->size = he_c; + key->size = he->c; /*@i@*/ key->data = he_p.ptr; - he_c = 1; /* XXX break out of loop. */ + he->c = 1; /* XXX break out of loop. */ /*@switchbreak@*/ break; case RPM_I18NSTRING_TYPE: /* XXX never occurs. */ case RPM_STRING_TYPE: - he_c = 1; /* XXX break out of loop. */ + he->c = 1; /* XXX break out of loop. */ /*@fallthrough@*/ case RPM_STRING_ARRAY_TYPE: /* Convert from hex to binary. */ @@ -2992,14 +2984,14 @@ } if (!printed) { - if (he_c == 1 && stringvalued) { + if (he->c == 1 && stringvalued) { rpmlog(RPMLOG_DEBUG, D_("removing \"%s\" from %s index.\n"), (char *)key->data, tagName(dbi->dbi_rpmtag)); } else { rpmlog(RPMLOG_DEBUG, D_("removing %d entries from %s index.\n"), - he_c, tagName(dbi->dbi_rpmtag)); + he->c, tagName(dbi->dbi_rpmtag)); } printed++; } @@ -3074,9 +3066,9 @@ } he->tag = 0; - he_t = 0; + he->t = 0; he_p.ptr = _free(he_p.ptr); - he_c = 0; + he->c = 0; bin = _free(bin); } @@ -3100,10 +3092,8 @@ DBT * data = alloca(sizeof(*data)); HGE_t hge = (HGE_t) headerGetExtension; HAE_t hae = (HAE_t) headerAddEntry; - rpmTagType he_t; rpmTagData he_p = { .ptr = NULL }; - rpmTagCount he_c; - HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 }; + HE_s he_s = { .tag = 0, .t = 0, .p = &he_p, .c = 0, .freeData = 0 }; HE_t he = &he_s; sigset_t signalMask; #if defined(SUPPORT_RPMV3_BASENAMES_HACKS) @@ -3136,21 +3126,21 @@ if (iid != 0 && iid != -1) { int_32 tid = iid; he->tag = RPMTAG_INSTALLTID; - he_t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; he_p.i32p = &tid; - he_c = 1; + he->c = 1; if (!headerIsEntry(h, he->tag)) - xx = hae(h, he->tag, he_t, he_p, he_c); + xx = hae(h, he->tag, he->t, he_p, he->c); } /* Add the package color if not present. */ if (!headerIsEntry(h, RPMTAG_PACKAGECOLOR)) { uint32_t hcolor = hGetColor(h); he->tag = RPMTAG_PACKAGECOLOR; - he_t = RPM_INT32_TYPE; + he->t = RPM_INT32_TYPE; he_p.ui32p = &hcolor; - he_c = 1; - xx = hae(h, he->