RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ pack.c rpm/lib/ package.c psm.c rpm...

From: Jeff Johnson <jbj@rpm5.org>
Date: Mon 19 Nov 2007 - 21:55:12 CET
Message-Id: <20071119205512.E976334845D@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:   19-Nov-2007 21:55:12
  Branch: HEAD                             Handle: 2007111920551101

  Modified files:
    rpm                     CHANGES system.h
    rpm/build               pack.c
    rpm/lib                 package.c psm.c
    rpm/rpmdb               pkgio.c

  Log:
    - jbj: eliminate 2 of 3 remaining uses of headerWrite.

  Summary:
    Revision    Changes     Path
    1.1850      +2  -0      rpm/CHANGES
    2.252       +42 -24     rpm/build/pack.c
    2.185       +1  -1      rpm/lib/package.c
    2.263       +9  -2      rpm/lib/psm.c
    1.40        +8  -3      rpm/rpmdb/pkgio.c
    2.103       +1  -1      rpm/system.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1849 -r1.1850 CHANGES
  --- rpm/CHANGES	19 Nov 2007 18:57:54 -0000	1.1849
  +++ rpm/CHANGES	19 Nov 2007 20:55:11 -0000	1.1850
  @@ -1,4 +1,6 @@
   5.0a2 -> 5.0a3:
  +    - jbj: eliminate 2 of 3 remaining uses of headerWrite.
  +    - jbj: fix: initialize _nolead to 0, not 1.
       - jbj: add "struct utimbuf" and "struct utsname" to eliminate perl wanings.
       - jbj: adjust includes throughout.
       - jbj: move popt.h from rpmlib.h to rpmcli.h, most routines don't need.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.251 -r2.252 pack.c
  --- rpm/build/pack.c	19 Nov 2007 17:07:46 -0000	2.251
  +++ rpm/build/pack.c	19 Nov 2007 20:55:12 -0000	2.252
  @@ -608,6 +608,7 @@
       const char * rpmio_flags = NULL;
       const char * payload_format = NULL;
       const char * SHA1 = NULL;
  +    const char * msg = NULL;
       char *s;
       char buf[BUFSIZ];
       Header h;
  @@ -725,24 +726,32 @@
   	goto exit;
       }
   
  +    /* Write the header to a temp file, computing header SHA1 on the fly. */
       fdInitDigest(fd, PGPHASHALGO_SHA1, 0);
  -    if (headerWrite(fd, h)) {
  -	rpmlog(RPMLOG_ERR, _("Unable to write temp header\n"));
  -	rc = RPMRC_FAIL;
  -    } else { /* Write the archive and get the size */
  -	(void) Fflush(fd);
  -	fdFiniDigest(fd, PGPHASHALGO_SHA1, &SHA1, NULL, 1);
  -	if (csa->cpioList != NULL) {
  -	    rc = cpio_doio(fd, h, csa, payload_format, rpmio_flags);
  -	} else if (Fileno(csa->cpioFdIn) >= 0) {
  -	    rc = cpio_copy(fd, csa);
  -	} else {
  -assert(0);
  +    {	const char item[] = "Header";
  +	msg = NULL;
  +	rc = rpmpkgWrite(item, fd, h, &msg);
  +	if (rc != RPMRC_OK) {
  +	    rpmlog(RPMLOG_ERR, "%s: %s: %s", sigtarget, item,
  +		(msg && *msg ? msg : "write failed\n"));
  +	    msg = _free(msg);
  +	    rc = RPMRC_FAIL;
  +	    goto exit;
   	}
  +	(void) Fflush(fd);
       }
  +    fdFiniDigest(fd, PGPHASHALGO_SHA1, &SHA1, NULL, 1);
  +
  +    /* Append the payload to the temp file. */
  +    if (csa->cpioList != NULL)
  +	rc = cpio_doio(fd, h, csa, payload_format, rpmio_flags);
  +    else if (Fileno(csa->cpioFdIn) >= 0)
  +	rc = cpio_copy(fd, csa);
  +    else
  +assert(0);
  +
       rpmio_flags = _free(rpmio_flags);
       payload_format = _free(payload_format);
  -
       if (rc != RPMRC_OK)
   	goto exit;
   
  @@ -803,6 +812,7 @@
   	const char item[] = "Lead";
   	size_t nl = rpmpkgSizeof(item, NULL);
   
  +	msg = NULL;
   	if (nl == 0)
   	    rc = RPMRC_FAIL;
   	else {
  @@ -826,8 +836,12 @@
       if (!_nosigh) {
   	const char item[] = "Signature";
   
  -	rc = rpmpkgWrite(item, fd, sigh, NULL);
  +	msg = NULL;
  +	rc = rpmpkgWrite(item, fd, sigh, &msg);
   	if (rc != RPMRC_OK) {
  +	    rpmlog(RPMLOG_ERR, "%s: %s: %s", fileName, item,
  +                (msg && *msg ? msg : "write failed\n"));
  +	    msg = _free(msg);
   	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
  @@ -843,12 +857,15 @@
       }
   
       /* Add signatures to header, and write header into the package. */
  -    /* XXX header+payload digests/signatures might be checked again here. */
  -    {	Header nh = headerRead(ifd);
  +    {	const char item[] = "Header";
  +	Header nh = NULL;
   
  -	if (nh == NULL) {
  -	    rpmlog(RPMLOG_ERR, _("Unable to read header from %s: %s\n"),
  -			sigtarget, Fstrerror(ifd));
  +	msg = NULL;
  +	rc = rpmpkgRead(item, fd, &nh, &msg);
  +	if (rc != RPMRC_OK) {
  +	    rpmlog(RPMLOG_ERR, "%s: %s: %s", sigtarget, item,
  +                (msg && *msg ? msg : "read failed\n"));
  +	    msg = _free(msg);
   	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
  @@ -857,12 +874,13 @@
   	(void) headerMergeLegacySigs(nh, sigh);
   #endif
   
  -	xx = headerWrite(fd, nh);
  +	msg = NULL;
  +	rc = rpmpkgWrite(item, fd, nh, &msg);
   	nh = headerFree(nh);
  -
  -	if (xx) {
  -	    rpmlog(RPMLOG_ERR, _("Unable to write header to %s: %s\n"),
  -			fileName, Fstrerror(fd));
  +	if (rc != RPMRC_OK) {
  +	    rpmlog(RPMLOG_ERR, "%s: %s: %s", fileName, item,
  +                (msg && *msg ? msg : "write failed\n"));
  +	    msg = _free(msg);
   	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.184 -r2.185 package.c
  --- rpm/lib/package.c	19 Nov 2007 18:57:54 -0000	2.184
  +++ rpm/lib/package.c	19 Nov 2007 20:55:12 -0000	2.185
  @@ -145,7 +145,7 @@
       switch (rc) {
       default:
   	rpmlog(RPMLOG_ERR, "%s: %s: %s", fn, item,
  -		(msg && *msg ? msg : "\n"));
  +		(msg && *msg ? msg : _("read failed\n")));
   	msg = _free(msg);
   	goto exit;
   	/*@notreached@*/ break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.262 -r2.263 psm.c
  --- rpm/lib/psm.c	19 Nov 2007 18:57:54 -0000	2.262
  +++ rpm/lib/psm.c	19 Nov 2007 20:55:12 -0000	2.263
  @@ -1961,8 +1961,15 @@
   	    }
   
   	    /* Write the metadata section into the package. */
  -	    rc = headerWrite(psm->fd, psm->oh);
  -	    if (rc) break;
  +	    {	const char item[] = "Header";
  +		const char * msg = NULL;
  +		rc = rpmpkgWrite(item, psm->fd, psm->oh, &msg);
  +		if (rc != RPMRC_OK) {
  +		    rpmlog(RPMLOG_ERR, "%s: %s: %s", psm->pkgfn, item,
  +			(msg && *msg ? msg : "write failed\n"));
  +		    msg = _free(msg);
  +		}
  +	    }
   	}
   	break;
       case PSM_PROCESS:
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.39 -r1.40 pkgio.c
  --- rpm/rpmdb/pkgio.c	19 Nov 2007 18:57:59 -0000	1.39
  +++ rpm/rpmdb/pkgio.c	19 Nov 2007 20:55:12 -0000	1.40
  @@ -1269,9 +1269,11 @@
   } else {
       h = headerRead(fd);
   }
  -    if (h == NULL)
  +    if (h == NULL) {
  +	if (msg)
  +	    *msg = xstrdup(Fstrerror(fd));
   	rc = RPMRC_FAIL;
  -    else if (hdrp) {
  +    } else if (hdrp) {
   	*hdrp = headerLink(h);
   	h = headerFree(h);
       }
  @@ -1295,8 +1297,11 @@
       int xx;
   
       xx = headerWrite(fd, h);
  -    if (xx)
  +    if (xx) {
  +	if (msg)
  +	    *msg = xstrdup(Fstrerror(fd));
   	rc = RPMRC_FAIL;
  +    }
   
       return rc;
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/system.h
  ============================================================================
  $ cvs diff -u -r2.102 -r2.103 system.h
  --- rpm/system.h	17 Nov 2007 18:05:22 -0000	2.102
  +++ rpm/system.h	19 Nov 2007 20:55:11 -0000	2.103
  @@ -725,7 +725,7 @@
   #include <search.h>
   #endif
   
  -#define	SUPPORT_RPMLEAD		1	/* XXX default is add lead. */
  +#define	SUPPORT_RPMLEAD		0	/* XXX default is add lead. */
   
   /**
    * Mark --initdb and --verifydb for destruction.
  @@ .
Received on Mon Nov 19 21:55:13 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.