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 19:29:02
Branch: HEAD Handle: 2007112318290101
Modified files:
rpm CHANGES
rpm/rpmdb rpmwf.c rpmwf.h
rpm/rpmio rpmxar.c rpmxar.h
Log:
- rescusitate txar, pass private buffer through rpmxarPush.
Summary:
Revision Changes Path
1.1876 +1 -0 rpm/CHANGES
1.19 +34 -25 rpm/rpmdb/rpmwf.c
1.9 +2 -2 rpm/rpmdb/rpmwf.h
2.8 +16 -5 rpm/rpmio/rpmxar.c
2.6 +1 -1 rpm/rpmio/rpmxar.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1875 -r1.1876 CHANGES
--- rpm/CHANGES 23 Nov 2007 16:55:42 -0000 1.1875
+++ rpm/CHANGES 23 Nov 2007 18:29:01 -0000 1.1876
@@ -1,4 +1,5 @@
5.0a2 -> 5.0a3:
+ - jbj: rescusitate txar, pass private buffer through rpmxarPush.
- jbj: re-add rpm2cpio.c.
- jbj: spiffy error msgs for the XAR challenged users.
- jbj: splint fiddles for rpmxar and rpmTag.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmwf.c
============================================================================
$ cvs diff -u -r1.18 -r1.19 rpmwf.c
--- rpm/rpmdb/rpmwf.c 23 Nov 2007 16:35:43 -0000 1.18
+++ rpm/rpmdb/rpmwf.c 23 Nov 2007 18:29:01 -0000 1.19
@@ -39,8 +39,10 @@
nb = wf->np;
}
- xx = rpmxarSwapBuf(wf->xar, b, nb, NULL, NULL);
- xx = rpmxarPush(wf->xar, fn);
+if (_rpmwf_debug)
+fprintf(stderr, "==> rpmwfPushXAR(%p, %s) %p[%u]\n", wf, fn, b, (unsigned) nb);
+
+ xx = rpmxarPush(wf->xar, fn, b, nb);
return (xx == 0 ? RPMRC_OK : RPMRC_FAIL);
}
@@ -56,6 +58,9 @@
return RPMRC_NOTFOUND;
xx = rpmxarSwapBuf(wf->xar, NULL, 0, &b, &nb);
+if (_rpmwf_debug)
+fprintf(stderr, "==> rpmwfPullXAR(%p, %s) %p[%u]\n", wf, fn, b, (unsigned) nb);
+
if (!strcmp(fn, "Lead")) {
wf->l = b;
wf->nl = nb;
@@ -77,10 +82,13 @@
return rc;
}
-rpmRC rpmwfFiniRPM(rpmwf wf)
+rpmRC rpmwfFini(rpmwf wf)
{
int xx;
+if (_rpmwf_debug)
+fprintf(stderr, "==> rpmwfFini(%p)\n", wf);
+
if (wf->b && wf->b != (void *)-1) {
xx = munmap(wf->b, wf->nb);
wf->b = NULL;
@@ -98,10 +106,10 @@
return (8 + 8 + 16 * ntohl(p[2]) + ntohl(p[3]));
}
-rpmRC rpmwfInitRPM(rpmwf wf, const char * fn, const char * fmode)
+rpmRC rpmwfInit(rpmwf wf, const char * fn, const char * fmode)
{
if (_rpmwf_debug)
-fprintf(stderr, "*** rpmwfInitRPM(%p, %s, %s)\n", wf, fn, fmode);
+fprintf(stderr, "==> rpmwfInit(%p, %s, %s)\n", wf, fn, fmode);
if (fn == NULL)
fn = wf->fn;
assert(fn != NULL);
@@ -109,10 +117,8 @@
/*@-globs@*/
wf->fd = Fopen(fn, fmode);
/*@=globs@*/
-if (_rpmwf_debug)
-fprintf(stderr, "*** Fopen(%s, %s) fd %p nb %u\n", fn, fmode, wf->fd, (unsigned)wf->nb);
if (wf->fd == NULL || Ferror(wf->fd)) {
- (void) rpmwfFiniRPM(wf);
+ (void) rpmwfFini(wf);
return RPMRC_NOTFOUND;
}
@@ -121,7 +127,7 @@
if (wf->b == (void *)-1) {
wf->b = NULL;
- (void) rpmwfFiniRPM(wf);
+ (void) rpmwfFini(wf);
return RPMRC_NOTFOUND;
}
@@ -168,7 +174,10 @@
if (!(b && nb > 0))
return RPMRC_NOTFOUND;
- if (Fwrite(b, 1, nb, wf->fd) != nb)
+if (_rpmwf_debug)
+fprintf(stderr, "==> rpmwfPushRPM(%p, %s) %p[%u]\n", wf, fn, b, (unsigned) nb);
+
+ if (Fwrite(b, sizeof(b[0]), nb, wf->fd) != nb)
return RPMRC_FAIL;
return RPMRC_OK;
@@ -179,7 +188,7 @@
if (wf == NULL) return NULL;
/*@-modfilesys@*/
if (_rpmwf_debug && msg != NULL)
-fprintf(stderr, "--> wf %p -- %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
+fprintf(stderr, "--> wf %p -- %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
/*@=modfilesys@*/
wf->nrefs--;
return NULL;
@@ -192,7 +201,7 @@
/*@-modfilesys@*/
if (_rpmwf_debug && msg != NULL)
-fprintf(stderr, "--> wf %p ++ %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
+fprintf(stderr, "--> wf %p ++ %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
/*@=modfilesys@*/
/*@-refcounttrans@*/ return wf; /*@=refcounttrans@*/
@@ -216,7 +225,7 @@
}
wf->xar = rpmxarFree(wf->xar);
- (void) rpmwfFiniRPM(wf);
+ (void) rpmwfFini(wf);
wf->fn = _free(wf->fn);
@@ -244,9 +253,6 @@
wf->fn = xstrdup(fn);
wf->nb = st->st_size;
-if (_rpmwf_debug)
-fprintf(stderr, "*** rpmwfNew(%s) wf %p nb %u\n", wf->fn, wf, (unsigned)wf->nb);
-
return rpmwfLink(wf, "rpmwfNew");
}
@@ -258,13 +264,13 @@
if ((wf = rpmwfNew(rpmfn)) == NULL)
return wf;
- if ((rc = rpmwfInitRPM(wf, NULL, "r")) != RPMRC_OK) {
+ if ((rc = rpmwfInit(wf, NULL, "r")) != RPMRC_OK) {
wf = rpmwfFree(wf);
return NULL;
}
if (_rpmwf_debug)
-fprintf(stderr, "*** rdRPM(%s) wf %p\n", rpmfn, wf);
+fprintf(stderr, "==> rdRPM(%s) wf %p\n\tLead %p[%u]\n\tSignature %p[%u]\n\tHeader %p[%u]\n\tPayload %p[%u]\n", rpmfn, wf, wf->l, (unsigned)wf->nl, wf->s, (unsigned) wf->ns, wf->h, (unsigned) wf->nh, wf->p, (unsigned) wf->np);
return wf;
}
@@ -282,13 +288,14 @@
wf = rpmwfFree(wf);
return NULL;
}
-if (_rpmwf_debug)
-fprintf(stderr, "*** rdXAR(%s) wf %p xar %p\n", xarfn, wf, wf->xar);
while (rpmxarNext(wf->xar) == 0)
rc = rpmwfPullXAR(wf, NULL);
-
wf->xar = rpmxarFree(wf->xar);
+
+if (_rpmwf_debug)
+fprintf(stderr, "==> rdXAR(%s) wf %p\n\tLead %p[%u]\n\tSignature %p[%u]\n\tHeader %p[%u]\n\tPayload %p[%u]\n", xarfn, wf, wf->l, (unsigned)wf->nl, wf->s, (unsigned) wf->ns, wf->h, (unsigned) wf->nh, wf->p, (unsigned) wf->np);
+
return wf;
}
@@ -297,7 +304,8 @@
rpmRC rc;
if (_rpmwf_debug)
-fprintf(stderr, "*** wrXAR(%s, %p)\n", xarfn, wf);
+fprintf(stderr, "==> wrXAR(%s) wf %p\n\tLead %p[%u]\n\tSignature %p[%u]\n\tHeader %p[%u]\n\tPayload %p[%u]\n", xarfn, wf, wf->l, (unsigned)wf->nl, wf->s, (unsigned) wf->ns, wf->h, (unsigned) wf->nh, wf->p, (unsigned) wf->np);
+
wf->xar = rpmxarNew(xarfn, "w");
if (wf->xar == NULL)
return RPMRC_FAIL;
@@ -320,10 +328,11 @@
{
rpmRC rc;
- if ((rc = rpmwfInitRPM(wf, rpmfn, "w")) != RPMRC_OK)
+ if ((rc = rpmwfInit(wf, rpmfn, "w")) != RPMRC_OK)
goto exit;
+
if (_rpmwf_debug)
-fprintf(stderr, "*** wrRPM(%s, %p)\n", rpmfn, wf);
+fprintf(stderr, "==> wrRPM(%s) wf %p\n\tLead %p[%u]\n\tSignature %p[%u]\n\tHeader %p[%u]\n\tPayload %p[%u]\n", rpmfn, wf, wf->l, (unsigned)wf->nl, wf->s, (unsigned) wf->ns, wf->h, (unsigned) wf->nh, wf->p, (unsigned) wf->np);
if ((rc = rpmwfPushRPM(wf, "Lead")) != RPMRC_OK)
goto exit;
@@ -335,7 +344,7 @@
goto exit;
exit:
- (void) rpmwfFiniRPM(wf);
+ (void) rpmwfFini(wf);
return rc;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmwf.h
============================================================================
$ cvs diff -u -r1.8 -r1.9 rpmwf.h
--- rpm/rpmdb/rpmwf.h 23 Nov 2007 07:06:01 -0000 1.8
+++ rpm/rpmdb/rpmwf.h 23 Nov 2007 18:29:01 -0000 1.9
@@ -55,11 +55,11 @@
/*@globals fileSystem @*/
/*@modifies wf, fileSystem @*/;
-rpmRC rpmwfFiniRPM(rpmwf wf)
+rpmRC rpmwfFini(rpmwf wf)
/*@globals fileSystem @*/
/*@modifies wf, fileSystem @*/;
-rpmRC rpmwfInitRPM(rpmwf wf, const char * fn, const char * fmode)
+rpmRC rpmwfInit(rpmwf wf, const char * fn, const char * fmode)
/*@globals fileSystem @*/
/*@modifies wf, fileSystem @*/;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmxar.c
============================================================================
$ cvs diff -u -r2.7 -r2.8 rpmxar.c
--- rpm/rpmio/rpmxar.c 23 Nov 2007 16:37:24 -0000 2.7
+++ rpm/rpmio/rpmxar.c 23 Nov 2007 18:29:02 -0000 2.8
@@ -99,8 +99,10 @@
int rpmxarNext(rpmxar xar)
{
+/*@-modfilesys@*/
if (_xar_debug)
-fprintf(stderr, "*** rpmxarNext(%p) first %d\n", xar, xar->first);
+fprintf(stderr, "--> rpmxarNext(%p) first %d\n", xar, xar->first);
+/*@=modfilesys@*/
#if defined(WITH_XAR)
/*@-moduncon@*/
@@ -115,12 +117,17 @@
return (xar->f == NULL ? 1 : 0);
}
-int rpmxarPush(rpmxar xar, const char * fn)
+int rpmxarPush(rpmxar xar, const char * fn, char * b, size_t bsize)
{
- if (xar->x && xar->b != NULL) {
+/*@-modfilesys@*/
+if (_xar_debug)
+fprintf(stderr, "--> rpmxarPush(%p, %s) %p[%u]\n", xar, fn, b, (unsigned)bsize);
+/*@=modfilesys@*/
+
+ if (xar->x && b != NULL) {
#if defined(WITH_XAR)
/*@-moduncon@*/
- xar->f = xar_add_frombuffer(xar->x, NULL, fn, xar->b, xar->bsize);
+ xar->f = xar_add_frombuffer(xar->x, NULL, fn, b, bsize);
/*@=moduncon@*/
#endif
if (xar->f == NULL)
@@ -156,8 +163,11 @@
/*@=moduncon =nullstate @*/
#endif /* WITH_XAR */
+/*@-modfilesys@*/
if (_xar_debug)
-fprintf(stderr, "*** %s %p[%lu] rc %d\n", xar->member, xar->b, (unsigned long)xar->bsize, rc);
+fprintf(stderr, "--> rpmxarPull(%p, %s) %p[%u] rc %d\n", xar, fn, xar->b, (unsigned)xar->bsize, rc);
+/*@=modfilesys@*/
+
if (rc)
return 1;
@@ -171,6 +181,7 @@
if (_xar_debug)
fprintf(stderr, "*** rpmxarSwapBuf(%p, %p[%u], %p, %p) %p[%u]\n", xar, b, (unsigned) bsize, obp, obsizep, xar->b, (unsigned) xar->bsize);
/*@=modfilesys@*/
+
if (xar) {
if (obsizep != NULL)
*obsizep = xar->bsize;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmxar.h
============================================================================
$ cvs diff -u -r2.5 -r2.6 rpmxar.h
--- rpm/rpmio/rpmxar.h 23 Nov 2007 07:06:01 -0000 2.5
+++ rpm/rpmio/rpmxar.h 23 Nov 2007 18:29:02 -0000 2.6
@@ -89,7 +89,7 @@
/*@globals fileSystem @*/
/*@modifies xar, fileSystem @*/;
-int rpmxarPush(rpmxar xar, const char * fn)
+int rpmxarPush(rpmxar xar, const char * fn, char * b, size_t bsize)
/*@modifies xar @*/;
int rpmxarPull(rpmxar xar, /*@null@*/ const char * fn)
@@ .
Received on Fri Nov 23 19:29:02 2007