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