RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ pack.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 14 Oct 2007 - 20:08:19 CEST
Message-Id: <20071014180819.8326F348466@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:   14-Oct-2007 20:08:19
  Branch: HEAD                             Handle: 2007101419081900

  Modified files:
    rpm                     CHANGES
    rpm/build               pack.c

  Log:
    - pack.c: use headerGetExtension everywhere.

  Summary:
    Revision    Changes     Path
    1.1701      +1  -0      rpm/CHANGES
    2.234       +50 -25     rpm/build/pack.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1700 -r1.1701 CHANGES
  --- rpm/CHANGES	14 Oct 2007 17:47:22 -0000	1.1700
  +++ rpm/CHANGES	14 Oct 2007 18:08:19 -0000	1.1701
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: pack.c: use headerGetExtension everywhere.
       - jbj: files.c: fix: append to pkg->fileList.
       - jbj: files.c: use headerGetExtension everywhere.
       - jbj: transaction.c: eliminate hge warning.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.233 -r2.234 pack.c
  --- rpm/build/pack.c	14 Oct 2007 00:36:21 -0000	2.233
  +++ rpm/build/pack.c	14 Oct 2007 18:08:19 -0000	2.234
  @@ -173,14 +173,22 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies h, 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 = newStringBuf();
  -    char *s;
  +    int xx;
   
  -    if (hge(h, tag, NULL, &s, NULL)) {
  -	appendLineStringBuf(sb, s);
  +    he->tag = tag;
  +    xx = hge(h, he->tag, he->t, he->p, he->c);
  +    if (xx) {
  +	appendLineStringBuf(sb, he_p.str);
   	(void) headerRemoveEntry(h, tag);
       }
  +    he_p.ptr = _free(he_p.ptr);
   
       if ((sb = addFileToTagAux(spec, file, sb)) == NULL)
   	return 1;
  @@ -431,45 +439,59 @@
   
   void providePackageNVR(Header h)
   {
  -    HGE_t hge = (HGE_t)headerGetEntryMinMemory;
  -    HFD_t hfd = headerFreeData;
  -    const char *name, *version, *release;
  -    int_32 * epoch;
  +    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 *N, *V, *R;
  +    int_32 E;
  +    int gotE;
       const char *pEVR;
       char *p;
       int_32 pFlags = RPMSENSE_EQUAL;
       const char ** provides = NULL;
       const char ** providesEVR = NULL;
  -    rpmTagType pnt, pvt;
       int_32 * provideFlags = NULL;
       int providesCount;
       int i, xx;
       int bingo = 1;
   
  -    /* Generate provides for this package name-version-release. */
  -    xx = headerNEVRA(h, &name, NULL, &version, &release, NULL);
  -    if (!(name && version && release))
  +    /* Generate provides for this package N-V-R. */
  +    xx = headerNEVRA(h, &N, NULL, &V, &R, NULL);
  +    if (!(N && V && R))
   	return;
  -    pEVR = p = alloca(21 + strlen(version) + 1 + strlen(release) + 1);
  +    pEVR = p = alloca(21 + strlen(V) + 1 + strlen(R) + 1);
       *p = '\0';
  -    if (hge(h, RPMTAG_EPOCH, NULL, &epoch, NULL)) {
  -	sprintf(p, "%d:", *epoch);
  -	while (*p != '\0')
  -	    p++;
  +    he->tag = RPMTAG_EPOCH;
  +    gotE = hge(h, he->tag, he->t, he->p, he->c);
  +    E = (he_p.i32p ? *he_p.i32p : 0);
  +    he_p.ptr = _free(he_p.ptr);
  +    if (gotE) {
  +	sprintf(p, "%d:", E);
  +	p += strlen(p);
       }
  -    (void) stpcpy( stpcpy( stpcpy(p, version) , "-") , release);
  +    (void) stpcpy( stpcpy( stpcpy(p, V) , "-") , R);
   
       /*
        * Rpm prior to 3.0.3 does not have versioned provides.
        * If no provides at all are available, we can just add.
        */
  -    if (!hge(h, RPMTAG_PROVIDENAME, &pnt, &provides, &providesCount))
  +    he->tag = RPMTAG_PROVIDENAME;
  +    xx = hge(h, he->tag, he->t, he->p, he->c);
  +    provides = he_p.argv;
  +    providesCount = he_c;
  +    if (!xx)
   	goto exit;
   
       /*
        * Otherwise, fill in entries on legacy packages.
        */
  -    if (!hge(h, RPMTAG_PROVIDEVERSION, &pvt, &providesEVR, NULL)) {
  +    he->tag = RPMTAG_PROVIDEVERSION;
  +    xx = hge(h, he->tag, he->t, he->p, he->c);
  +    providesEVR = he_p.argv;
  +    if (!xx) {
   	for (i = 0; i < providesCount; i++) {
   	    char * vdummy = "";
   	    int_32 fdummy = RPMSENSE_ANY;
  @@ -481,7 +503,9 @@
   	goto exit;
       }
   
  -    xx = hge(h, RPMTAG_PROVIDEFLAGS, NULL, &provideFlags, NULL);
  +    he->tag = RPMTAG_PROVIDEFLAGS;
  +    xx = hge(h, he->tag, he->t, he->p, he->c);
  +    provideFlags = he_p.i32p;
   
       /*@-nullderef@*/	/* LCL: providesEVR is not NULL */
       if (provides && providesEVR && provideFlags)
  @@ -489,7 +513,7 @@
           if (!(provides[i] && providesEVR[i]))
               continue;
   	if (!(provideFlags[i] == RPMSENSE_EQUAL &&
  -	    !strcmp(name, provides[i]) && !strcmp(pEVR, providesEVR[i])))
  +	    !strcmp(N, provides[i]) && !strcmp(pEVR, providesEVR[i])))
   	    continue;
   	bingo = 0;
   	break;
  @@ -497,12 +521,13 @@
       /*@=nullderef@*/
   
   exit:
  -    provides = hfd(provides, pnt);
  -    providesEVR = hfd(providesEVR, pvt);
  +    provides = _free(provides);
  +    providesEVR = _free(providesEVR);
  +    provideFlags = _free(provideFlags);
   
       if (bingo) {
   	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME, RPM_STRING_ARRAY_TYPE,
  -		&name, 1);
  +		&N, 1);
   	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS, RPM_INT32_TYPE,
   		&pFlags, 1);
   	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION, RPM_STRING_ARRAY_TYPE,
  @@ .
Received on Sun Oct 14 20:08:19 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.