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:   13-Oct-2007 23:28:53
  Branch: HEAD                             Handle: 2007101322285200

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpmfc.c rpminstall.c rpmte.c

  Log:
    - rpminstall.c: use headerGetExtension everywhere.
    - rpmfc.c: use headerGetExtension everywhere.
    - rpmte.c: use headerGetExtension everywhere.

  Summary:
    Revision    Changes     Path
    1.1689      +3  -0      rpm/CHANGES
    1.22        +18 -8      rpm/lib/rpmfc.c
    1.172       +23 -18     rpm/lib/rpminstall.c
    2.55        +32 -26     rpm/lib/rpmte.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1688 -r1.1689 CHANGES
  --- rpm/CHANGES       13 Oct 2007 20:42:06 -0000      1.1688
  +++ rpm/CHANGES       13 Oct 2007 21:28:52 -0000      1.1689
  @@ -1,4 +1,7 @@
   4.5 -> 5.0:
  +    - jbj: rpminstall.c: use headerGetExtension everywhere.
  +    - jbj: rpmfc.c: use headerGetExtension everywhere.
  +    - jbj: rpmte.c: use headerGetExtension everywhere.
       - jbj: depends.c: use headerGetExtension everywhere.
       - jbj: rpmts.c: use headerGetExtension everywhere.
       - jbj: nuke fi->keep_header.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 rpmfc.c
  --- rpm/lib/rpmfc.c   11 Oct 2007 19:44:22 -0000      1.21
  +++ rpm/lib/rpmfc.c   13 Oct 2007 21:28:52 -0000      1.22
  @@ -1321,35 +1321,45 @@
        /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, 
internalState @*/
           /[EMAIL PROTECTED] rpmGlobalMacroContext, fileSystem, internalState 
