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