RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmchecksig.c rpm/rpmdb/ pkgio.c rpmw...

From: Jeff Johnson <jbj@rpm5.org>
Date: Fri 23 Nov 2007 - 17:35:43 CET
Message-Id: <20071123163543.BB297348455@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:   23-Nov-2007 17:35:43
  Branch: HEAD                             Handle: 2007112316354201

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpmchecksig.c
    rpm/rpmdb               pkgio.c rpmwf.c
    rpm/rpmio               rpmxar.c

  Log:
    - spiffy error msgs for the XAR challenged users.

  Summary:
    Revision    Changes     Path
    1.1874      +1  -0      rpm/CHANGES
    1.196       +10 -7      rpm/lib/rpmchecksig.c
    1.57        +26 -17     rpm/rpmdb/pkgio.c
    1.18        +0  -4      rpm/rpmdb/rpmwf.c
    2.6         +23 -6      rpm/rpmio/rpmxar.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1873 -r1.1874 CHANGES
  --- rpm/CHANGES	23 Nov 2007 07:06:01 -0000	1.1873
  +++ rpm/CHANGES	23 Nov 2007 16:35:42 -0000	1.1874
  @@ -1,4 +1,5 @@
   5.0a2 -> 5.0a3:
  +    - jbj: spiffy error msgs for the XAR challenged users.
       - jbj: splint fiddles for rpmxar and rpmTag.
       - jbj: bury timedRead in pkgio.c, eliminate everywhere else.
       - jbj: eliminate (unused) hPTR_t.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.195 -r1.196 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	23 Nov 2007 12:12:32 -0000	1.195
  +++ rpm/lib/rpmchecksig.c	23 Nov 2007 16:35:43 -0000	1.196
  @@ -832,18 +832,21 @@
   	h = headerFree(h);
       }
   
  -#ifdef WITH_XAR
  -if (xar != NULL) {
  -    if ((xx = rpmxarNext(xar)) != 0)	return RPMRC_FAIL;
  -    if ((xx = rpmxarPull(xar, "Payload")) != 0) return RPMRC_FAIL;
  -}
  -#endif
  +    if (xar != NULL) {
  +	const char item[] = "Payload";
  +	if ((xx = rpmxarNext(xar)) != 0 || (xx = rpmxarPull(xar, item)) != 0) {
  +	    rpmlog(RPMLOG_ERR, "%s: %s: %s\n", fn, item,
  +		_("XAR file not found (or no XAR support)"));
  +	    rc = RPMRC_NOTFOUND;
  +	    goto exit;
  +	}
  +    }
   
       /* Read the payload from the package. */
       while ((count = Fread(buf, sizeof(buf[0]), sizeof(buf), fd)) > 0)
   	dig->nbytes += count;
       if (count < 0 || Ferror(fd)) {
  -	rpmlog(RPMLOG_ERR, _("%s: Fread failed: %s\n"), fn, Fstrerror(fd));
  +	rpmlog(RPMLOG_ERR, "%s: %s: %s\n", fn, _("Fread failed"), Fstrerror(fd));
   	rc = RPMRC_FAIL;
   	goto exit;
       }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.56 -r1.57 pkgio.c
  --- rpm/rpmdb/pkgio.c	23 Nov 2007 12:12:32 -0000	1.56
  +++ rpm/rpmdb/pkgio.c	23 Nov 2007 16:35:43 -0000	1.57
  @@ -494,7 +494,6 @@
   	goto exit;
       }
   
  -#ifdef WITH_XAR
       /* Attach rpmxar handler to fd if this is a xar archive. */
       if (xar == NULL) {
   	unsigned char * bh = (unsigned char *)l;
  @@ -511,21 +510,25 @@
       if (xar != NULL) {
   	void *b = NULL;
   	size_t nb = 0;
  -	if ((xx = rpmxarNext(xar)) != 0)	return RPMRC_FAIL;
  -	if ((xx = rpmxarPull(xar, "Lead")) != 0) return RPMRC_FAIL;
  +	const char item[] = "Lead";
  +	if ((xx = rpmxarNext(xar)) != 0 || (xx = rpmxarPull(xar, item)) != 0) {
  +	    (void) snprintf(buf, sizeof(buf),
  +		_("XAR file not found (or no XAR support)"));
  +	    rc = RPMRC_NOTFOUND;
  +	    goto exit;
  +	}
   	(void) rpmxarSwapBuf(xar, NULL, 0, (char **)&b, &nb);
   	if (nb != sizeof(*l)) {
   	    b = _free(b);
   	    (void) snprintf(buf, sizeof(buf),
   		_("lead size(%u): BAD, xar read(%u)"),
   		(unsigned)sizeof(*l), (unsigned)nb);
  -	    rc = RPMRC_NOTFOUND;
  +	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
   	memcpy(l, b, nb);
   	b = _free(b);
       }
  -#endif
   
       l->type = (unsigned short) ntohs(l->type);
       l->archnum = (unsigned short) ntohs(l->archnum);
  @@ -682,12 +685,15 @@
   	*sighp = NULL;
   
       memset(block, 0, sizeof(block));
  -#ifdef WITH_XAR
  -if (xar != NULL) {
  -    if ((xx = rpmxarNext(xar)) != 0)	return RPMRC_FAIL;
  -    if ((xx = rpmxarPull(xar, "Signature")) != 0) return RPMRC_FAIL;
  -}
  -#endif
  +    if (xar != NULL) {
  +	const char item[] = "Signature";
  +	if ((xx = rpmxarNext(xar)) != 0 || (xx = rpmxarPull(xar, item)) != 0) {
  +	    (void) snprintf(buf, sizeof(buf),
  +		_("XAR file not found (or no XAR support)"));
  +	    rc = RPMRC_NOTFOUND;
  +	    goto exit;
  +	}
  +    }
       if ((xx = (int) timedRead(fd, (void *)block, sizeof(block))) != (int) sizeof(block)) {
   	(void) snprintf(buf, sizeof(buf),
   		_("sigh size(%d): BAD, read returned %d\n"), (int)sizeof(block), xx);
  @@ -1246,12 +1252,15 @@
   	*hdrp = NULL;
   
       memset(block, 0, sizeof(block));
  -#ifdef WITH_XAR
  -if (xar != NULL) {
  -    if ((xx = rpmxarNext(xar)) != 0)	return RPMRC_FAIL;
  -    if ((xx = rpmxarPull(xar, "Header")) != 0) return RPMRC_FAIL;
  -}
  -#endif
  +    if (xar != NULL) {
  +	const char item[] = "Header";
  +	if ((xx = rpmxarNext(xar)) != 0 || (xx = rpmxarPull(xar, item)) != 0) {
  +	    (void) snprintf(buf, sizeof(buf),
  +		_("XAR file not found (or no XAR support)"));
  +	    rc = RPMRC_NOTFOUND;
  +	    goto exit;
  +	}
  +    }
       if ((xx = (int) timedRead(fd, (char *)block, sizeof(block))) != (int)sizeof(block)) {
   	(void) snprintf(buf, sizeof(buf),
   		_("hdr size(%u): BAD, read returned %d\n"), (unsigned)sizeof(block), xx);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.c
  ============================================================================
  $ cvs diff -u -r1.17 -r1.18 rpmwf.c
  --- rpm/rpmdb/rpmwf.c	23 Nov 2007 12:12:32 -0000	1.17
  +++ rpm/rpmdb/rpmwf.c	23 Nov 2007 16:35:43 -0000	1.18
  @@ -16,8 +16,6 @@
   /*@unchecked@*/
   int _rpmwf_debug = 0;
   
  -#if defined(WITH_XAR)
  -
   rpmRC rpmwfPushXAR(rpmwf wf, const char * fn)
   {
       char * b = NULL;
  @@ -341,5 +339,3 @@
   
       return rc;
   }
  -
  -#endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmxar.c
  ============================================================================
  $ cvs diff -u -r2.5 -r2.6 rpmxar.c
  --- rpm/rpmio/rpmxar.c	23 Nov 2007 07:06:01 -0000	2.5
  +++ rpm/rpmio/rpmxar.c	23 Nov 2007 16:35:43 -0000	2.6
  @@ -1,4 +1,6 @@
   #include "system.h"
  +
  +#undef WITH_XAR
   #ifdef HAVE_XAR_H
   #include "xar.h"
   #endif
  @@ -15,8 +17,6 @@
   /*@unchecked@*/
   int _xar_debug = 0;
   
  -#if defined(WITH_XAR)
  -
   rpmxar XrpmxarUnlink(rpmxar xar, const char * msg, const char * fn, unsigned ln)
   {
       if (xar == NULL) return NULL;
  @@ -44,12 +44,12 @@
   rpmxar rpmxarFree(rpmxar xar)
   {
       if (xar) {
  -	int xx;
   
   /*@-onlytrans@*/
   	if (xar->nrefs > 1)
   	    return rpmxarUnlink(xar, "rpmxarFree");
   
  +#if defined(WITH_XAR)
   	if (xar->i) {
   /*@-noeffectuncon@*/
   	    xar_iter_free(xar->i);
  @@ -57,11 +57,13 @@
   	    xar->i = NULL;
   	}
   	if (xar->x) {
  +	    int xx;
   /*@-noeffectuncon@*/
   	    xx = xar_close(xar->x);
   /*@=noeffectuncon@*/
   	    xar->x = NULL;
   	}
  +#endif	/* WITH_XAR */
   
   	xar->member = _free(xar->member);
   	xar->b = _free(xar->b);
  @@ -79,9 +81,12 @@
   rpmxar rpmxarNew(const char * fn, const char * fmode)
   {
       rpmxar xar = xcalloc(1, sizeof(*xar));
  +#if defined(WITH_XAR)
       int flags = ((fmode && *fmode == 'w') ? WRITE : READ);
  +#endif	/* WITH_XAR */
   
   assert(fn != NULL);
  +#if defined(WITH_XAR)
   /*@-moduncon@*/
       xar->x = xar_open(fn, flags);
       if (flags == READ) {
  @@ -89,6 +94,7 @@
   	xar->first = 1;
       }
   /*@=moduncon@*/
  +#endif	/* WITH_XAR */
       return rpmxarLink(xar, "rpmxarNew");
   }
   
  @@ -96,6 +102,8 @@
   {
   if (_xar_debug)
   fprintf(stderr, "*** rpmxarNext(%p) first %d\n", xar, xar->first);
  +
  +#if defined(WITH_XAR)
   /*@-moduncon@*/
       if (xar->first) {
   	xar->f = xar_file_first(xar->x, xar->i);
  @@ -103,6 +111,7 @@
       } else
   	xar->f = xar_file_next(xar->i);
   /*@=moduncon@*/
  +#endif	/* WITH_XAR */
   
       return (xar->f == NULL ? 1 : 0);
   }
  @@ -110,9 +119,11 @@
   int rpmxarPush(rpmxar xar, const char * fn)
   {
       if (xar->x && xar->b != NULL) {
  +#if defined(WITH_XAR)
   /*@-moduncon@*/
   	xar->f = xar_add_frombuffer(xar->x, NULL, fn, xar->b, xar->bsize);
   /*@=moduncon@*/
  +#endif
   	if (xar->f == NULL)
   	    return 2;
       }
  @@ -121,14 +132,18 @@
   
   int rpmxarPull(rpmxar xar, const char * fn)
   {
  +#if defined(WITH_XAR)
   /*@-moduncon@*/
       const char * path = xar_get_path(xar->f);
   /*@=moduncon@*/
  -    int rc;
  +#else
  +    const char * path = xstrdup("*No XAR*");
  +#endif	/* WITH_XAR */
  +    int rc = 1;
   
       if (fn != NULL && strcmp(fn, path)) {
   	path = _free(path);
  -	return 1;
  +	return rc;
       }
       xar->member = _free(xar->member);
       xar->member = path;
  @@ -136,9 +151,12 @@
       xar->b = _free(xar->b);
       xar->bsize = xar->bx = 0;
   
  +#if defined(WITH_XAR)
   /*@-moduncon -nullstate @*/
       rc = (int) xar_extract_tobuffersz(xar->x, xar->f, &xar->b, &xar->bsize);
   /*@=moduncon =nullstate @*/
  +#endif	/* WITH_XAR */
  +
   if (_xar_debug)
   fprintf(stderr, "*** %s %p[%lu] rc %d\n", xar->member, xar->b, (unsigned long)xar->bsize, rc);
       if (rc)
  @@ -204,4 +222,3 @@
   
       return rc;
   }
  -#endif
  @@ .
Received on Fri Nov 23 17:35:43 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.