RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/rpmdb/ header.c header_internal.h

From: Jeff Johnson <jbj@rpm5.org>
Date: Tue 16 Oct 2007 - 20:14:25 CEST
Message-Id: <20071016181425.4C5EB34845E@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:   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,
   		/*@out@*/ hTYP_t typeptr,
  -		/*@out@*/ hPTR_t * data,
  +		/*@out@*/ hRET_t * data,
   		/*@out@*/ hCNT_t countptr,
   		rpmec ec)
   	/*@modifies *typeptr, *data, *countptr, ec @*/
  -	/*@requires 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) {
   		/*@-modobserver -observertrans@*/
  -		data = headerFreeData(data, he_t);
  +		he_p.ptr = headerFreeData(he_p.ptr, he_t);
   		/*@=modobserver =observertrans@*/
   
   		hsa->errmsg = _("(index out of range)");
  @@ -3252,27 +3248,29 @@
   	case RPM_STRING_TYPE:
   	    break;
   	}
  -	datafree = 1;
  +	he->freeData = 1;
       }
   
       if (tag->arrayCount) {
   /*@-modobserver -observertrans@*/
  -	if (datafree)
  -	    data = headerFreeData(data, he_t);
  +	if (he->freeData) {
  +	    he_p.ptr = headerFreeData(he_p.ptr, he_t);
  +	    he->freeData = 0;
  +	}
   /*@=modobserver =observertrans@*/
   
   	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");
   	    /*@-formatconst@*/
  -	    sprintf(val, buf, data);
  +	    sprintf(val, buf, he_p.str);
   	    /*@=formatconst@*/
   	}
   	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];
   	    /*@innerbreak@*/ break;
   	case RPM_INT16_TYPE:
  -	    intVal = *(((uint_16 *) data) + element);
  +	    intVal = he_p.ui16p[element];
   	    /*@innerbreak@*/ break;
   	default:		/* keep -Wall quiet */
   	case RPM_INT32_TYPE:
  -	    intVal = *(((int_32 *) data) + element);
  +	    intVal = he_p.i32p[element];
   	    /*@innerbreak@*/ 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 @@
       }
   
   /*@-modobserver -observertrans@*/
  -    if (datafree)
  -	data = headerFreeData(data, he_t);
  +    if (he->freeData) {
  +	he_p.ptr = headerFreeData(he_p.ptr, he_t);
  +	he->freeData = 0;
  +    }
   /*@=modobserver =observertrans@*/
   
       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 @@
   	/*@requires 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;
   /*@owned@*/
  -    const void * data;
  +    hRET_t data;
   };
   
   /** \ingroup header
  @@ .
Received on Tue Oct 16 20:14:25 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.