@*/
   {
  -    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
  +    HGE_t hge = (HGE_t)headerGetExtension;
  +    int_32 he_t = 0;
  +    hRET_t he_p = { .ptr = NULL };
  +    int_32 he_c = 0;
  +    HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 
0 };
  +    HE_t he = &he_s;
       StringBuf sb_stdin = newStringBuf();
       StringBuf sb_stdout = NULL;
       DepMsg_t dm;
       int failnonzero = 0;
       int rc = 0;
  +    int xx;
   
       for (dm = ScriptMsgs; dm->msg != NULL; dm++) {
        int tag, tagflags;
        char * s;
  -     int xx;
   
        tag = dm->ftag;
        tagflags = RPMSENSE_FIND_REQUIRES | dm->mask;
   
        /* Retrieve scriptlet interpreter. */
  -     s = NULL;
  -     if (!hge(pkg->header, dm->ntag, NULL, &s, NULL) || s == NULL)
  +     he->tag = dm->ntag;
  +     xx = hge(pkg->header, he->tag, he->t, he->p, he->c);
  +     if (!xx || he_p.str == NULL)
            continue;
  -     if (strcmp(s, "/bin/sh") && strcmp(s, "/bin/bash"))
  +     xx = strcmp(he_p.str, "/bin/sh") && strcmp(he_p.str, "/bin/bash");
  +     he_p.ptr = _free(he_p.ptr);
  +     if (xx)
            continue;
   
        /* Retrieve scriptlet body. */
  -     s = NULL;
  -     if (!hge(pkg->header, dm->vtag, NULL, &s, NULL) || s == NULL)
  +     he->tag = dm->vtag;
  +     xx = hge(pkg->header, he->tag, he->t, he->p, he->c);
  +     if (!xx || he_p.str == NULL)
            continue;
        truncStringBuf(sb_stdin);
  -     appendLineStringBuf(sb_stdin, s);
  +     appendLineStringBuf(sb_stdin, he_p.str);
        stripTrailingBlanksStringBuf(sb_stdin);
  +     he_p.ptr = _free(he_p.ptr);
   
        xx = rpmfcExec(dm->argv, sb_stdin, &sb_stdout, failnonzero);
        if (xx == -1)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpminstall.c
  ============================================================================
  $ cvs diff -u -r1.171 -r1.172 rpminstall.c
  --- rpm/lib/rpminstall.c      12 Oct 2007 18:55:57 -0000      1.171
  +++ rpm/lib/rpminstall.c      13 Oct 2007 21:28:52 -0000      1.172
  @@ -306,6 +306,12 @@
   /** @todo Generalize --freshen policies. */
   int rpmcliInstall(rpmts ts, QVA_t ia, const char ** argv)
   {
  +    HGE_t hge = (HGE_t)headerGetExtension;
  +    int_32 he_t = 0;
  +    hRET_t he_p = { .ptr = NULL };
  +    int_32 he_c = 0;
  +    HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 
0 };
  +    HE_t he = &he_s;
       int numFailed = 0;
       int numRPMS = 0;
       rpmRelocation relocations = NULL;
  @@ -393,7 +399,7 @@
   } else
   #endif
   
  -{    /* start-of-transaction-build */
  + {   /* start-of-transaction-build */
       int tag = (ia->qva_source == RPMQV_FTSWALK)
        ? RPMDBI_FTSWALK : RPMDBI_ARGLIST;
       rpmgi gi = rpmgiNew(ts, tag, NULL, 0);
  @@ -416,21 +422,18 @@
   
        /* === Check for relocatable package. */
        if (relocations) {
  -         const char ** paths;
  -         int pft;
  -         int c;
  -
  -         if (headerGetEntry(h, RPMTAG_PREFIXES, &pft, &paths, &c)
  -          && c == 1)
  -         {
  -             relocations->oldPath = xstrdup(paths[0]);
  -             paths = headerFreeData(paths, pft);
  +         he->tag = RPMTAG_PREFIXES;
  +         xx = hge(h, he->tag, he->t, he->p, he->c);
  +         if (xx && he_c == 1) {
  +             relocations->oldPath = xstrdup(he_p.argv[0]);
  +             he_p.ptr = _free(he_p.ptr);
            } else {
  -             hRET_t NVRA = { .ptr = NULL };
  -             xx = headerGetExtension(h, RPMTAG_NVRA, NULL, &NVRA, NULL);
  +             he_p.ptr = _free(he_p.ptr);
  +             he->tag = RPMTAG_NVRA;
  +             xx = hge(h, he->tag, he->t, he->p, he->c);
                rpmlog(RPMLOG_ERR,
  -                            _("package %s is not relocatable\n"), NVRA.str);
  -             NVRA.ptr = _free(NVRA.ptr);
  +                            _("package %s is not relocatable\n"), he_p.str);
  +             he_p.ptr = _free(he_p.ptr);
                numFailed++;
                goto exit;
                /[EMAIL PROTECTED]@*/
  @@ -440,12 +443,14 @@
        /* === On --freshen, verify package is installed and newer. */
        if (ia->installInterfaceFlags & INSTALL_FRESHEN) {
            rpmdbMatchIterator mi;
  -         const char * name = NULL;
            Header oldH;
            int count;
   
  -         xx = headerGetEntry(h, RPMTAG_NAME, NULL, &name, NULL);
  -         mi = rpmtsInitIterator(ts, RPMTAG_NAME, name, 0);
  +         he->tag = RPMTAG_NAME;
  +         xx = hge(h, he->tag, he->t, he->p, he->c);
  +assert(xx != 0 && he_p.str != NULL);
  +         mi = rpmtsInitIterator(ts, RPMTAG_NAME, he_p.str, 0);
  +         he_p.ptr = _free(he_p.ptr);
            count = rpmdbGetIteratorCount(mi);
            while ((oldH = rpmdbNextIterator(mi)) != NULL) {
                if (rpmVersionCompare(oldH, h) < 0)
  @@ -474,7 +479,7 @@
   
       gi = rpmgiFree(gi);
   
  -}    /* end-of-transaction-build */
  + }   /* end-of-transaction-build */
   
       if (numFailed) goto exit;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmte.c
  ============================================================================
  $ cvs diff -u -r2.54 -r2.55 rpmte.c
  --- rpm/lib/rpmte.c   12 Oct 2007 20:23:03 -0000      2.54
  +++ rpm/lib/rpmte.c   13 Oct 2007 21:28:52 -0000      2.55
  @@ -218,6 +218,12 @@
                int dboffset,
                alKey pkgKey)
   {
  +    HGE_t hge = (HGE_t)headerGetExtension;
  +    int_32 he_t = 0;
  +    hRET_t he_p = { .ptr = NULL };
  +    int_32 he_c = 0;
  +    HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 
0 };
  +    HE_t he = &he_s;
       rpmte p = xcalloc(1, sizeof(*p));
       int_32 * ep;
       int xx;
  @@ -228,11 +234,12 @@
       switch (type) {
       case TR_ADDED:
        p->u.addedKey = pkgKey;
  -     ep = NULL;
  -     xx = headerGetEntry(h, RPMTAG_SIGSIZE, NULL, &ep, NULL);
        /* XXX 256 is only an estimate of signature header. */
  -     if (ep != NULL)
  -         p->pkgFileSize += 96 + 256 + *ep;
  +     p->pkgFileSize = 96 + 256;
  +     he->tag = RPMTAG_SIGSIZE;
  +     xx = hge(h, he->tag, he->t, he->p, he->c);
  +     if (xx && he_p.ui32p)
  +         p->pkgFileSize += *he_p.ui32p;
        break;
       case TR_REMOVED:
        p->u.addedKey = pkgKey;
  @@ -599,48 +606,49 @@
   
   int rpmteChain(rpmte p, rpmte q, Header oh, const char * msg)
   {
  -    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
  +    HGE_t hge = (HGE_t)headerGetExtension;
  +    int_32 he_t = 0;
  +    hRET_t he_p = { .ptr = NULL };
  +    int_32 he_c = 0;
  +    HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 
0 };
  +    HE_t he = &he_s;
       const char * blinkNEVRA = NULL;
       const char * blinkPkgid = NULL;
       const char * blinkHdrid = NULL;
  -    const unsigned char * pkgid;
  -    int_32 pkgidcnt;
  -    hRET_t NVRA = { .ptr = NULL };
       int xx;
   
       if (msg == NULL)
        msg = "";
  -    xx = headerGetExtension(oh, RPMTAG_NVRA, NULL, &NVRA, NULL);
  -assert(NVRA.str != NULL);
  -    blinkNEVRA = NVRA.str;
  +    he->tag = RPMTAG_NVRA;
  +    xx = hge(oh, he->tag, he->t, he->p, he->c);
  +assert(he_p.str != NULL);
  +    blinkNEVRA = he_p.str;
   
       /*
        * Convert binary pkgid to a string.
        * XXX Yum's borken conception of a "header" doesn't have signature
        * tags appended.
        */
  -    pkgid = NULL;
  -    pkgidcnt = 0;
  -    xx = hge(oh, RPMTAG_PKGID, NULL, &pkgid, &pkgidcnt);
  -    if (pkgid != NULL) {
  +    he->tag = RPMTAG_PKGID;
  +    xx = hge(oh, he->tag, he->t, he->p, he->c);
  +    if (xx && he_p.ui8p != NULL) {
        static const char hex[] = "0123456789abcdef";
        char * t;
        int i;
   
  -     blinkPkgid = t = xmalloc((2*pkgidcnt) + 1);
  -     for (i = 0 ; i < pkgidcnt; i++) {
  -         *t++ = hex[ ((pkgid[i] >> 4) & 0x0f) ];
  -         *t++ = hex[ ((pkgid[i]     ) & 0x0f) ];
  +     blinkPkgid = t = xmalloc((2*he_c) + 1);
  +     for (i = 0 ; i < he_c; i++) {
  +         *t++ = hex[ ((he_p.ui8p[i] >> 4) & 0x0f) ];
  +         *t++ = hex[ ((he_p.ui8p[i]     ) & 0x0f) ];
        }
        *t = '\0';
  -#if NOTYET   /* XXX MinMemory. */
  -     pkgid = headerFreeData(pkgid, RPM_BIN_TYPE);
  -#endif
  +     he_p.ptr = _free(he_p.ptr);
       } else
        blinkPkgid = NULL;
   
  -    blinkHdrid = NULL;
  -    xx = hge(oh, RPMTAG_HDRID, NULL, &blinkHdrid, NULL);
  +    he->tag = RPMTAG_HDRID;
  +    xx = hge(oh, he->tag, he->t, he->p, he->c);
  +    blinkHdrid = he_p.str;
   
   /[EMAIL PROTECTED]@*/
   if (__mydebug)
  @@ -669,9 +677,7 @@
   
       blinkNEVRA = _free(blinkNEVRA);
       blinkPkgid = _free(blinkPkgid);
  -#ifdef       NOTYET  /* XXX MinMemory. */
       blinkHdrid = _free(blinkHdrid);
  -#endif
   
       return 0;
   }
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to