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: 12-Oct-2007 22:23:04
Branch: HEAD Handle: 2007101221230301
Modified files:
rpm CHANGES
rpm/lib rpmte.c
rpm/rpmdb header.h
Log:
- jbj: addTE: use headerGetExtension.
- jbj: add HE_s typedef to get rid of alloca baggage.
Summary:
Revision Changes Path
1.1678 +2 -0 rpm/CHANGES
2.54 +40 -62 rpm/lib/rpmte.c
1.30 +4 -2 rpm/rpmdb/header.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1677 -r1.1678 CHANGES
--- rpm/CHANGES 12 Oct 2007 19:50:36 -0000 1.1677
+++ rpm/CHANGES 12 Oct 2007 20:23:03 -0000 1.1678
@@ -1,4 +1,6 @@
4.5 -> 5.0:
+ - jbj: addTE: use headerGetExtension.
+ - jbj: add HE_s typedef to get rid of alloca baggage.
- bero: Make rpm2cpio work for packages with payloads other than gzip
- jbj: change to hRET_t for existing headerGetExtension uses.
- bero: Add %optional flag on files (packages a file if it is there,
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmte.c
============================================================================
$ cvs diff -u -r2.53 -r2.54 rpmte.c
--- rpm/lib/rpmte.c 12 Oct 2007 18:55:57 -0000 2.53
+++ rpm/lib/rpmte.c 12 Oct 2007 20:23:03 -0000 2.54
@@ -95,19 +95,18 @@
rpmGlobalMacroContext, fileSystem, internalState @*/
{
int scareMem = 0;
- HGE_t hge = (HGE_t)headerGetEntryMinMemory;
- rpmte savep;
- int_32 * ep, pkgidcnt;
- const char * hdrid, * arch, * os;
- const unsigned char * pkgid;
- char * t;
- size_t nb;
- hRET_t NVRA = { .ptr = NULL };
+ 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;
int xx;
- xx = headerGetExtension(h, RPMTAG_NVRA, NULL, &NVRA, NULL);
-assert(NVRA.str != NULL);
- p->NEVR = NVRA.str;
+ he->tag = RPMTAG_NVRA;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+assert(he_p.str != NULL);
+ p->NEVR = he_p.str;
p->name = xstrdup(p->NEVR);
if ((p->release = strrchr(p->name, '-')) != NULL)
*p->release++ = '\0';
@@ -116,69 +115,47 @@
p->db_instance = 0;
- hdrid = NULL;
- xx = hge(h, RPMTAG_HDRID, NULL, &hdrid, NULL);
- if (hdrid != NULL)
- p->hdrid = xstrdup(hdrid);
- else
- p->hdrid = NULL;
-
- pkgid = NULL;
- xx = hge(h, RPMTAG_PKGID, NULL, &pkgid, &pkgidcnt);
- if (pkgid != NULL) {
+ he->tag = RPMTAG_HDRID;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+ p->hdrid = he_p.str;
+
+ he->tag = RPMTAG_PKGID;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+ if (he_p.ui8p != NULL) {
static const char hex[] = "0123456789abcdef";
+ char * t;
int i;
- p->pkgid = t = xmalloc((2*pkgidcnt) + 1);
- for (i = 0 ; i < pkgidcnt; i++) {
- *t++ = hex[ (unsigned)((pkgid[i] >> 4) & 0x0f) ];
- *t++ = hex[ (unsigned)((pkgid[i] ) & 0x0f) ];
+ p->pkgid = t = xmalloc((2*he_c) + 1);
+ for (i = 0 ; i < he_c; i++) {
+ *t++ = hex[ (unsigned)((he_p.ui8p[i] >> 4) & 0x0f) ];
+ *t++ = hex[ (unsigned)((he_p.ui8p[i] ) & 0x0f) ];
}
*t = '\0';
-#ifdef NOTYET /* XXX MinMemory. */
- pkgid = headerFreeData(pkgid, RPM_BIN_TYPE);
-#endif
+ he_p.ptr = _free(he_p.ptr);
} else
p->pkgid = NULL;
- arch = NULL;
- xx = hge(h, RPMTAG_ARCH, NULL, &arch, NULL);
- p->arch = (arch != NULL ? xstrdup(arch) : NULL);
- os = NULL;
- xx = hge(h, RPMTAG_OS, NULL, &os, NULL);
- p->os = (os != NULL ? xstrdup(os) : NULL);
+ he->tag = RPMTAG_ARCH;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+ p->arch = he_p.str;
+
+ he->tag = RPMTAG_OS;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+ p->os = he_p.str;
p->isSource =
(headerIsEntry(h, RPMTAG_SOURCERPM) == 0 &&
headerIsEntry(h, RPMTAG_ARCH) != 0);
- nb = strlen(p->NEVR) + 1;
-#ifdef DYING /* p->NEVR includes arch now. */
- if (p->arch == NULL)
- nb += sizeof("pubkey");
- else if (p->isSource)
- nb += sizeof("src");
- else
- nb += strlen(p->arch) + 1;
-#endif
- t = xmalloc(nb);
- p->NEVRA = t;
- *t = '\0';
- t = stpcpy(t, p->NEVR);
-#ifdef DYING /* p->NEVR includes arch now. */
- if (p->arch == NULL)
- t = stpcpy( t, ".pubkey");
- else if (p->isSource)
- t = stpcpy( t, ".src");
- else
- t = stpcpy( stpcpy( t, "."), p->arch);
-#endif
+ p->NEVRA = xstrdup(p->NEVR);
- ep = NULL;
- xx = hge(h, RPMTAG_EPOCH, NULL, &ep, NULL);
- if (ep) {
+ he->tag = RPMTAG_EPOCH;
+ xx = hge(h, he->tag, he->t, he->p, he->c);
+ if (he_p.i32p != NULL) {
p->epoch = xmalloc(20);
- sprintf(p->epoch, "%d", *ep);
+ sprintf(p->epoch, "%d", *he_p.i32p);
+ he_p.ptr = _free(he_p.ptr);
} else
p->epoch = NULL;
@@ -212,9 +189,10 @@
p->PRCO = rpmdsNewPRCO(h);
- savep = rpmtsSetRelocateElement(ts, p);
- p->fi = rpmfiNew(ts, h, RPMTAG_BASENAMES, scareMem);
- (void) rpmtsSetRelocateElement(ts, savep);
+ { rpmte savep = rpmtsSetRelocateElement(ts, p);
+ p->fi = rpmfiNew(ts, h, RPMTAG_BASENAMES, scareMem);
+ (void) rpmtsSetRelocateElement(ts, savep);
+ }
rpmteColorDS(p, RPMTAG_PROVIDENAME);
rpmteColorDS(p, RPMTAG_REQUIRENAME);
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.h
============================================================================
$ cvs diff -u -r1.29 -r1.30 header.h
--- rpm/rpmdb/header.h 7 Oct 2007 19:25:22 -0000 1.29
+++ rpm/rpmdb/header.h 12 Oct 2007 20:23:04 -0000 1.30
@@ -316,6 +316,7 @@
uint_64 * ui64p;
uint_32 * ui32p;
uint_16 * ui16p;
+ uint_8 * ui8p;
int_64 * i64p;
int_32 * i32p;
int_16 * i16p;
@@ -327,9 +328,8 @@
/**
*/
/*@-typeuse -fielduse@*/
-typedef struct HE_s * HE_t;
#if !defined(SWIG)
-struct HE_s {
+struct _HE_s {
int_32 tag;
/*@null@*/
hTYP_t t;
@@ -339,7 +339,9 @@
hCNT_t c;
int freeData;
};
+typedef struct _HE_s HE_s;
#endif
+typedef HE_s * HE_t;
/*@=typeuse =fielduse@*/
/** \ingroup header
@@ .
Received on Fri Oct 12 22:23:04 2007