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

Reply via email to