RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 16-Oct-2007 20:14:25 Branch: HEAD Handle: 2007101619142500 Modified files: rpm/rpmdb header.c header_internal.h Log: - replace data with he_p where needed. Summary: Revision Changes Path 1.81 +31 -32 rpm/rpmdb/header.c 1.22 +1 -1 rpm/rpmdb/header_internal.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmdb/header.c ============================================================================ $ cvs diff -u -r1.80 -r1.81 header.c --- rpm/rpmdb/header.c 16 Oct 2007 17:08:34 -0000 1.80 +++ rpm/rpmdb/header.c 16 Oct 2007 18:14:25 -0000 1.81 @@ -3160,12 +3160,10 @@ */ static int getExtension(headerSprintfArgs hsa, headerTagTagFunction fn, /[EMAIL PROTECTED]@*/ hTYP_t typeptr, - /[EMAIL PROTECTED]@*/ hPTR_t * data, + /[EMAIL PROTECTED]@*/ hRET_t * data, /[EMAIL PROTECTED]@*/ hCNT_t countptr, rpmec ec) /[EMAIL PROTECTED] *typeptr, *data, *countptr, ec @*/ - /[EMAIL PROTECTED] maxSet(typeptr) >= 0 /\ maxSet(data) >= 0 - /\ maxSet(countptr) >= 0 @*/ { if (!ec->avail) { HE_s he_s; @@ -3186,7 +3184,7 @@ } if (typeptr) *typeptr = ec->type; - if (data) *data = ec->data; + if (data) (*data).ptr = ec->data.ptr; if (countptr) *countptr = ec->count; return 0; @@ -3212,26 +3210,24 @@ size_t need = 0; char * t, * te; char buf[20]; - hPTR_t data; unsigned int intVal; uint_64 llVal; const char ** strarray; - int datafree = 0; - int countBuf; + int_32 countBuf; memset(buf, 0, sizeof(buf)); if (tag->ext) { - if (getExtension(hsa, tag->ext, he->t, &data, he->c, hsa->ec + tag->extNum)) + if (getExtension(hsa, tag->ext, he->t, he->p, he->c, hsa->ec + tag->extNum)) { he_c = 1; he_t = RPM_STRING_TYPE; - data = "(none)"; + he_p.str = "(none)"; } } else { - if (!headerGetEntry(hsa->h, tag->tag, he->t, &data, he->c)) { + if (!headerGetEntry(hsa->h, tag->tag, he->t, he->p, he->c)) { he_c = 1; he_t = RPM_STRING_TYPE; - data = "(none)"; + he_p.str = "(none)"; } /* XXX this test is unnecessary, array sizes are checked */ @@ -3239,7 +3235,7 @@ default: if (element >= he_c) { /[EMAIL PROTECTED] [EMAIL PROTECTED]/ - data = headerFreeData(data, he_t); + he_p.ptr = headerFreeData(he_p.ptr, he_t); /[EMAIL PROTECTED] [EMAIL PROTECTED]/ hsa->errmsg = _("(index out of range)"); @@ -3252,27 +3248,29 @@ case RPM_STRING_TYPE: break; } - datafree = 1; + he->freeData = 1; } if (tag->arrayCount) { /[EMAIL PROTECTED] [EMAIL PROTECTED]/ - if (datafree) - data = headerFreeData(data, he_t); + if (he->freeData) { + he_p.ptr = headerFreeData(he_p.ptr, he_t); + he->freeData = 0; + } /[EMAIL PROTECTED] [EMAIL PROTECTED]/ countBuf = he_c; - data = &countBuf; + he_p.i32p = &countBuf; he_c = 1; he_t = RPM_INT32_TYPE; } (void) stpcpy( stpcpy(buf, "%"), tag->format); - if (data) + if (he_p.ptr) switch (he_t) { case RPM_STRING_ARRAY_TYPE: - strarray = (const char **)data; + strarray = he_p.argv; if (tag->fmt) val = tag->fmt(RPM_STRING_TYPE, strarray[element], buf, tag->pad, (he_c > 1 ? element : -1)); @@ -3292,22 +3290,22 @@ case RPM_STRING_TYPE: if (tag->fmt) - val = tag->fmt(RPM_STRING_TYPE, data, buf, tag->pad, -1); + val = tag->fmt(RPM_STRING_TYPE, he_p.ptr, buf, tag->pad, -1); if (val) { need = strlen(val); } else { - need = strlen(data) + tag->pad + 20; + need = strlen(he_p.str) + tag->pad + 20; val = xmalloc(need+1); strcat(buf, "s"); /[EMAIL PROTECTED]@*/ - sprintf(val, buf, data); + sprintf(val, buf, he_p.str); /[EMAIL PROTECTED]@*/ } break; case RPM_INT64_TYPE: - llVal = *(((int_64 *) data) + element); + llVal = he_p.i64p[element]; if (tag->fmt) val = tag->fmt(RPM_INT64_TYPE, &llVal, buf, tag->pad, (he_c > 1 ? element : -1)); if (val) { @@ -3329,14 +3327,14 @@ switch (he_t) { case RPM_CHAR_TYPE: case RPM_INT8_TYPE: - intVal = *(((int_8 *) data) + element); + intVal = he_p.i8p[element]; /[EMAIL PROTECTED]@*/ break; case RPM_INT16_TYPE: - intVal = *(((uint_16 *) data) + element); + intVal = he_p.ui16p[element]; /[EMAIL PROTECTED]@*/ break; default: /* keep -Wall quiet */ case RPM_INT32_TYPE: - intVal = *(((int_32 *) data) + element); + intVal = he_p.i32p[element]; /[EMAIL PROTECTED]@*/ break; } @@ -3360,17 +3358,17 @@ case RPM_BIN_TYPE: /* XXX HACK ALERT: element field abused as no. bytes of binary data. */ if (tag->fmt) - val = tag->fmt(RPM_BIN_TYPE, data, buf, tag->pad, he_c); + val = tag->fmt(RPM_BIN_TYPE, he_p.ptr, buf, tag->pad, he_c); if (val) { need = strlen(val); } else { #ifdef NOTYET - val = memcpy(xmalloc(he_c), data, he_c); + val = memcpy(xmalloc(he_c), he_p.ptr, he_c); #else /* XXX format string not used */ static char hex[] = "0123456789abcdef"; - const char * s = data; + const char * s = he_p.str; need = 2*he_c + tag->pad; val = t = xmalloc(need+1); @@ -3392,8 +3390,10 @@ } /[EMAIL PROTECTED] [EMAIL PROTECTED]/ - if (datafree) - data = headerFreeData(data, he_t); + if (he->freeData) { + he_p.ptr = headerFreeData(he_p.ptr, he_t); + he->freeData = 0; + } /[EMAIL PROTECTED] [EMAIL PROTECTED]/ if (val && need > 0) { @@ -3648,7 +3648,7 @@ for (ext = exts, extNum = 0; ext != NULL && ext->type != HEADER_EXT_LAST; ext = (ext->type == HEADER_EXT_MORE ? ext->u.more : ext+1), extNum++) { - if (ec[extNum].freeit) ec[extNum].data = _free(ec[extNum].data); + if (ec[extNum].freeit) ec[extNum].data.ptr = _free(ec[extNum].data.ptr); } ec = _free(ec); @@ -3675,7 +3675,6 @@ /[EMAIL PROTECTED] maxSet(errmsg) >= 0 @*/ { headerSprintfArgs hsa = memset(alloca(sizeof(*hsa)), 0, sizeof(*hsa)); - HGE_t hge = (HGE_t)headerGetExtension; rpmTagType he_t = 0; hRET_t he_p = { .ptr = NULL }; int_32 he_c = 0; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/header_internal.h ============================================================================ $ cvs diff -u -r1.21 -r1.22 header_internal.h --- rpm/rpmdb/header_internal.h 14 Oct 2007 22:54:00 -0000 1.21 +++ rpm/rpmdb/header_internal.h 16 Oct 2007 18:14:25 -0000 1.22 @@ -134,7 +134,7 @@ int avail; int freeit; /[EMAIL PROTECTED]@*/ - const void * data; + hRET_t data; }; /** \ingroup header @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org