RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ hdrNVR.c hdrinline.h header.c heade...

From: Jeff Johnson <jbj@rpm5.org>
Date: Wed 17 Oct 2007 - 02:32:27 CEST
Message-Id: <20071017003227.3A179348460@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:   17-Oct-2007 02:32:27
  Branch: HEAD                             Handle: 2007101701322600

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               hdrNVR.c hdrinline.h header.c header.h
                            header_internal.c header_internal.h rpmdb.c
                            signature.c

  Log:
    - change hPTR_t to hRET_t in ABI, revert to const void * in API.

  Summary:
    Revision    Changes     Path
    1.1720      +1  -0      rpm/CHANGES
    1.16        +2  -2      rpm/rpmdb/hdrNVR.c
    1.19        +16 -10     rpm/rpmdb/hdrinline.h
    1.85        +56 -57     rpm/rpmdb/header.c
    1.37        +5  -5      rpm/rpmdb/header.h
    1.11        +8  -8      rpm/rpmdb/header_internal.c
    1.23        +2  -2      rpm/rpmdb/header_internal.h
    1.187       +2  -2      rpm/rpmdb/rpmdb.c
    1.10        +4  -4      rpm/rpmdb/signature.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1719 -r1.1720 CHANGES
  --- rpm/CHANGES	16 Oct 2007 20:16:16 -0000	1.1719
  +++ rpm/CHANGES	17 Oct 2007 00:32:26 -0000	1.1720
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: change hPTR_t to hRET_t in ABI, revert to const void * in API.
       - jbj: drill hPTR_t through prototypes. hRET_t * refactor next.
       - jbj: drill rpmTagCount through rpmdb/* files.
       - jbj: preliminaries to encapsulate headerSprintf goop.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.15 -r1.16 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	16 Oct 2007 20:16:16 -0000	1.15
  +++ rpm/rpmdb/hdrNVR.c	17 Oct 2007 00:32:26 -0000	1.16
  @@ -209,8 +209,8 @@
       HeaderIterator hi;
       int_32 tag;
       rpmTagType type;
  +    const void * ptr;
       rpmTagCount count;
  -    hPTR_t ptr;
       int xx;
   
       if (h == NULL || sigh == NULL)
  @@ -305,8 +305,8 @@
       int_32 stag;
       int_32 tag;
       rpmTagType type;
  +    const void * ptr;
       rpmTagCount count;
  -    hPTR_t ptr;
       int xx;
   
       for (hi = headerInitIterator(h);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 hdrinline.h
  --- rpm/rpmdb/hdrinline.h	16 Oct 2007 20:16:16 -0000	1.18
  +++ rpm/rpmdb/hdrinline.h	17 Oct 2007 00:32:26 -0000	1.19
  @@ -335,10 +335,12 @@
    */
   /*@mayexit@*/
   /*@unused@*/ static inline
  -int headerAddEntry(Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int headerAddEntry(Header h, int_32 tag, rpmTagType type,
  +		const void * p, rpmTagCount c)
   	/*@modifies h @*/
   {
  -    return (h2hv(h)->hdradd) (h, tag, type, p, c);
  +    hRET_t *q = (void *)&p;
  +    return (h2hv(h)->hdradd) (h, tag, type, *q, c);
   }
   
   /** \ingroup header
  @@ -357,10 +359,11 @@
    */
   /*@unused@*/ static inline
   int headerAppendEntry(Header h, int_32 tag, rpmTagType type,
  -		hPTR_t p, rpmTagCount c)
  +		const void * p, rpmTagCount c)
   	/*@modifies h @*/
   {
  -    return (h2hv(h)->hdrappend) (h, tag, type, p, c);
  +    hRET_t *q = (void *)&p;
  +    return (h2hv(h)->hdrappend) (h, tag, type, *q, c);
   }
   
   /** \ingroup header
  @@ -375,10 +378,11 @@
    */
   /*@unused@*/ static inline
   int headerAddOrAppendEntry(Header h, int_32 tag, rpmTagType type,
  -		hPTR_t p, rpmTagCount c)
  +		const void * p, rpmTagCount c)
   	/*@modifies h @*/
   {
  -    return (h2hv(h)->hdraddorappend) (h, tag, type, p, c);
  +    hRET_t *q = (void *)&p;
  +    return (h2hv(h)->hdraddorappend) (h, tag, type, *q, c);
   }
   
   /** \ingroup header
  @@ -421,10 +425,11 @@
    */
   /*@unused@*/ static inline
   int headerModifyEntry(Header h, int_32 tag, rpmTagType type,
  -			hPTR_t p, rpmTagCount c)
  +			const void * p, rpmTagCount c)
   	/*@modifies h @*/
   {
  -    return (h2hv(h)->hdrmodify) (h, tag, type, p, c);
  +    hRET_t *q = (void *)&p;
  +    return (h2hv(h)->hdrmodify) (h, tag, type, *q, c);
   }
   
   /** \ingroup header
  @@ -517,11 +522,12 @@
   int headerNextIterator(HeaderIterator hi,
   		/*@null@*/ /*@out@*/ hTAG_t tag,
   		/*@null@*/ /*@out@*/ hTYP_t type,
  -		/*@null@*/ /*@out@*/ hPTR_t * p,
  +		/*@null@*/ /*@out@*/ const void * p,
   		/*@null@*/ /*@out@*/ hCNT_t c)
   	/*@modifies hi, *tag, *type, *p, *c @*/
   {
  -    return hdrVec->hdrnextiter(hi, tag, type, p, c);
  +    hRET_t **q = (void *)&p;
  +    return hdrVec->hdrnextiter(hi, tag, type, *q, c);
   }
   
   /** \ingroup header
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.84 -r1.85 header.c
  --- rpm/rpmdb/header.c	16 Oct 2007 21:02:03 -0000	1.84
  +++ rpm/rpmdb/header.c	17 Oct 2007 00:32:26 -0000	1.85
  @@ -368,12 +368,12 @@
    * @param pend		pointer to end of data (or NULL)
    * @return		no. bytes in data, -1 on failure
    */
  -static int dataLength(rpmTagType type, hPTR_t p, rpmTagCount count, int onDisk,
  -		/*@null@*/ hPTR_t pend)
  +static int dataLength(rpmTagType type, hRET_t p, rpmTagCount count, int onDisk,
  +		/*@null@*/ hRET_t pend)
   	/*@*/
   {
  -    const unsigned char * s = (const unsigned char *) p;	/* NOCAST */
  -    const unsigned char * se = (const unsigned char *) pend;	/* NOCAST */
  +    const unsigned char * s = p.ui8p;
  +    const unsigned char * se = pend.ui8p;
       int length = 0;
   
       switch (type) {
  @@ -403,7 +403,7 @@
   		}
   	    }
   	} else {
  -	    const char ** av = (const char **)p;
  +	    const char ** av = p.argv;
   	    while (count--) {
   		/* add one for null termination */
   		length += strlen(*av++) + 1;
  @@ -457,6 +457,7 @@
   		int regionid)
   	/*@modifies *entry, *dataStart @*/
   {
  +    hRET_t p, pend;
       unsigned char * tprev = NULL;
       unsigned char * t = NULL;
       int tdel = 0;
  @@ -486,7 +487,9 @@
   	if (dataEnd && t >= dataEnd)
   	    return -1;
   
  -	ie.length = dataLength(ie.info.type, ie.data, ie.info.count, 1, (hPTR_t) dataEnd); /* NOCAST */
  +	p.ptr = ie.data;
  +	pend.ptr = (void *) dataEnd;	/* NOCAST */
  +	ie.length = dataLength(ie.info.type, p, ie.info.count, 1, pend);
   	if (ie.length < 0 || hdrchkData(ie.length))
   	    return -1;
   
  @@ -1462,7 +1465,7 @@
    */
   static int copyEntry(const indexEntry entry,
   		/*@null@*/ /*@out@*/ hTYP_t type,
  -		/*@null@*/ /*@out@*/ hPTR_t * p,
  +		/*@null@*/ /*@out@*/ hRET_t * p,
   		/*@null@*/ /*@out@*/ hCNT_t c,
   		int minMem)
   	/*@modifies *type, *p, *c @*/
  @@ -1500,8 +1503,7 @@
   		rdl += REGION_TAG_COUNT;
   	    }
   
  -	    *p = xmalloc(count);
  -	    ei = (int_32 *) *p;
  +	    (*p).i32p = ei = xmalloc(count);
   	    ei[0] = htonl(ril);
   	    ei[1] = htonl(rdl);
   
  @@ -1517,14 +1519,14 @@
   	    rc = (rc < 0) ? 0 : 1;
   	} else {
   	    count = entry->length;
  -	    *p = (!minMem
  +	    (*p).ptr = (!minMem
   		? memcpy(xmalloc(count), entry->data, count)
   		: entry->data);
   	}
   	break;
       case RPM_STRING_TYPE:
   	if (count == 1) {
  -	    *p = entry->data;
  +	    (*p).str = (char *) entry->data;	/* NOCAST */
   	    break;
   	}
   	/*@fallthrough@*/
  @@ -1539,14 +1541,11 @@
   
   	/*@-mods@*/
   	if (minMem) {
  -	    *p = xmalloc(tableSize);
  -	    ptrEntry = (const char **) *p;
  +	    (*p).argv = ptrEntry = xmalloc(tableSize);
   	    t = entry->data;
   	} else {
  -	    t = xmalloc(tableSize + entry->length);
  -	    *p = (void *)t;
  -	    ptrEntry = (const char **) *p;
  -	    t += tableSize;
  +	    (*p).argv = ptrEntry = xmalloc(tableSize + entry->length);
  +	    t = (char *) &ptrEntry[count];
   	    memcpy(t, entry->data, entry->length);
   	}
   	/*@=mods@*/
  @@ -1560,7 +1559,7 @@
       case RPM_OPENPGP_TYPE:	/* XXX W2DO? */
       case RPM_ASN1_TYPE:		/* XXX W2DO? */
       default:
  -	*p = entry->data;
  +	(*p).ptr = entry->data;
   	break;
       }
       if (type) *type = entry->info.type;
  @@ -1715,7 +1714,7 @@
    */
   static int intGetEntry(Header h, int_32 tag,
   		/*@null@*/ /*@out@*/ hTYP_t type,
  -		/*@null@*/ /*@out@*/ hPTR_t * p,
  +		/*@null@*/ /*@out@*/ hRET_t * p,
   		/*@null@*/ /*@out@*/ hCNT_t c,
   		int minMem)
   	/*@modifies *type, *p, *c @*/
  @@ -1730,7 +1729,7 @@
       /*@mods@*/
       if (entry == NULL) {
   	if (type) type = 0;
  -	if (p) *p = NULL;
  +	if (p) (*p).ptr = NULL;
   	if (c) *c = 0;
   	return 0;
       }
  @@ -1741,7 +1740,7 @@
   	if (type) *type = RPM_STRING_TYPE;
   	if (c) *c = 1;
   	/*@-dependenttrans@*/
  -	if (p) *p = (hPTR_t) headerFindI18NString(h, entry);	/* NOCAST */
  +	if (p) (*p).ptr = headerFindI18NString(h, entry);
   	/*@=dependenttrans@*/
   	break;
       default:
  @@ -1853,7 +1852,7 @@
       if (ext && ext->name != NULL && ext->type == HEADER_EXT_TAG)
   	rc = ext->u.tagFunction(h, he);
       else
  -	rc = intGetEntry(h, he->tag, he->t, (hPTR_t *)he->p, he->c, 0);
  +	rc = intGetEntry(h, he->tag, he->t, he->p, he->c, 0);
   
       if (!rc)
   	goto exit;
  @@ -1937,7 +1936,7 @@
   
       if ((sw = headerGetStats(h, 19)) != NULL)	/* RPMTS_OP_HDRGET */
   	(void) rpmswEnter(sw, 0);
  -    rc = intGetEntry(h, tag, type, (hPTR_t *)p, c, 0);
  +    rc = intGetEntry(h, tag, type, p, c, 0);
       if (sw != NULL)	(void) rpmswExit(sw, 0);
       return rc;
   }
  @@ -1972,7 +1971,7 @@
       return rc;
   }
   
  -int headerGetRawEntry(Header h, int_32 tag, rpmTagType * type, void * p, int_32 * c)
  +int headerGetRawEntry(Header h, int_32 tag, rpmTagType * type, hRET_t * p, rpmTagCount * c)
   {
       indexEntry entry;
       int rc;
  @@ -1997,14 +1996,14 @@
   
   /**
    */
  -static void copyData(rpmTagType type, /*@out@*/ void * dstPtr, const void * srcPtr,
  +static void copyData(rpmTagType type, /*@out@*/ void * dstPtr, hRET_t srcPtr,
   		rpmTagCount cnt, int dataLength)
   	/*@modifies *dstPtr @*/
   {
       switch (type) {
       case RPM_STRING_ARRAY_TYPE:
       case RPM_I18NSTRING_TYPE:
  -    {	const char ** av = (const char **) srcPtr;
  +    {	const char ** av = srcPtr.argv;
   	char * t = dstPtr;
   
   	while (cnt-- > 0 && dataLength > 0) {
  @@ -2018,7 +2017,7 @@
       }	break;
   
       default:
  -	memmove(dstPtr, srcPtr, dataLength);
  +	memmove(dstPtr, srcPtr.ptr, dataLength);
   	break;
       }
   }
  @@ -2033,14 +2032,14 @@
    */
   /*@null@*/
   static void *
  -grabData(rpmTagType type, hPTR_t p, rpmTagCount c, /*@out@*/ int * lenp)
  +grabData(rpmTagType type, hRET_t p, rpmTagCount c, /*@out@*/ int * lenp)
   	/*@modifies *lenp @*/
   	/*@requires maxSet(lenp) >= 0 @*/
   {
       void * data = NULL;
       int length;
   
  -    length = dataLength(type, p, c, 0, NULL);
  +    length = dataLength(type, p, c, 0, (hRET_t)NULL);	/* NOCAST */
       if (length > 0) {
   	data = xmalloc(length);
   	copyData(type, data, p, c, length);
  @@ -2066,7 +2065,7 @@
    * @return		1 on success, 0 on failure
    */
   static
  -int headerAddEntry(Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int headerAddEntry(Header h, int_32 tag, rpmTagType type, hRET_t p, rpmTagCount c)
   	/*@modifies h @*/
   {
       indexEntry entry;
  @@ -2125,7 +2124,7 @@
    */
   static
   int headerAppendEntry(Header h, int_32 tag, rpmTagType type,
  -		hPTR_t p, rpmTagCount c)
  +		hRET_t p, rpmTagCount c)
   	/*@modifies h @*/
   {
       indexEntry entry;
  @@ -2141,7 +2140,7 @@
       if (!entry)
   	return 0;
   
  -    length = dataLength(type, p, c, 0, NULL);
  +    length = dataLength(type, p, c, 0, (hRET_t)NULL);	/* NOCAST */
       if (length < 0)
   	return 0;
   
  @@ -2173,7 +2172,7 @@
    */
   static
   int headerAddOrAppendEntry(Header h, int_32 tag, rpmTagType type,
  -		hPTR_t p, rpmTagCount c)
  +		hRET_t p, rpmTagCount c)
   	/*@modifies h @*/
   {
       return (findEntry(h, tag, type)
  @@ -2207,7 +2206,7 @@
   	/*@modifies h @*/
   {
       indexEntry table, entry;
  -    const char ** strArray;
  +    hRET_t p;
       int length;
       int ghosts;
       int i, langNum;
  @@ -2220,20 +2219,21 @@
   	return 0;		/* this shouldn't ever happen!! */
   
       if (!table && !entry) {
  -	const char * charArray[2];
  +	const char * argv[2];
   	int count = 0;
  +	p.argv = argv;
   	if (!lang || (lang[0] == 'C' && lang[1] == '\0')) {
   	    /*@-observertrans -readonlytrans@*/
  -	    charArray[count++] = "C";
  +	    p.argv[count++] = "C";
   	    /*@=observertrans =readonlytrans@*/
   	} else {
   	    /*@-observertrans -readonlytrans@*/
  -	    charArray[count++] = "C";
  +	    p.argv[count++] = "C";
   	    /*@=observertrans =readonlytrans@*/
  -	    charArray[count++] = lang;
  +	    p.argv[count++] = lang;
   	}
   	if (!headerAddEntry(h, HEADER_I18NTABLE, RPM_STRING_ARRAY_TYPE, 
  -			(hPTR_t) &charArray, count))	/* NOCAST */
  +			p, count))
   	    return 0;
   	table = findEntry(h, HEADER_I18NTABLE, RPM_STRING_ARRAY_TYPE);
       }
  @@ -2264,12 +2264,11 @@
       }
   
       if (!entry) {
  -	strArray = alloca(sizeof(*strArray) * (langNum + 1));
  +	p.argv = alloca(sizeof(*p.argv) * (langNum + 1));
   	for (i = 0; i < langNum; i++)
  -	    strArray[i] = "";
  -	strArray[langNum] = string;
  -	return headerAddEntry(h, tag, RPM_I18NSTRING_TYPE, (hPTR_t) strArray, 	/* NOCAST */
  -				langNum + 1);
  +	    p.argv[i] = "";
  +	p.argv[langNum] = string;
  +	return headerAddEntry(h, tag, RPM_I18NSTRING_TYPE, p, langNum + 1);
       } else if (langNum >= entry->info.count) {
   	ghosts = langNum - entry->info.count;
   	
  @@ -2346,12 +2345,12 @@
    */
   static
   int headerModifyEntry(Header h, int_32 tag, rpmTagType type,
  -			hPTR_t p, rpmTagCount c)
  +			hRET_t p, rpmTagCount c)
   	/*@modifies h @*/
   {
       indexEntry entry;
       void * oldData;
  -    hPTR_t data;
  +    hRET_t data;
       int length;
   
       /* First find the tag */
  @@ -2360,8 +2359,8 @@
   	return 0;
   
       length = 0;
  -    data = grabData(type, p, c, &length);
  -    if (data == NULL || length <= 0)
  +    data.ptr = grabData(type, p, c, &length);
  +    if (data.ptr == NULL || length <= 0)
   	return 0;
   
       /* make sure entry points to the first occurence of this tag */
  @@ -2374,7 +2373,7 @@
   
       entry->info.count = c;
       entry->info.type = type;
  -    entry->data = (void *) (*data).ptr;	/* NOCAST */
  +    entry->data = data.ptr;
       entry->length = length;
   
       if (ENTRY_IN_REGION(entry)) {
  @@ -2498,7 +2497,7 @@
   int headerNextIterator(HeaderIterator hi,
   		/*@null@*/ /*@out@*/ hTAG_t tag,
   		/*@null@*/ /*@out@*/ hTYP_t type,
  -		/*@null@*/ /*@out@*/ hPTR_t * p,
  +		/*@null@*/ /*@out@*/ hRET_t * p,
   		/*@null@*/ /*@out@*/ hCNT_t c)
   	/*@modifies hi, *tag, *type, *p, *c @*/
   	/*@requires maxSet(tag) >= 0 /\ maxSet(type) >= 0
  @@ -2545,13 +2544,13 @@
       int_32 tag;
       rpmTagType type;
       rpmTagCount count;
  -    hPTR_t ptr;
  +    hRET_t ptr;
      
       for (hi = headerInitIterator(h);
   	headerNextIterator(hi, &tag, &type, &ptr, &count);
  -	ptr = headerFreeData((void *)ptr, type))
  +	ptr.ptr = headerFreeData(ptr.ptr, type))
       {
  -	if (ptr) (void) headerAddEntry(nh, tag, type, ptr, count);
  +	if (ptr.ptr) (void) headerAddEntry(nh, tag, type, ptr, count);
       }
       hi = headerFreeIterator(hi);
   
  @@ -3990,15 +3989,15 @@
   	return;
   
       for (p = tagstocopy; *p != 0; p++) {
  -	hRET_t s;
  +	hRET_t ptr;
   	rpmTagType type;
   	rpmTagCount count;
   	if (headerIsEntry(headerTo, *p))
   	    continue;
  -	if (!headerGetEntryMinMemory(headerFrom, *p, &type, &s, &count))
  +	if (!headerGetEntryMinMemory(headerFrom, *p, &type, &ptr, &count))
   	    continue;
  -	(void) headerAddEntry(headerTo, *p, type, s.ptr, count);
  -	s.ptr = headerFreeData(s.ptr, type);
  +	(void) headerAddEntry(headerTo, *p, type, ptr, count);
  +	ptr.ptr = headerFreeData(ptr.ptr, type);
       }
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.36 -r1.37 header.h
  --- rpm/rpmdb/header.h	16 Oct 2007 21:02:03 -0000	1.36
  +++ rpm/rpmdb/header.h	17 Oct 2007 00:32:26 -0000	1.37
  @@ -654,7 +654,7 @@
    * @return		1 on success, 0 on failure
    */
   typedef
  -int (*HDRadd) (Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int (*HDRadd) (Header h, int_32 tag, rpmTagType type, hRET_t p, rpmTagCount c)
           /*@modifies h @*/;
   
   /** \ingroup header
  @@ -672,7 +672,7 @@
    * @return		1 on success, 0 on failure
    */
   typedef
  -int (*HDRappend) (Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int (*HDRappend) (Header h, int_32 tag, rpmTagType type, hRET_t p, rpmTagCount c)
           /*@modifies h @*/;
   
   /** \ingroup header
  @@ -686,7 +686,7 @@
    * @return		1 on success, 0 on failure
    */
   typedef
  -int (*HDRaddorappend) (Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int (*HDRaddorappend) (Header h, int_32 tag, rpmTagType type, hRET_t p, rpmTagCount c)
           /*@modifies h @*/;
   
   /** \ingroup header
  @@ -725,7 +725,7 @@
    * @return		1 on success, 0 on failure
    */
   typedef
  -int (*HDRmodify) (Header h, int_32 tag, rpmTagType type, hPTR_t p, rpmTagCount c)
  +int (*HDRmodify) (Header h, int_32 tag, rpmTagType type, hRET_t p, rpmTagCount c)
           /*@modifies h @*/;
   
   /** \ingroup header
  @@ -800,7 +800,7 @@
   int (*HDRnextiter) (HeaderIterator hi,
   		/*@null@*/ /*@out@*/ hTAG_t tag,
   		/*@null@*/ /*@out@*/ hTYP_t type,
  -		/*@null@*/ /*@out@*/ hPTR_t * p,
  +		/*@null@*/ /*@out@*/ hRET_t * p,
   		/*@null@*/ /*@out@*/ hCNT_t c)
   	/*@modifies hi, *tag, *type, *p, *c @*/;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.c
  ============================================================================
  $ cvs diff -u -r1.10 -r1.11 header_internal.c
  --- rpm/rpmdb/header_internal.c	14 Oct 2007 22:54:00 -0000	1.10
  +++ rpm/rpmdb/header_internal.c	17 Oct 2007 00:32:26 -0000	1.11
  @@ -61,20 +61,20 @@
       return -1;
   }
   
  -char ** headerGetLangs(Header h)
  +const char ** headerGetLangs(Header h)
   {
  -    char **s, *e, **table;
  +    const char ** table;
  +    const char *e;
       rpmTagType type;
  -    int i, count;
  +    hRET_t s;
  +    rpmTagCount count;
  +    int i;
   
       if (!headerGetRawEntry(h, HEADER_I18NTABLE, &type, &s, &count))
   	return NULL;
   
  -    /* XXX xcalloc never returns NULL. */
  -    if ((table = (char **)xcalloc((count+1), sizeof(char *))) == NULL)
  -	return NULL;
  -
  -    for (i = 0, e = *s; i < count; i++, e += strlen(e)+1)
  +    table = xcalloc(count+1, sizeof(*table));
  +    for (i = 0, e = *s.argv; i < count; i++, e += strlen(e)+1)
   	table[i] = e;
       table[count] = NULL;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.22 -r1.23 header_internal.h
  --- rpm/rpmdb/header_internal.h	16 Oct 2007 18:14:25 -0000	1.22
  +++ rpm/rpmdb/header_internal.h	17 Oct 2007 00:32:26 -0000	1.23
  @@ -198,7 +198,7 @@
    * @return		array of locales (or NULL on error)
    */
   /*@unused@*/
  -/*@only@*/ /*@null@*/ char ** headerGetLangs(Header h)
  +/*@only@*/ /*@null@*/ const char ** headerGetLangs(Header h)
   	/*@*/;
   
   /** \ingroup header
  @@ -217,7 +217,7 @@
   /*@-incondefs@*/
   int headerGetRawEntry(Header h, int_32 tag,
   			/*@null@*/ /*@out@*/ hTYP_t type,
  -			/*@null@*/ /*@out@*/ void * p, 
  +			/*@null@*/ /*@out@*/ hRET_t * p, 
   			/*@null@*/ /*@out@*/ hCNT_t c)
   	/*@modifies *type, *p, *c @*/
   	/*@requires maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 0 @*/;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.186 -r1.187 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	16 Oct 2007 21:02:03 -0000	1.186
  +++ rpm/rpmdb/rpmdb.c	17 Oct 2007 00:32:26 -0000	1.187
  @@ -3140,7 +3140,7 @@
   	he_p.i32p = &tid;
   	he_c = 1;
   	if (!headerIsEntry(h, he->tag))
  -	   xx = hae(h, he->tag, he_t, he_p, he_c);
  +	   xx = hae(h, he->tag, he_t, &he_p, he_c);
       }
   
       /* Add the package color if not present. */
  @@ -3150,7 +3150,7 @@
   	he_t = RPM_INT32_TYPE;
   	he_p.ui32p = &hcolor;
   	he_c = 1;
  -	xx = hae(h, he->tag, he_t, he_p, he_c);
  +	xx = hae(h, he->tag, he_t, &he_p, he_c);
       }
   
   #if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/signature.c
  ============================================================================
  $ cvs diff -u -r1.9 -r1.10 signature.c
  --- rpm/rpmdb/signature.c	16 Oct 2007 20:16:16 -0000	1.9
  +++ rpm/rpmdb/signature.c	17 Oct 2007 00:32:26 -0000	1.10
  @@ -578,7 +578,7 @@
   
   	if (SHA1 == NULL)
   	    goto exit;
  -	if (!headerAddEntry(sigh, RPMSIGTAG_SHA1, RPM_STRING_TYPE, (hPTR_t) SHA1, 1)) /* NOCAST */
  +	if (!headerAddEntry(sigh, RPMSIGTAG_SHA1, RPM_STRING_TYPE, SHA1, 1))
   	    goto exit;
   	ret = 0;
   	break;
  @@ -596,7 +596,7 @@
   	    goto exit;
   	(void) Fclose(fd);	fd = NULL;
   	if (makeGPGSignature(fn, &sigTag, &pkt, &pktlen, passPhrase)
  -	 || !headerAddEntry(sigh, sigTag, RPM_BIN_TYPE, (hPTR_t) pkt, pktlen)) /* NOCAST */
  +	 || !headerAddEntry(sigh, sigTag, RPM_BIN_TYPE, pkt, pktlen))
   	    goto exit;
   	ret = 0;
   	break;
  @@ -646,7 +646,7 @@
   	if (Stat(file, &st) != 0)
   	    break;
   	pktlen = st.st_size;
  -	if (!headerAddEntry(sigh, sigTag, RPM_INT32_TYPE, (hPTR_t) &pktlen, 1))	/* NOCAST */
  +	if (!headerAddEntry(sigh, sigTag, RPM_INT32_TYPE, &pktlen, 1))
   	    break;
   	ret = 0;
   	break;
  @@ -654,7 +654,7 @@
   	pktlen = 16;
   	pkt = memset(alloca(pktlen), 0, pktlen);
   	if (dodigest(PGPHASHALGO_MD5, file, pkt, 0, NULL)
  -	 || !headerAddEntry(sigh, sigTag, RPM_BIN_TYPE, (hPTR_t) pkt, pktlen))	/* NOCAST */
  +	 || !headerAddEntry(sigh, sigTag, RPM_BIN_TYPE, pkt, pktlen))
   	    break;
   	ret = 0;
   	break;
  @@ .
Received on Wed Oct 17 02:32:27 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.