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 = &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 @@
   /[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

Reply via email to