RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ header.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Sat 20 Oct 2007 - 17:37:39 CEST
Message-Id: <20071020153739.D5B7B34845A@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:   20-Oct-2007 17:37:39
  Branch: HEAD                             Handle: 2007102016373900

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               header.c

  Log:
    - jbj: add tag data cache.

  Summary:
    Revision    Changes     Path
    1.1742      +1  -0      rpm/CHANGES
    1.102       +43 -1      rpm/rpmdb/header.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1741 -r1.1742 CHANGES
  --- rpm/CHANGES	20 Oct 2007 15:10:36 -0000	1.1741
  +++ rpm/CHANGES	20 Oct 2007 15:37:39 -0000	1.1742
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: add tag data cache.
       - jbj: eliminate rpmec data type.
       - jbj: merge rpmec into HE_t.
       - jbj: not yet for binary search retrieve using tagValue.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.101 -r1.102 header.c
  --- rpm/rpmdb/header.c	20 Oct 2007 15:10:37 -0000	1.101
  +++ rpm/rpmdb/header.c	20 Oct 2007 15:37:39 -0000	1.102
  @@ -3837,6 +3837,7 @@
   /**
    * Create an extension cache.
    * @param exts		headerSprintf extensions
  + * @retval *necp	no. of elements
    * @return		new extension cache
    */
   static /*@only@*/ HE_t
  @@ -3856,7 +3857,7 @@
   
       ec = xcalloc(extNum+1, sizeof(*ec));
       if (*necp)
  -	necp = extNum;
  +	*necp = extNum;
       return ec;
   }
   
  @@ -3884,6 +3885,42 @@
       return NULL;
   }
   
  +/**
  + * Create tag data cache.
  + * @param ntc		no. of elements
  + * @return		new tag data cache
  + */
  +static /*@only@*/ HE_t
  +rpmtcNew(int ntc)
  +	/*@*/
  +{
  +    HE_t ec = xcalloc(ntc+1, sizeof(*ec));
  +    return ec;
  +}
  +
  +/**
  + * Destroy tag data cache.
  + * @param tc		tag data cache
  + * @param ntc		no. of elements
  + * @return		NULL always
  + */
  +static /*@null@*/ HE_t
  +rpmtcFree(/*@only@*/ HE_t tc, int ntc)
  +	/*@modifies ec @*/
  +{
  +    int i;
  +
  +    if (tc != NULL)
  +    for (i = 0; i < ntc; i++) {
  +	HE_t he = tc + i;
  +	if (he->freeData)
  +	    he->p.ptr = _free(he->p.ptr);
  +	memset(tc, 0, sizeof(*tc));
  +    }
  +    tc = _free(tc);
  +    return NULL;
  +}
  +
   /** \ingroup header
    * Return formatted output string from header tags.
    * The returned string must be free()d.
  @@ -3924,7 +3961,10 @@
       if (parseFormat(hsa, hsa->fmt, &hsa->format, &hsa->numTokens, NULL, PARSER_BEGIN))
   	goto exit;
   
  +    hsa->nec = 0;
       hsa->ec = rpmecNew(hsa->exts, &hsa->nec);
  +    hsa->ntc = hsa->numTokens;
  +    hsa->tc = rpmtcNew(hsa->ntc);
       hsa->val = xstrdup("");
   
       tag =
  @@ -3977,6 +4017,8 @@
   
       hsa->ec = rpmecFree(hsa->exts, hsa->ec);
       hsa->nec = 0;
  +    hsa->tc = rpmtcFree(hsa->tc, hsa->ntc);
  +    hsa->ntc = 0;
       hsa->format = freeFormat(hsa->format, hsa->numTokens);
   
   exit:
  @@ .
Received on Sat Oct 20 17:37:39 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.