RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ parsePreamble.c rpm/rpmdb/ rpmtag.h...

From: Jeff Johnson <jbj@rpm5.org>
Date: Mon 03 Dec 2007 - 16:12:09 CET
Message-Id: <20071203151209.DF9D834845C@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:   03-Dec-2007 16:12:09
  Branch: HEAD                             Handle: 2007120315120900

  Modified files:
    rpm                     CHANGES
    rpm/build               parsePreamble.c
    rpm/rpmdb               rpmtag.h tagname.c

  Log:
    - arbitrary tags w RPM_STRING_ARRAY_TYPE default type, append assumed.
    - eliminate tagName "(unknown)" failure, return "Tag_0x12345678"

  Summary:
    Revision    Changes     Path
    1.1913      +2  -0      rpm/CHANGES
    2.152       +4  -2      rpm/build/parsePreamble.c
    1.21        +0  -1      rpm/rpmdb/rpmtag.h
    1.22        +17 -14     rpm/rpmdb/tagname.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1912 -r1.1913 CHANGES
  --- rpm/CHANGES	3 Dec 2007 14:42:03 -0000	1.1912
  +++ rpm/CHANGES	3 Dec 2007 15:12:09 -0000	1.1913
  @@ -1,4 +1,6 @@
   5.0a4 -> 5.0b1:
  +    - jbj: arbitrary tags w RPM_STRING_ARRAY_TYPE default type, append assumed.
  +    - jbj: eliminate tagName "(unknown)" failure, return "Tag_0x12345678"
       - jbj: re-enable binary, not linear, tag lookups.
       - jbj: strip leading "RPMTAG_" prefix, in tagValue lookup.
       - jbj: test arbitrary bit, not tag lookup failure, for --yaml/--xml display.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
  ============================================================================
  $ cvs diff -u -r2.151 -r2.152 parsePreamble.c
  --- rpm/build/parsePreamble.c	2 Dec 2007 23:06:01 -0000	2.151
  +++ rpm/build/parsePreamble.c	3 Dec 2007 15:12:09 -0000	2.152
  @@ -784,10 +784,12 @@
       default:
   	macro = 0;
   	he->tag = tag;
  -	he->t = RPM_STRING_TYPE;
  -	he->p.str = field;
  +	he->t = RPM_STRING_ARRAY_TYPE;
  +	he->p.argv= (const char **) &field;	/* XXX NOCAST */
   	he->c = 1;
  +	he->append = 1;
   	xx = headerPut(pkg->header, he, 0);
  +	he->append = 0;
   	break;
       }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
  ============================================================================
  $ cvs diff -u -r1.20 -r1.21 rpmtag.h
  --- rpm/rpmdb/rpmtag.h	2 Dec 2007 23:06:02 -0000	1.20
  +++ rpm/rpmdb/rpmtag.h	3 Dec 2007 15:12:09 -0000	1.21
  @@ -450,7 +450,6 @@
       unsigned int freeData	: 1;
       unsigned int avail		: 1;
       unsigned int append		: 1;
  -    unsigned int signature	: 1;
   };
   typedef struct _HE_s HE_s;
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 tagname.c
  --- rpm/rpmdb/tagname.c	3 Dec 2007 14:42:04 -0000	1.21
  +++ rpm/rpmdb/tagname.c	3 Dec 2007 15:12:09 -0000	1.22
  @@ -175,6 +175,7 @@
   static const char * _tagName(rpmTag tag)
   {
       char * nameBuf;
  +    size_t nameBufLen = 0;
       headerTagTableEntry t;
       int comparison, i, l, u;
       int xx;
  @@ -190,43 +191,44 @@
       if (_rpmTags.nameBuf == NULL)
   	_rpmTags.nameBuf = xcalloc(1, _rpmTags.nameBufLen);
       nameBuf = _rpmTags.nameBuf;
  +    nameBuf[0] = nameBuf[1] = '\0';
  +    nameBufLen = _rpmTags.nameBufLen;
   
       switch (tag) {
       case RPMDBI_PACKAGES:
  -	strcpy(nameBuf, "Packages");
  +	strncpy(nameBuf, "Packages", nameBufLen);
   	break;
       case RPMDBI_DEPENDS:
  -	strcpy(nameBuf, "Depends");
  +	strncpy(nameBuf, "Depends", nameBufLen);
   	break;
       case RPMDBI_ADDED:
  -	strcpy(nameBuf, "Added");
  +	strncpy(nameBuf, "Added", nameBufLen);
   	break;
       case RPMDBI_REMOVED:
  -	strcpy(nameBuf, "Removed");
  +	strncpy(nameBuf, "Removed", nameBufLen);
   	break;
       case RPMDBI_AVAILABLE:
  -	strcpy(nameBuf, "Available");
  +	strncpy(nameBuf, "Available", nameBufLen);
   	break;
       case RPMDBI_HDLIST:
  -	strcpy(nameBuf, "Hdlist");
  +	strncpy(nameBuf, "Hdlist", nameBufLen);
   	break;
       case RPMDBI_ARGLIST:
  -	strcpy(nameBuf, "Arglist");
  +	strncpy(nameBuf, "Arglist", nameBufLen);
   	break;
       case RPMDBI_FTSWALK:
  -	strcpy(nameBuf, "Ftswalk");
  +	strncpy(nameBuf, "Ftswalk", nameBufLen);
   	break;
   
       /* XXX make sure rpmdb indices are identically named. */
       case RPMTAG_CONFLICTS:
  -	strcpy(nameBuf, "Conflictname");
  +	strncpy(nameBuf, "Conflictname", nameBufLen);
   	break;
       case RPMTAG_HDRID:
  -	strcpy(nameBuf, "Sha1header");
  +	strncpy(nameBuf, "Sha1header", nameBufLen);
   	break;
   
       default:
  -	strcpy(nameBuf, "(unknown)");
   	if (_rpmTags.byValue == NULL)
   	    break;
   	l = 0;
  @@ -242,7 +244,6 @@
   	    else if (comparison > 0)
   		l = i + 1;
   	    else {
  -		nameBuf[0] = nameBuf[1] = '\0';
   		/* Make sure that the bsearch retrieve is stable. */
   		while (i > 0 && tag == _rpmTags.byValue[i-1]->val) {
   		    i--;
  @@ -250,14 +251,16 @@
   		}
   		t = _rpmTags.byValue[i];
   		s = (*_rpmTags.tagCanonicalize) (t->name);
  -		strncpy(nameBuf, s, _rpmTags.nameBufLen);
  -		nameBuf[_rpmTags.nameBufLen-1] = '\0';
  +		strncpy(nameBuf, s, nameBufLen);
   		s = _free(s);
   		/*@loopbreak@*/ break;
   	    }
   	}
   	break;
       }
  +    if (nameBuf[0] == '\0')
  +	snprintf(nameBuf, nameBufLen, "Tag_0x%08x", (unsigned) tag);
  +    nameBuf[nameBufLen-1] = '\0';
       return nameBuf;
   }
   
  @@ .
Received on Mon Dec 3 16:12:09 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.