RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ buildio.h pack.c parseChangelog.c p...

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 04 Nov 2007 - 20:37:04 CET
Message-Id: <20071104193704.2DB6034847A@rpm5.org>
  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 = &bull;
  +	    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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.