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: 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 /*@abstract@*/ struct cpioSourceArchive_s {
- unsigned int cpioArchiveSize;
+ uint32_t cpioArchiveSize;
FD_t cpioFdIn;
/*@refcounted@*/ /*@relnull@*/
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)
/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
/*@modifies 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 @@
/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
/*@modifies 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 @@
/*@modifies 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 @@
/*@-boundswrite@*/
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)
/*@modifies 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 @@
/*@-boundswrite@*/
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(/*@unused@*/ Spec spec, Header h, /*@unused@*/ 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)
/*@globals rpmGlobalMacroContext, h_errno @*/
/*@modifies rpmGlobalMacroContext @*/;
@@ -424,7 +424,7 @@
*/
int addReqProv(/*@unused@*/Spec spec, Header h, rpmTag tagN,
const char * N, const char * EVR, rpmsenseFlags Flags,
- int index)
+ uint32_t index)
/*@modifies 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);
/*@only@*/
StringBuf prep; /*!< %prep scriptlet. */
@@ .
Received on Sun Nov 4 20:37:04 2007