RPM Community Forums

Mailing List Message of <rpm-cvs>

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

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 02 Dec 2007 - 21:51:49 CET
Message-Id: <20071202205149.9F698348452@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:   02-Dec-2007 21:51:49
  Branch: HEAD                             Handle: 2007120220514900

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               tagname.c

  Log:
    - jbj: eliminate hard-wired static nameBuf for tag strings.

  Summary:
    Revision    Changes     Path
    1.1907      +1  -0      rpm/CHANGES
    1.19        +13 -8      rpm/rpmdb/tagname.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1906 -r1.1907 CHANGES
  --- rpm/CHANGES	2 Dec 2007 15:54:33 -0000	1.1906
  +++ rpm/CHANGES	2 Dec 2007 20:51:49 -0000	1.1907
  @@ -1,6 +1,7 @@
   5.0a4 -> 5.0b1:
   
   5.0a3 -> 5.0a4:
  +    - jbj: eliminate hard-wired static nameBuf for tag strings.
       - rse: provide RPM version in API via macros RPM_{VERSION,TIMESTAMP,VENDOR} and functions rpm_{version,timestamp,vendor}
       - jbj: pkgio: hdlist readers need RPMRC_NOTFOUND EOF indicator.
       - jbj: pkgio: drill in sufficient debugging to sort per/python I/O issues.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 tagname.c
  --- rpm/rpmdb/tagname.c	30 Nov 2007 04:51:30 -0000	1.18
  +++ rpm/rpmdb/tagname.c	2 Dec 2007 20:51:49 -0000	1.19
  @@ -78,12 +78,15 @@
   static char * _tagCanonicalize(const char * s)
   	/*@*/
   {
  -    const char * se = s;
  +    const char * se;
       size_t nb = 0;
       char * te;
       char * t;
       int c;
   
  +    if (!strncasecmp(s, "RPMTAG_", sizeof("RPMTAG_")-1))
  +	s += sizeof("RPMTAG_") - 1;
  +    se = s;
       while ((c = *se++) && xisalpha(c))
   	nb++;
   
  @@ -142,7 +145,8 @@
   
   static const char * _tagName(rpmTag tag)
   {
  -    static char nameBuf[128];	/* XXX yuk */
  +    static size_t nameBufLen = 256;
  +    char * nameBuf;
       headerTagTableEntry t;
       int comparison, i, l, u;
       int xx;
  @@ -150,6 +154,9 @@
   
       if (_rpmTags.byValue == NULL)
   	xx = tagLoadIndex(&_rpmTags.byValue, &_rpmTags.byValueSize, tagCmpValue);
  +    if (_rpmTags.nameBuf == NULL)
  +	_rpmTags.nameBuf = xcalloc(1, nameBufLen);
  +    nameBuf = _rpmTags.nameBuf;
   
       switch (tag) {
       case RPMDBI_PACKAGES:
  @@ -209,18 +216,16 @@
   		    t--;
   		}
   		t = _rpmTags.byValue[i];
  -		if (t->name != NULL)
  -		    strcpy(nameBuf, t->name + (sizeof("RPMTAG_")-1));
  -		for (s = nameBuf+1; *s != '\0'; s++)
  -		    *s = (char) xtolower((int)*s);
  +		s = (*_rpmTags.tagCanonicalize) (t->name);
  +		strncpy(nameBuf, s, nameBufLen);
  +		nameBuf[nameBufLen-1] = '\0';
  +		s = _free(s);
   		/*@loopbreak@*/ break;
   	    }
   	}
   	break;
       }
  -/*@-statictrans@*/
       return nameBuf;
  -/*@=statictrans@*/
   }
   
   static unsigned int _tagType(rpmTag tag)
  @@ .
Received on Sun Dec 2 21:51:49 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.