[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rpm-devel
Subject:    Re: [CVS] RPM: rpm/lib/ rpmgi.c verify.c rpm/rpmdb/ rpmdb.c rpm/tools/
From:       Jeff Johnson <n3npq () mac ! com>
Date:       2009-12-10 13:49:37
Message-ID: 950929C7-EDB3-4B2F-9F42-8F0BCD2CBA6E () mac ! com
[Download RAW message or body]

THere's some subtleties with uint32_t <-> rpmuint32_t that are
gonna need some work.

Again, rpmuint32_t (and other rpmuint* types) should be used
only for Header data types.

The right fix for hdrNum is a private data type specifically
for the (curently uint32_t) primary package key.

Hmmm, perhaps
	typedef uint32_t hdrNum_t;
is easiest to remember and still unigue enough to find/replace
as needed.

73 de Jeff

On Dec 10, 2009, at 4:53 AM, Pinto Elia wrote:

>  RPM Package Manager, CVS Repository
>  http://rpm5.org/cvs/
>  ____________________________________________________________________________
> 
>  Server: rpm5.org                         Name:   Pinto Elia
>  Root:   /v/rpm/cvs                       Email:  devzero2000@rpm5.org
>  Module: rpm                              Date:   10-Dec-2009 10:53:45
>  Branch: HEAD                             Handle: 2009121009534400
> 
>  Modified files:
>    rpm/lib                 rpmgi.c verify.c
>    rpm/rpmdb               rpmdb.c
>    rpm/tools               rpmrepo.c
> 
>  Log:
>    try to use headerGetInstance consistently with rpmuint32_t for the
>    return data type and hdrNum.
> 
>  Summary:
>    Revision    Changes     Path
>    2.71        +4  -4      rpm/lib/rpmgi.c
>    2.198       +3  -3      rpm/lib/verify.c
>    1.356       +2  -2      rpm/rpmdb/rpmdb.c
>    2.23        +1  -1      rpm/tools/rpmrepo.c
>  ____________________________________________________________________________
> 
>  patch -p0 <<'@@ .'
>  Index: rpm/lib/rpmgi.c
>  ============================================================================
>  $ cvs diff -u -r2.70 -r2.71 rpmgi.c
>  --- rpm/lib/rpmgi.c	27 Nov 2009 14:29:05 -0000	2.70
>  +++ rpm/lib/rpmgi.c	10 Dec 2009 09:53:44 -0000	2.71
>  @@ -730,10 +730,10 @@
>   	/* XXX rpmgi hack: Save header in transaction element. */
>   	if (gi->flags & RPMGI_ERASING) {
>   	    static int hdrx = 0;
>  -	    uint32_t dboffset = headerGetInstance(gi->h);
>  -	    if (dboffset <= 0)
>  -		dboffset = --hdrx;
>  -	    xx = rpmtsAddEraseElement(gi->ts, gi->h, dboffset);
>  +	    rpmuint32_t hdrNum = headerGetInstance(gi->h);
>  +	    if (hdrNum <= 0)
>  +		hdrNum = --hdrx;
>  +	    xx = rpmtsAddEraseElement(gi->ts, gi->h, hdrNum);
>   	} else
>   	    xx = rpmtsAddInstallElement(gi->ts, gi->h, (fnpyKey)gi->hdrPath, 2, NULL);
>       }
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/lib/verify.c
>  ============================================================================
>  $ cvs diff -u -r2.197 -r2.198 verify.c
>  --- rpm/lib/verify.c	29 Aug 2009 18:51:14 -0000	2.197
>  +++ rpm/lib/verify.c	10 Dec 2009 09:53:44 -0000	2.198
>  @@ -395,7 +395,7 @@
>   	/*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/
>   {
>   #ifdef	NOTYET
>  -    int instance = headerGetInstance(h);
>  +    rpmuint32_t hdrNum = headerGetInstance(h);
>   #endif
>       rpmps ps;
>       int rc = 0;		/* assume no problems */
>  @@ -403,8 +403,8 @@
> 
>       rpmtsEmpty(ts);
>   #ifdef	NOTYET
>  -    if (instance > 0)
>  -	(void) rpmtsAddEraseElement(ts, h, instance);
>  +    if (hdrNum > 0)
>  +	(void) rpmtsAddEraseElement(ts, h, hdrNum);
>       else
>   #endif
>   	(void) rpmtsAddInstallElement(ts, h, NULL, 0, NULL);
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/rpmdb/rpmdb.c
>  ============================================================================
>  $ cvs diff -u -r1.355 -r1.356 rpmdb.c
>  --- rpm/rpmdb/rpmdb.c	9 Dec 2009 21:40:20 -0000	1.355
>  +++ rpm/rpmdb/rpmdb.c	10 Dec 2009 09:53:44 -0000	1.356
>  @@ -2775,7 +2775,7 @@
>       sigset_t signalMask;
>       dbiIndex dbi;
>       size_t dbix;
>  -    uint32_t hdrNum = headerGetInstance(h);
>  +    rpmuint32_t hdrNum = headerGetInstance(h);
>       int ret = 0;
>       int xx;
> 
>  @@ -3404,7 +3404,7 @@
>   	    (void) rpmmiSetHdrChk(mi, ts);
> 
>   	while ((h = rpmmiNext(mi)) != NULL) {
>  -	    uint32_t hdrNum = headerGetInstance(h);
>  +	    rpmuint32_t hdrNum = headerGetInstance(h);
> 
>   /* XXX ensure that the header instance is set persistently. */
>   assert(hdrNum > 0 && hdrNum == rpmmiInstance(mi));
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/tools/rpmrepo.c
>  ============================================================================
>  $ cvs diff -u -r2.22 -r2.23 rpmrepo.c
>  --- rpm/tools/rpmrepo.c	3 Jul 2009 18:11:08 -0000	2.22
>  +++ rpm/tools/rpmrepo.c	10 Dec 2009 09:53:44 -0000	2.23
>  @@ -1133,7 +1133,7 @@
>       if (nsubs > 0) {
>   	char instance[64];
>   	int xx = snprintf(instance, sizeof(instance), "'%u'",
>  -		(unsigned) headerGetInstance(h));
>  +		(rpmuint32_t) headerGetInstance(h));
>   	size_t tlen = strlen(s) + nsubs * ((int)strlen(instance) - (int)nmark);
>   	char * t = xmalloc(tlen + 1);
>   	char * te = t;
>  @@ .
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> CVS Sources Repository                                rpm-cvs@rpm5.org

______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic