RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 04-Nov-2007 20:37:04 Branch: HEAD Handle: 2007110419370101 Modified files: rpm CHANGES rpm/build buildio.h pack.c parseChangelog.c parseReqs.c parseScript.c parseSpec.c reqprov.c rpmbuild.h rpmspec.h Log: - jbj: start bulldozing headerAddEntry throughout rpmbuild. Summary: Revision Changes Path 1.1771 +1 -0 rpm/CHANGES 2.33 +1 -1 rpm/build/buildio.h 2.244 +199 -68 rpm/build/pack.c 2.34 +26 -6 rpm/build/parseChangelog.c 2.49 +1 -1 rpm/build/parseReqs.c 2.50 +27 -13 rpm/build/parseScript.c 2.112 +18 -5 rpm/build/parseSpec.c 1.78 +34 -8 rpm/build/reqprov.c 2.74 +2 -2 rpm/build/rpmbuild.h 2.61 +1 -1 rpm/build/rpmspec.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.1770 -r1.1771 CHANGES --- rpm/CHANGES 4 Nov 2007 17:59:55 -0000 1.1770 +++ rpm/CHANGES 4 Nov 2007 19:37:01 -0000 1.1771 @@ -1,4 +1,5 @@ 4.5 -> 5.0: + - jbj: start bulldozing headerAddEntry throughout rpmbuild. - jbj: use HAE_t for signature tags, change int_32 to uint32_t where needed. - rpm.org: rpmhash.c: use size_t for keySize. - rpm.org: remove unnecessary rpmShowProgress() prototype. @@ . patch -p0 <<'@@ .' Index: rpm/build/buildio.h ============================================================================ $ cvs diff -u -r2.32 -r2.33 buildio.h --- rpm/build/buildio.h 8 Sep 2007 18:22:54 -0000 2.32 +++ rpm/build/buildio.h 4 Nov 2007 19:37:02 -0000 2.33 @@ -13,7 +13,7 @@ /** */ typedef /[EMAIL PROTECTED]@*/ struct cpioSourceArchive_s { - unsigned int cpioArchiveSize; + uint32_t cpioArchiveSize; FD_t cpioFdIn; /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ rpmfi cpioList; @@ . patch -p0 <<'@@ .' Index: rpm/build/pack.c ============================================================================ $ cvs diff -u -r2.243 -r2.244 pack.c --- rpm/build/pack.c 4 Nov 2007 01:29:23 -0000 2.243 +++ rpm/build/pack.c 4 Nov 2007 19:37:02 -0000 2.244 @@ -169,11 +169,12 @@ /** */ -static int addFileToTag(Spec spec, const char * file, Header h, int tag) +static int addFileToTag(Spec spec, const char * file, Header h, rpmTag tag) /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /[EMAIL PROTECTED] h, rpmGlobalMacroContext, fileSystem, internalState @*/ { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); StringBuf sb = newStringBuf(); int xx; @@ -189,7 +190,11 @@ if ((sb = addFileToTagAux(spec, file, sb)) == NULL) return 1; - (void) headerAddEntry(h, tag, RPM_STRING_TYPE, getStringBuf(sb), 1); + he->tag = tag; + he->t = RPM_STRING_TYPE; + he->p.str = getStringBuf(sb); + he->c = 1; + xx = hae(h, he, 0); sb = freeStringBuf(sb); return 0; @@ -201,14 +206,24 @@ /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /[EMAIL PROTECTED] h, rpmGlobalMacroContext, fileSystem, internalState @*/ { + HAE_t hae = headerAddExtension; + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); StringBuf sb = newStringBuf(); - char *s; + const char *s; + int xx; if ((sb = addFileToTagAux(spec, file, sb)) == NULL) return 1; s = getStringBuf(sb); - (void) headerAddOrAppendEntry(h, tag, RPM_STRING_ARRAY_TYPE, &s, 1); + + he->tag = tag; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &s; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; sb = freeStringBuf(sb); return 0; @@ -219,7 +234,10 @@ /[EMAIL PROTECTED] pkg->header, rpmGlobalMacroContext, fileSystem, internalState @*/ { + HAE_t hae = headerAddExtension; + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); struct TriggerFileEntry *p; + int xx; if (pkg->preInFile) { if (addFileToTag(spec, pkg->preInFile, pkg->header, RPMTAG_PREIN)) { @@ -273,11 +291,21 @@ } for (p = pkg->triggerFiles; p != NULL; p = p->next) { - (void) headerAddOrAppendEntry(pkg->header, RPMTAG_TRIGGERSCRIPTPROG, - RPM_STRING_ARRAY_TYPE, &(p->prog), 1); + he->tag = RPMTAG_TRIGGERSCRIPTPROG; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = (const char **)&p->prog; /* XXX NOCAST */ + he->c = 1; + he->append = 1; + xx = hae(pkg->header, he, 0); + he->append = 0; if (p->script) { - (void) headerAddOrAppendEntry(pkg->header, RPMTAG_TRIGGERSCRIPTS, - RPM_STRING_ARRAY_TYPE, &(p->script), 1); + he->tag = RPMTAG_TRIGGERSCRIPTS; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = (const char **)&p->script; /* XXX NOCAST */ + he->c = 1; + he->append = 1; + xx = hae(pkg->header, he, 0); + he->append = 0; } else if (p->fileName) { if (addFileToArrayTag(spec, p->fileName, pkg->header, RPMTAG_TRIGGERSCRIPTS)) { @@ -287,11 +315,14 @@ return RPMRC_FAIL; } } else { - /* This is dumb. When the header supports NULL string */ - /* this will go away. */ - char *bull = ""; - (void) headerAddOrAppendEntry(pkg->header, RPMTAG_TRIGGERSCRIPTS, - RPM_STRING_ARRAY_TYPE, &bull, 1); + static const char *bull = ""; + he->tag = RPMTAG_TRIGGERSCRIPTS; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = • + he->c = 1; + he->append = 1; + xx = hae(pkg->header, he, 0); + he->append = 0; } } @@ -436,6 +467,7 @@ void providePackageNVR(Header h) { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); const char *N, *V, *R; uint32_t E; @@ -485,12 +517,24 @@ providesEVR = he->p.argv; if (!xx) { for (i = 0; i < providesCount; i++) { - char * vdummy = ""; - uint32_t fdummy = RPMSENSE_ANY; - xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION, RPM_STRING_ARRAY_TYPE, - &vdummy, 1); - xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS, RPM_INT32_TYPE, - &fdummy, 1); + static const char * vdummy = ""; + static rpmsenseFlags fdummy = RPMSENSE_ANY; + + he->tag = RPMTAG_PROVIDEVERSION; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &vdummy; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = RPMTAG_PROVIDEFLAGS; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &fdummy; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; } goto exit; } @@ -518,12 +562,29 @@ provideFlags = _free(provideFlags); if (bingo) { - xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME, RPM_STRING_ARRAY_TYPE, - &N, 1); - xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS, RPM_INT32_TYPE, - &pFlags, 1); - xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION, RPM_STRING_ARRAY_TYPE, - &pEVR, 1); + he->tag = RPMTAG_PROVIDENAME; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &N; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = RPMTAG_PROVIDEVERSION; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &pEVR; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = RPMTAG_PROVIDEFLAGS; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &pFlags; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; } } @@ -532,6 +593,7 @@ CSA_t csa, char *passPhrase, const char **cookie) { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); FD_t fd = NULL; FD_t ifd = NULL; @@ -548,6 +610,7 @@ int addsig = 0; int isSource; int rc = 0; + int xx; /* Transfer header reference form *hdrp to h. */ h = headerLink(*hdrp); @@ -560,8 +623,11 @@ if (Fileno(csa->cpioFdIn) < 0) { csa->cpioArchiveSize = 0; /* Add a bogus archive size to the Header */ - (void) headerAddEntry(h, RPMTAG_ARCHIVESIZE, RPM_INT32_TYPE, - &csa->cpioArchiveSize, 1); + he->tag = RPMTAG_ARCHIVESIZE; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &csa->cpioArchiveSize; + he->c = 1; + xx = hae(h, he, 0); } #endif @@ -596,32 +662,53 @@ (void) rpmlibNeedsFeature(h, "PayloadIsUstar", "4.4.4-1"); } - (void) headerAddEntry(h, RPMTAG_PAYLOADFORMAT, RPM_STRING_TYPE, - payload_format, 1); + he->tag = RPMTAG_PAYLOADFORMAT; + he->t = RPM_STRING_TYPE; + he->p.str = payload_format; + he->c = 1; + xx = hae(h, he, 0); } /* XXX addition to header is too late to be displayed/sorted. */ - if (s[1] == 'g' && s[2] == 'z') - (void) headerAddEntry(h, RPMTAG_PAYLOADCOMPRESSOR, RPM_STRING_TYPE, - "gzip", 1); - else if (s[1] == 'b' && s[2] == 'z') - (void) headerAddEntry(h, RPMTAG_PAYLOADCOMPRESSOR, RPM_STRING_TYPE, - "bzip2", 1); - else if (s[1] == 'l' && s[2] == 'z') { - (void) headerAddEntry(h, RPMTAG_PAYLOADCOMPRESSOR, RPM_STRING_TYPE, - "lzma", 1); + if (s[1] == 'g' && s[2] == 'z') { + he->tag = RPMTAG_PAYLOADCOMPRESSOR; + he->t = RPM_STRING_TYPE; + he->p.str = "gzip"; + he->c = 1; + xx = hae(h, he, 0); + } else if (s[1] == 'b' && s[2] == 'z') { + he->tag = RPMTAG_PAYLOADCOMPRESSOR; + he->t = RPM_STRING_TYPE; + he->p.str = "bzip2"; + he->c = 1; + xx = hae(h, he, 0); + } else if (s[1] == 'l' && s[2] == 'z') { + he->tag = RPMTAG_PAYLOADCOMPRESSOR; + he->t = RPM_STRING_TYPE; + he->p.str = "lzma"; + he->c = 1; + xx = hae(h, he, 0); (void) rpmlibNeedsFeature(h, "PayloadIsLzma", "4.4.6-1"); } strcpy(buf, rpmio_flags); buf[s - rpmio_flags] = '\0'; - (void) headerAddEntry(h, RPMTAG_PAYLOADFLAGS, RPM_STRING_TYPE, buf+1, 1); + + he->tag = RPMTAG_PAYLOADFLAGS; + he->t = RPM_STRING_TYPE; + he->p.str = buf+1; + he->c = 1; + xx = hae(h, he, 0); } /* Create and add the cookie */ if (cookie) { sprintf(buf, "%s %d", buildHost(), (int) (*getBuildTime())); *cookie = xstrdup(buf); - (void) headerAddEntry(h, RPMTAG_COOKIE, RPM_STRING_TYPE, *cookie, 1); + he->tag = RPMTAG_COOKIE; + he->t = RPM_STRING_TYPE; + he->p.str = *cookie; + he->c = 1; + xx = hae(h, he, 0); } /* Reallocate the header into one contiguous region. */ @@ -693,13 +780,20 @@ } if (SHA1) { - (void) headerAddEntry(sigh, RPMSIGTAG_SHA1, RPM_STRING_TYPE, SHA1, 1); + he->tag = RPMSIGTAG_SHA1; + he->t = RPM_STRING_TYPE; + he->p.str = SHA1; + he->c = 1; + xx = hae(sigh, he, 0); SHA1 = _free(SHA1); } - { int_32 payloadSize = csa->cpioArchiveSize; - (void) headerAddEntry(sigh, RPMSIGTAG_PAYLOADSIZE, RPM_INT32_TYPE, - &payloadSize, 1); + { uint32_t payloadSize = csa->cpioArchiveSize; + he->tag = RPMSIGTAG_PAYLOADSIZE; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &payloadSize; + he->c = 1; + xx = hae(sigh, he, 0); } /* Reallocate the signature into one contiguous region. */ @@ -856,6 +950,7 @@ int packageBinaries(Spec spec) { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); struct cpioSourceArchive_s csabuf; CSA_t csa = &csabuf; @@ -871,32 +966,54 @@ continue; if (spec->cookie) { - (void) headerAddEntry(pkg->header, RPMTAG_COOKIE, - RPM_STRING_TYPE, spec->cookie, 1); + he->tag = RPMTAG_COOKIE; + he->t = RPM_STRING_TYPE; + he->p.str = spec->cookie; + he->c = 1; + xx = hae(pkg->header, he, 0); } /* Copy changelog from src rpm */ headerCopyTags(spec->packages->header, pkg->header, copyTags); - (void) headerAddEntry(pkg->header, RPMTAG_RPMVERSION, - RPM_STRING_TYPE, VERSION, 1); - (void) headerAddEntry(pkg->header, RPMTAG_BUILDHOST, - RPM_STRING_TYPE, buildHost(), 1); - (void) headerAddEntry(pkg->header, RPMTAG_BUILDTIME, - RPM_INT32_TYPE, getBuildTime(), 1); - - { const char * optflags = rpmExpand("%{optflags}", NULL); - (void) headerAddEntry(pkg->header, RPMTAG_OPTFLAGS, RPM_STRING_TYPE, - optflags, 1); - optflags = _free(optflags); - } + he->tag = RPMTAG_RPMVERSION; + he->t = RPM_STRING_TYPE; + he->p.str = VERSION; + he->c = 1; + xx = hae(pkg->header, he, 0); + + he->tag = RPMTAG_BUILDHOST; + he->t = RPM_STRING_TYPE; + he->p.str = buildHost(); + he->c = 1; + xx = hae(pkg->header, he, 0); + + he->tag = RPMTAG_BUILDTIME; + he->t = RPM_STRING_TYPE; + he->p.ui32p = getBuildTime(); + he->c = 1; + xx = hae(pkg->header, he, 0); + + he->tag = RPMTAG_OPTFLAGS; + he->t = RPM_STRING_TYPE; + he->p.str = rpmExpand("%{optflags}", NULL); + he->c = 1; + xx = hae(pkg->header, he, 0); + he->p.ptr = _free(he->p.ptr); (void) genSourceRpmName(spec); - (void) headerAddEntry(pkg->header, RPMTAG_SOURCERPM, RPM_STRING_TYPE, - spec->sourceRpmName, 1); + he->tag = RPMTAG_SOURCERPM; + he->t = RPM_STRING_TYPE; + he->p.str = spec->sourceRpmName; + he->c = 1; + xx = hae(pkg->header, he, 0); + if (spec->sourcePkgId != NULL) { - (void) headerAddEntry(pkg->header, RPMTAG_SOURCEPKGID, RPM_BIN_TYPE, - spec->sourcePkgId, 16); + he->tag = RPMTAG_SOURCEPKGID; + he->t = RPM_BIN_TYPE; + he->p.ptr = spec->sourcePkgId; + he->c = 16; + xx = hae(pkg->header, he, 0); } { const char *binFormat = rpmGetPath("%{_rpmfilename}", NULL); @@ -962,17 +1079,31 @@ /[EMAIL PROTECTED]@*/ int packageSources(Spec spec) { + HAE_t hae = headerAddExtension; + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); struct cpioSourceArchive_s csabuf; CSA_t csa = &csabuf; int rc; + int xx; /* Add some cruft */ - (void) headerAddEntry(spec->sourceHeader, RPMTAG_RPMVERSION, - RPM_STRING_TYPE, VERSION, 1); - (void) headerAddEntry(spec->sourceHeader, RPMTAG_BUILDHOST, - RPM_STRING_TYPE, buildHost(), 1); - (void) headerAddEntry(spec->sourceHeader, RPMTAG_BUILDTIME, - RPM_INT32_TYPE, getBuildTime(), 1); + he->tag = RPMTAG_RPMVERSION; + he->t = RPM_STRING_TYPE; + he->p.str = VERSION; + he->c = 1; + xx = hae(spec->sourceHeader, he, 0); + + he->tag = RPMTAG_BUILDHOST; + he->t = RPM_STRING_TYPE; + he->p.str = buildHost(); + he->c = 1; + xx = hae(spec->sourceHeader, he, 0); + + he->tag = RPMTAG_BUILDTIME; + he->t = RPM_STRING_TYPE; + he->p.ui32p = getBuildTime(); + he->c = 1; + xx = hae(spec->sourceHeader, he, 0); (void) genSourceRpmName(spec); @@ . patch -p0 <<'@@ .' Index: rpm/build/parseChangelog.c ============================================================================ $ cvs diff -u -r2.33 -r2.34 parseChangelog.c --- rpm/build/parseChangelog.c 4 Nov 2007 01:29:23 -0000 2.33 +++ rpm/build/parseChangelog.c 4 Nov 2007 19:37:02 -0000 2.34 @@ -14,14 +14,34 @@ void addChangelogEntry(Header h, time_t time, const char *name, const char *text) { + HAE_t hae = headerAddExtension; + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); uint32_t mytime = time; /* XXX convert to int_32 for header */ + int xx; - (void) headerAddOrAppendEntry(h, RPMTAG_CHANGELOGTIME, - RPM_INT32_TYPE, &mytime, 1); - (void) headerAddOrAppendEntry(h, RPMTAG_CHANGELOGNAME, - RPM_STRING_ARRAY_TYPE, &name, 1); - (void) headerAddOrAppendEntry(h, RPMTAG_CHANGELOGTEXT, - RPM_STRING_ARRAY_TYPE, &text, 1); + he->tag = RPMTAG_CHANGELOGTIME; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &mytime; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = RPMTAG_CHANGELOGNAME; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &name; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = RPMTAG_CHANGELOGTEXT; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &text; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; } /** @@ . patch -p0 <<'@@ .' Index: rpm/build/parseReqs.c ============================================================================ $ cvs diff -u -r2.48 -r2.49 parseReqs.c --- rpm/build/parseReqs.c 11 Oct 2007 13:04:26 -0000 2.48 +++ rpm/build/parseReqs.c 4 Nov 2007 19:37:02 -0000 2.49 @@ -14,7 +14,7 @@ #define SKIPNONWHITE(_x){while(*(_x) &&!(xisspace(*_x) || *(_x) == ',')) (_x)++;} int parseRCPOT(Spec spec, Package pkg, const char *field, rpmTag tagN, - int index, rpmsenseFlags tagflags) + uint32_t index, rpmsenseFlags tagflags) { const char *r, *re, *v, *ve; char * N, * EVR; @@ . patch -p0 <<'@@ .' Index: rpm/build/parseScript.c ============================================================================ $ cvs diff -u -r2.49 -r2.50 parseScript.c --- rpm/build/parseScript.c 11 Oct 2007 13:04:26 -0000 2.49 +++ rpm/build/parseScript.c 4 Nov 2007 19:37:02 -0000 2.50 @@ -17,14 +17,14 @@ /** */ -static int addTriggerIndex(Package pkg, const char *file, +static uint32_t addTriggerIndex(Package pkg, const char *file, const char *script, const char *prog) /[EMAIL PROTECTED] pkg->triggerFiles @*/ { struct TriggerFileEntry *tfe; struct TriggerFileEntry *list = pkg->triggerFiles; struct TriggerFileEntry *last = NULL; - int index = 0; + uint32_t index = 0; while (list) { last = list; @@ -73,6 +73,10 @@ /[EMAIL PROTECTED]@*/ int parseScript(Spec spec, int parsePart) { + HAE_t hae = headerAddExtension; + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); + int xx; + /* There are a few options to scripts: */ /* <pkg> */ /* -n <pkg> */ @@ -86,13 +90,12 @@ char *partname = NULL; rpmTag reqtag = 0; rpmTag tag = 0; - int tagflags = 0; + rpmsenseFlags tagflags = 0; rpmTag progtag = 0; int flag = PART_SUBNAME; Package pkg; StringBuf sb = NULL; int nextPart; - int index; char reqargs[BUFSIZ]; int rc, argc; @@ -320,24 +323,35 @@ /* get the index right. */ if (tag == RPMTAG_TRIGGERSCRIPTS) { /* Add file/index/prog triple to the trigger file list */ - index = addTriggerIndex(pkg, file, p, progArgv[0]); + uint32_t index = addTriggerIndex(pkg, file, p, progArgv[0]); /* Generate the trigger tags */ if ((rc = parseRCPOT(spec, pkg, reqargs, reqtag, index, tagflags))) goto exit; } else { - if (progArgc == 1) - (void) headerAddEntry(pkg->header, progtag, RPM_STRING_TYPE, - *progArgv, progArgc); - else { + if (progArgc == 1) { + he->tag = progtag; + he->t = RPM_STRING_TYPE; + he->p.str = *progArgv; + he->c = progArgc; + xx = hae(pkg->header, he, 0); + } else { (void) rpmlibNeedsFeature(pkg->header, "ScriptletInterpreterArgs", "4.0.3-1"); - (void) headerAddEntry(pkg->header, progtag, RPM_STRING_ARRAY_TYPE, - progArgv, progArgc); + he->tag = progtag; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = progArgv; + he->c = progArgc; + xx = hae(pkg->header, he, 0); } - if (*p != '\0') - (void) headerAddEntry(pkg->header, tag, RPM_STRING_TYPE, p, 1); + if (*p != '\0') { + he->tag = tag; + he->t = RPM_STRING_TYPE; + he->p.str = p; + he->c = 1; + xx = hae(pkg->header, he, 0); + } if (file) { switch (parsePart) { @@ . patch -p0 <<'@@ .' Index: rpm/build/parseSpec.c ============================================================================ $ cvs diff -u -r2.111 -r2.112 parseSpec.c --- rpm/build/parseSpec.c 19 Oct 2007 00:36:43 -0000 2.111 +++ rpm/build/parseSpec.c 4 Nov 2007 19:37:02 -0000 2.112 @@ -435,6 +435,7 @@ const char *cookie, int anyarch, int force, int verify) { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); rpmParseState parsePart = PART_PREAMBLE; int initialPackage = 1; @@ -612,11 +613,23 @@ return RPMRC_FAIL; } - (void) headerAddEntry(pkg->header, RPMTAG_OS, RPM_STRING_TYPE, os, 1); - (void) headerAddEntry(pkg->header, RPMTAG_ARCH, - RPM_STRING_TYPE, arch, 1); - (void) headerAddEntry(pkg->header, RPMTAG_PLATFORM, - RPM_STRING_TYPE, platform, 1); + he->tag = RPMTAG_OS; + he->t = RPM_STRING_TYPE; + he->p.str = os; + he->c = 1; + xx = hae(pkg->header, he, 0); + + he->tag = RPMTAG_ARCH; + he->t = RPM_STRING_TYPE; + he->p.str = arch; + he->c = 1; + xx = hae(pkg->header, he, 0); + + he->tag = RPMTAG_PLATFORM; + he->t = RPM_STRING_TYPE; + he->p.str = platform; + he->c = 1; + xx = hae(pkg->header, he, 0); pkg->ds = rpmdsThis(pkg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL); @@ . patch -p0 <<'@@ .' Index: rpm/build/reqprov.c ============================================================================ $ cvs diff -u -r1.77 -r1.78 reqprov.c --- rpm/build/reqprov.c 3 Nov 2007 23:43:59 -0000 1.77 +++ rpm/build/reqprov.c 4 Nov 2007 19:37:02 -0000 1.78 @@ -12,9 +12,10 @@ int addReqProv(/[EMAIL PROTECTED]@*/ Spec spec, Header h, /[EMAIL PROTECTED]@*/ rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags Flags, - int index) + uint32_t index) { HGE_t hge = (HGE_t)headerGetExtension; + HAE_t hae = headerAddExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); const char ** names; rpmTag nametag = 0; @@ -109,15 +110,40 @@ } /* Add this dependency. */ - xx = headerAddOrAppendEntry(h, nametag, RPM_STRING_ARRAY_TYPE, &N, 1); + he->tag = nametag; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &N; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + if (flagtag) { - xx = headerAddOrAppendEntry(h, versiontag, - RPM_STRING_ARRAY_TYPE, &EVR, 1); - xx = headerAddOrAppendEntry(h, flagtag, - RPM_INT32_TYPE, &Flags, 1); + he->tag = versiontag; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = &EVR; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + + he->tag = flagtag; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &Flags; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; + } + if (indextag) { + he->tag = indextag; + he->t = RPM_INT32_TYPE; + he->p.ui32p = &index; + he->c = 1; + he->append = 1; + xx = hae(h, he, 0); + he->append = 0; } - if (indextag) - xx = headerAddOrAppendEntry(h, indextag, RPM_INT32_TYPE, &index, 1); return 0; } @@ . patch -p0 <<'@@ .' Index: rpm/build/rpmbuild.h ============================================================================ $ cvs diff -u -r2.73 -r2.74 rpmbuild.h --- rpm/build/rpmbuild.h 4 Nov 2007 01:29:23 -0000 2.73 +++ rpm/build/rpmbuild.h 4 Nov 2007 19:37:02 -0000 2.74 @@ -315,7 +315,7 @@ * @return 0 on success, RPMERR_BADSPEC on failure */ int parseRCPOT(Spec spec, Package pkg, const char * field, rpmTag tagN, - int index, rpmsenseFlags tagflags) + uint32_t index, rpmsenseFlags tagflags) /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno @*/ /[EMAIL PROTECTED] rpmGlobalMacroContext @*/; @@ -424,7 +424,7 @@ */ int addReqProv(/[EMAIL PROTECTED]@*/Spec spec, Header h, rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags Flags, - int index) + uint32_t index) /[EMAIL PROTECTED] h @*/; /** @@ . patch -p0 <<'@@ .' Index: rpm/build/rpmspec.h ============================================================================ $ cvs diff -u -r2.60 -r2.61 rpmspec.h --- rpm/build/rpmspec.h 17 Aug 2007 00:13:56 -0000 2.60 +++ rpm/build/rpmspec.h 4 Nov 2007 19:37:02 -0000 2.61 @@ -165,7 +165,7 @@ MacroContext macros; int (*_parseRCPOT) (Spec spec, Package pkg, const char *field, rpmTag tagN, - int index, rpmsenseFlags tagflags); + uint32_t index, rpmsenseFlags tagflags); /[EMAIL PROTECTED]@*/ StringBuf prep; /*!< %prep scriptlet. */ @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org