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: Wed 21 Nov 2007 - 19:21:48 CET
Message-Id: <20071121182148.474BB34845C@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:   21-Nov-2007 19:21:48
  Branch: HEAD                             Handle: 2007112118214601

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

  Log:
    - switch to using rpmxar instead of rpmwf most everywhere.

  Summary:
    Revision    Changes     Path
    1.1864      +1  -0      rpm/CHANGES
    1.190       +3  -5      rpm/lib/rpmchecksig.c
    1.50        +14 -10     rpm/rpmdb/pkgio.c
    1.13        +18 -147    rpm/rpmdb/rpmwf.c
    1.7         +2  -18     rpm/rpmdb/rpmwf.h
    2.18        +4  -2      rpm/rpmio/librpmio.vers
    2.2         +62 -33     rpm/rpmio/rpmxar.c
    2.2         +42 -4      rpm/rpmio/rpmxar.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1863 -r1.1864 CHANGES
  --- rpm/CHANGES	21 Nov 2007 15:28:02 -0000	1.1863
  +++ rpm/CHANGES	21 Nov 2007 18:21:46 -0000	1.1864
  @@ -1,4 +1,5 @@
   5.0a2 -> 5.0a3:
  +    - jbj: switch to using rpmxar instead of rpmwf most everywhere.
       - jbj: stub in rpmio/rpmxar.c xar payload extraction.
       - jbj: create rpmWriteHeader with error msg returns.
       - jbj: use rpmReadHeader with error msg returns.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.189 -r1.190 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	20 Nov 2007 21:45:22 -0000	1.189
  +++ rpm/lib/rpmchecksig.c	21 Nov 2007 18:21:47 -0000	1.190
  @@ -15,9 +15,7 @@
   #include "rpmdb.h"
   #include "rpmgi.h"
   
  -#ifdef WITH_XAR
  -#include "xar.h"
  -#endif
  +#include <rpmxar.h>
   #define	_RPMWF_INTERNAL
   #include <rpmwf.h>
   #include <pkgio.h>
  @@ -800,7 +798,7 @@
       {	Header h = NULL;
   	const char item[] = "Header";
   	const char * msg = NULL;
  -	rc = rpmpkgRead(item, fd, &h, msg);
  +	rc = rpmpkgRead(item, fd, &h, &msg);
   	if (rc != RPMRC_OK) {
   	    rpmlog(RPMLOG_ERR, "%s: %s: %s\n", fn, item, msg);
   	    msg = _free(msg);
  @@ -874,7 +872,7 @@
   if (wf != NULL) {
       if (dig->md5ctx)
   	(void) rpmDigestUpdate(dig->md5ctx, wf->h, wf->nh);
  -    if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
  +    if ((xx = rpmxarNext(wf->xar)) != 0)	return RPMRC_FAIL;
       if ((rc = rpmwfPullXAR(wf, "Payload")) != RPMRC_OK) return rc;
       if (dig->md5ctx)
   	(void) rpmDigestUpdate(dig->md5ctx, wf->p, wf->np);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.49 -r1.50 pkgio.c
  --- rpm/rpmdb/pkgio.c	21 Nov 2007 14:24:35 -0000	1.49
  +++ rpm/rpmdb/pkgio.c	21 Nov 2007 18:21:47 -0000	1.50
  @@ -26,9 +26,7 @@
   #define	_RPMTS_INTERNAL
   #include "rpmts.h"
   
  -#ifdef WITH_XAR
  -#include "xar.h"
  -#endif
  +#include <rpmxar.h>
   #define	_RPMWF_INTERNAL
   #include <rpmwf.h>
   
  @@ -475,7 +473,7 @@
       if (leadp != NULL) *leadp = NULL;
   
   if (wf != NULL) {
  -    if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
  +    if ((xx = rpmxarNext(wf->xar)) != 0)	return RPMRC_FAIL;
       if ((rc = rpmwfPullXAR(wf, "Lead")) != RPMRC_OK) return rc;
   assert(wf->nl == sizeof(*l));
       memcpy(l, wf->l, sizeof(*l));
  @@ -652,7 +650,7 @@
   
       memset(block, 0, sizeof(block));
   if (wf != NULL) {
  -    if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
  +    if ((xx = rpmxarNext(wf->xar)) != 0)	return RPMRC_FAIL;
       if ((rc = rpmwfPullXAR(wf, "Signature")) != RPMRC_OK) return rc;
   assert(wf->ns > sizeof(block));
       memcpy(block, wf->s, sizeof(block));
  @@ -1226,7 +1224,7 @@
   
       memset(block, 0, sizeof(block));
   if (wf != NULL) {
  -    if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
  +    if ((xx = rpmxarNext(wf->xar)) != 0)	return RPMRC_FAIL;
       if ((rc = rpmwfPullXAR(wf, "Header")) != RPMRC_OK) return rc;
   assert(wf->nh > sizeof(block));
       memcpy(block, wf->h, sizeof(block));
  @@ -1327,14 +1325,18 @@
       Header * hdrp = ptr;
       Header h = NULL;
       rpmRC rc = RPMRC_OK;
  +    int xx;
   
       if (msg)
   	*msg = NULL;
   
   if (wf != NULL) {
  -    if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
  +uint32_t * ei;
  +    if ((xx = rpmxarNext(wf->xar)) != 0)	return RPMRC_FAIL;
       if ((rc = rpmwfPullXAR(wf, "Header")) != RPMRC_OK) return rc;
  -    h = headerLoad(wf->h);
  +ei = (uint32_t *)wf->h;
  +fprintf(stderr, "==> Header %p[%u] 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", wf->h, (unsigned) wf->nh, ei[0], ei[1], ei[2], ei[3], ei[4], ei[5]);
  +    h = headerLoad(&ei[2]);
       if (h == NULL) {
   	if (msg)
   	    *msg = xstrdup(_("headerLoad failed"));
  @@ -1402,10 +1404,12 @@
   
   if (_use_xar) {
   rpmwf wf = fdGetWF(fd);
  +const char * fn = fdGetOPath(fd);
   if (wf == NULL) {
  -    wf = rpmwfNew(fdGetOPath(fd));
  +    wf = rpmwfNew(fn);
       fdSetWF(fd, wf);
  -if ((rc = rpmwfInitXAR(wf, NULL, "r")) != RPMRC_OK) return rc;
  +    wf->xar = rpmxarNew(fn, "r");
  +    assert(wf->xar != NULL);
   }
   assert(wf != NULL);
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.c
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 rpmwf.c
  --- rpm/rpmdb/rpmwf.c	20 Nov 2007 18:44:24 -0000	1.12
  +++ rpm/rpmdb/rpmwf.c	21 Nov 2007 18:21:47 -0000	1.13
  @@ -1,12 +1,10 @@
   
  -#define	RPM2XAR
   #include "system.h"
  -#ifdef WITH_XAR
  -#include "xar.h"
  -#endif
  +
   #include <rpmio.h>
   #include <rpmlib.h>
   
  +#include <rpmxar.h>
   #define	_RPMWF_INTERNAL
   #include <rpmwf.h>
   
  @@ -17,84 +15,11 @@
   /*@unchecked@*/
   int _rpmwf_debug = 0;
   
  -rpmRC rpmwfFiniXAR(rpmwf wf)
  -{
  -#ifdef WITH_XAR
  -    int xx;
  -#endif
  -
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** rpmwfFiniXAR(%p)\n", wf);
  -#ifdef WITH_XAR
  -/*@-moduncon@*/
  -    if (wf->i) {
  -/*@-noeffectuncon@*/
  -	xar_iter_free(wf->i);
  -/*@=noeffectuncon@*/
  -	wf->i = NULL;
  -    }
  -    if (wf->x) {
  -	xx = xar_close(wf->x);
  -	wf->x = NULL;
  -    }
  -    return RPMRC_OK;
  -/*@=moduncon@*/
  -#else
  -    return RPMRC_FAIL;
  -#endif
  -}
  -
  -rpmRC rpmwfInitXAR(rpmwf wf, const char * fn, const char * fmode)
  -{
  -#ifdef WITH_XAR
  -    int flags = ((fmode && *fmode == 'w') ? WRITE : READ);
  -#endif
  -
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** rpmwfInitXAR(%p, %s, %s)\n", wf, fn, fmode);
  -    if (fn == NULL)
  -	fn = wf->fn;
  -assert(fn != NULL);
  -    
  -#ifdef WITH_XAR
  -/*@-moduncon@*/
  -    wf->x = xar_open(fn, flags);
  -    if (flags == READ) {
  -	wf->i = xar_iter_new();
  -	wf->first = 1;
  -    }
  -    return RPMRC_OK;
  -/*@=moduncon@*/
  -#else
  -    return RPMRC_FAIL;
  -#endif
  -}
  -
  -rpmRC rpmwfNextXAR(rpmwf wf)
  -{
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** rpmwfNextXAR(%p) first %d\n", wf, wf->first);
  -#ifdef WITH_XAR
  -/*@-moduncon@*/
  -    if (wf->first) {
  -	wf->f = xar_file_first(wf->x, wf->i);
  -	wf->first = 0;
  -    } else
  -	wf->f = xar_file_next(wf->i);
  -/*@=moduncon@*/
  -
  -    if (wf->f == NULL)
  -	return RPMRC_NOTFOUND;
  -    return RPMRC_OK;
  -#else
  -    return RPMRC_FAIL;
  -#endif
  -}
  -
   rpmRC rpmwfPushXAR(rpmwf wf, const char * fn)
   {
       char * b = NULL;
       size_t nb = 0;
  +    int xx;
   
       if (!strcmp(fn, "Lead")) {
   	b = wf->l;
  @@ -113,74 +38,21 @@
   	nb = wf->np;
       }
   
  -#ifdef WITH_XAR
  -    if (wf->x && b && nb > 0) {
  -/*@-moduncon@*/
  -	wf->f = xar_add_frombuffer(wf->x, NULL, fn, b, nb);
  -/*@=moduncon@*/
  -	if (wf->f == NULL)
  -	    return RPMRC_FAIL;
  -    }
  -    return RPMRC_OK;
  -#else
  -    return RPMRC_FAIL;
  -#endif
  +    xx = rpmxarPush(wf->xar, fn, b, nb);
  +    return (xx == 0 ? RPMRC_OK : RPMRC_FAIL);
   }
   
   rpmRC rpmwfPullXAR(rpmwf wf, const char * fn)
   {
       rpmRC rc = RPMRC_OK;
  -#ifdef WITH_XAR
  -/*@-moduncon@*/
  -    const char * path = xar_get_path(wf->f);
  -/*@=moduncon@*/
  -#else
  -    const char * path = "*** WITHOUT_XAR ***";
  -#endif
       char * b = NULL;
       size_t nb = 0;
  -    int xx = 1;		/* assume failure */
  -
  -#ifdef	NOTYET
  -    const char * name = NULL;
  -    const char * type = NULL;
  -
  -/*@-moduncon@*/
  -    xx = xar_prop_get(wf->f, "name", &name);
  -/*@=moduncon@*/
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** xx %d name %s\n", xx, name);
  -    if (xx || name == NULL)
  -	return RPMRC_NOTFOUND;
  -
  -/*@-moduncon@*/
  -    xx = xar_prop_get(wf->f, "type", &type);
  -/*@=moduncon@*/
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** xx %d type %s\n", xx, type);
  -    if (xx || type == NULL || strcmp(type, "file"))
  -	return RPMRC_NOTFOUND;
  -#endif
  +    int xx;
   
  -    if (fn == NULL)
  -	fn = path;
  -    else
  -	assert(!strcmp(fn, path));
  -
  -#ifdef WITH_XAR
  -/*@-moduncon@*/
  -    xx = (int) xar_extract_tobuffersz(wf->x, wf->f, &b, &nb);
  -/*@=moduncon@*/
  -#endif
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** xx %d %p[%lu]\n", xx, b, (unsigned long)nb);
  -    if (xx || b == NULL || nb == 0) {
  -	path = _free(path);
  +    xx = rpmxarPull(wf->xar, fn, &b, &nb);
  +    if (xx == 1)
   	return RPMRC_NOTFOUND;
  -    }
   
  -if (_rpmwf_debug)
  -fprintf(stderr, "*** %s %p[%lu]\n", path, b, (unsigned long)nb);
       if (!strcmp(fn, "Lead")) {
   	wf->l = b;
   	wf->nl = nb;
  @@ -199,7 +71,6 @@
       } else
   	rc = RPMRC_NOTFOUND;
   
  -    path = _free(path);
       return rc;
   }
   
  @@ -341,7 +212,7 @@
   /*@=dependenttrans@*/
   	}
   
  -	(void) rpmwfFiniXAR(wf);
  +	wf->xar = rpmxarFree(wf->xar);
   	(void) rpmwfFiniRPM(wf);
   
   	wf->fn = _free(wf->fn);
  @@ -403,18 +274,18 @@
       if ((wf = rpmwfNew(xarfn)) == NULL)
   	return wf;
   
  -    if ((rc = rpmwfInitXAR(wf, NULL, "r")) != RPMRC_OK) {
  +    wf->xar = rpmxarNew(wf->fn, "r");
  +    if (wf->xar == NULL) {
   	wf = rpmwfFree(wf);
   	return NULL;
       }
   if (_rpmwf_debug)
  -fprintf(stderr, "*** rdXAR(%s) wf %p\n", xarfn, wf);
  +fprintf(stderr, "*** rdXAR(%s) wf %p xar %p\n", xarfn, wf, wf->xar);
   
  -    while ((rc = rpmwfNextXAR(wf)) == RPMRC_OK) {
  +    while (rpmxarNext(wf->xar) == 0)
   	rc = rpmwfPullXAR(wf, NULL);
  -    }
   
  -    (void) rpmwfFiniXAR(wf);
  +    wf->xar = rpmxarFree(wf->xar);
       return wf;
   }
   
  @@ -422,10 +293,11 @@
   {
       rpmRC rc;
   
  -    if ((rc = rpmwfInitXAR(wf, xarfn, "w")) != RPMRC_OK)
  -	goto exit;
   if (_rpmwf_debug)
   fprintf(stderr, "*** wrXAR(%s, %p)\n", xarfn, wf);
  +    wf->xar = rpmxarNew(xarfn, "w");
  +    if (wf->xar == NULL)
  +	return RPMRC_FAIL;
   
       if ((rc = rpmwfPushXAR(wf, "Lead")) != RPMRC_OK)
   	goto exit;
  @@ -437,8 +309,7 @@
   	goto exit;
   
   exit:
  -    (void) rpmwfFiniXAR(wf);
  -
  +    wf->xar = rpmxarFree(wf->xar);
       return rc;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.h
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 rpmwf.h
  --- rpm/rpmdb/rpmwf.h	20 Nov 2007 18:44:24 -0000	1.6
  +++ rpm/rpmdb/rpmwf.h	21 Nov 2007 18:21:47 -0000	1.7
  @@ -27,12 +27,8 @@
   /*@relnull@*/ /*@dependent@*/
       char * p;
       size_t np;
  -#ifdef WITH_XAR
  -    xar_t x;
  -    xar_file_t f;
  -    xar_iter_t i;
  -#endif
  -    int first;
  +/*@relnull@*/
  +    void * xar;
   /*@refs@*/
       int nrefs;			/*!< Reference count. */
   };
  @@ -43,18 +39,6 @@
   extern "C" {
   #endif
   
  -rpmRC rpmwfFiniXAR(rpmwf wf)
  -	/*@globals fileSystem @*/
  -	/*@modifies wf, fileSystem @*/;
  -
  -rpmRC rpmwfInitXAR(rpmwf wf, const char * fn, const char * fmode)
  -	/*@globals fileSystem @*/
  -	/*@modifies wf, fileSystem @*/;
  -
  -rpmRC rpmwfNextXAR(rpmwf wf)
  -	/*@globals fileSystem @*/
  -	/*@modifies wf, fileSystem @*/;
  -
   rpmRC rpmwfPushXAR(rpmwf wf, const char * fn)
   	/*@modifies wf @*/;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.17 -r2.18 librpmio.vers
  --- rpm/rpmio/librpmio.vers	21 Nov 2007 15:28:03 -0000	2.17
  +++ rpm/rpmio/librpmio.vers	21 Nov 2007 18:21:47 -0000	2.18
  @@ -299,11 +299,13 @@
       rpmswInit;
       rpmswNow;
       rpmswSub;
  -    rpmxarFini;
  -    rpmxarInit;
  +    rpmxarFree;
  +    XrpmxarLink;
  +    rpmxarNew;
       rpmxarNext;
       rpmxarPush;
       rpmxarPull;
  +    XrpmxarUnlink;
       Stat;
       _Stat;
       Symlink;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmxar.c
  ============================================================================
  $ cvs diff -u -r2.1 -r2.2 rpmxar.c
  --- rpm/rpmio/rpmxar.c	21 Nov 2007 15:28:03 -0000	2.1
  +++ rpm/rpmio/rpmxar.c	21 Nov 2007 18:21:47 -0000	2.2
  @@ -14,43 +14,77 @@
   int _xar_debug = 0;
   
   #if defined(WITH_XAR)
  -int rpmxarFini(rpmxar xar)
  +
  +rpmxar XrpmxarUnlink(rpmxar xar, const char * msg, const char * fn, unsigned ln)
   {
  -    int xx;
  +    if (xar == NULL) return NULL;
  +/*@-modfilesys@*/
  +if (_xar_debug && msg != NULL)
  +fprintf(stderr, "--> xar %p -- %d %s at %s:%u\n", xar, xar->nrefs, msg, fn, ln);
  +/*@=modfilesys@*/
  +    xar->nrefs--;
  +    return NULL;
  +}
   
  -if (_xar_debug)
  -fprintf(stderr, "*** rpmxarFini(%p)\n", xar);
  -/*@-moduncon@*/
  -    if (xar->i) {
  +rpmxar XrpmxarLink(rpmxar xar, const char * msg, const char * fn, unsigned ln)
  +{
  +    if (xar == NULL) return NULL;
  +    xar->nrefs++;
  +
  +/*@-modfilesys@*/
  +if (_xar_debug && msg != NULL)
  +fprintf(stderr, "--> xar %p ++ %d %s at %s:%u\n", xar, xar->nrefs, msg, fn, ln);
  +/*@=modfilesys@*/
  +
  +    /*@-refcounttrans@*/ return xar; /*@=refcounttrans@*/
  +}
  +
  +rpmxar rpmxarFree(rpmxar xar)
  +{
  +    if (xar) {
  +	int xx;
  +
  +/*@-onlytrans@*/
  +	if (xar->nrefs > 1)
  +	    return rpmxarUnlink(xar, "rpmxarFree");
  +
  +	if (xar->i) {
   /*@-noeffectuncon@*/
  -	xar_iter_free(xar->i);
  +	    xar_iter_free(xar->i);
   /*@=noeffectuncon@*/
  -	xar->i = NULL;
  -    }
  -    if (xar->x) {
  -	xx = xar_close(xar->x);
  -	xar->x = NULL;
  +	    xar->i = NULL;
  +	}
  +	if (xar->x) {
  +/*@-noeffectuncon@*/
  +	    xx = xar_close(xar->x);
  +/*@=noeffectuncon@*/
  +	    xar->x = NULL;
  +	}
  +
  +	(void) rpmxarUnlink(xar, "rpmxarFree");
  +/*@=onlytrans@*/
  +	/*@-refcounttrans -usereleased@*/
  +	memset(xar, 0, sizeof(*xar));         /* XXX trash and burn */
  +	xar = _free(xar);
  +	/*@=refcounttrans =usereleased@*/
       }
  -    return 0;
  -/*@=moduncon@*/
  +    return NULL;
   }
   
  -int rpmxarInit(rpmxar xar, const char * fn, const char * fmode)
  +rpmxar rpmxarNew(const char * fn, const char * fmode)
   {
  +    rpmxar xar = xcalloc(1, sizeof(*xar));
       int flags = ((fmode && *fmode == 'w') ? WRITE : READ);
   
  -if (_xar_debug)
  -fprintf(stderr, "*** rpmxarInit(%p, %s, %s)\n", xar, fn, fmode);
   assert(fn != NULL);
  -    
   /*@-moduncon@*/
       xar->x = xar_open(fn, flags);
       if (flags == READ) {
   	xar->i = xar_iter_new();
   	xar->first = 1;
       }
  -    return 0;
   /*@=moduncon@*/
  +    return rpmxarLink(xar, "rpmxarNew");
   }
   
   int rpmxarNext(rpmxar xar)
  @@ -87,32 +121,27 @@
   /*@=moduncon@*/
       char * b = NULL;
       size_t nb = 0;
  -    int xx;
  -
  -    if (fn == NULL)
  -	fn = path;
  -    else
  -	assert(!strcmp(fn, path));
  +    int rc;
   
  -/*@-moduncon@*/
  -    xx = (int) xar_extract_tobuffersz(xar->x, xar->f, &b, &nb);
  -/*@=moduncon@*/
  -if (_xar_debug)
  -fprintf(stderr, "*** xx %d %p[%lu]\n", xx, b, (unsigned long)nb);
  -    if (xx || b == NULL || nb == 0) {
  +    if (fn != NULL && strcmp(fn, path)) {
   	path = _free(path);
   	return 1;
       }
   
  +/*@-moduncon@*/
  +    rc = (int) xar_extract_tobuffersz(xar->x, xar->f, &b, &nb);
  +/*@=moduncon@*/
   if (_xar_debug)
  -fprintf(stderr, "*** %s %p[%lu]\n", path, b, (unsigned long)nb);
  +fprintf(stderr, "*** %s %p[%lu] rc %d\n", path, b, (unsigned long)nb, rc);
  +    path = _free(path);
  +    if (rc || b == NULL || nb == 0)
  +	return 1;
   
       if (bp)
   	*((char **)bp) = b;
       if (nbp)
   	*nbp = nb;
   
  -    path = _free(path);
       return 0;
   }
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmxar.h
  ============================================================================
  $ cvs diff -u -r2.1 -r2.2 rpmxar.h
  --- rpm/rpmio/rpmxar.h	21 Nov 2007 15:28:03 -0000	2.1
  +++ rpm/rpmio/rpmxar.h	21 Nov 2007 18:21:47 -0000	2.2
  @@ -21,11 +21,49 @@
   extern "C" {
   #endif
   
  -int rpmxarFini(rpmxar xar)
  -	/*@globals fileSystem @*/
  -	/*@modifies xar, fileSystem @*/;
  +/**
  + * Unreference a xar archive instance.
  + * @param xar		xar archive
  + * @param msg
  + * @return		NULL always
  + */
  +/*@unused@*/ /*@null@*/
  +rpmxar rpmxarUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmxar xar,
  +		/*@null@*/ const char * msg)
  +	/*@modifies xar @*/;
  +
  +/** @todo Remove debugging entry from the ABI. */
  +/*@-exportlocal@*/
  +/*@null@*/
  +rpmxar XrpmxarUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmxar xar,
  +		/*@null@*/ const char * msg, const char * fn, unsigned ln)
  +	/*@modifies xar @*/;
  +/*@=exportlocal@*/
  +#define	rpmxarUnlink(_xar, _msg) XrpmxarUnlink(_xar, _msg, __FILE__, __LINE__)
  +
  +/**
  + * Reference a xar archive instance.
  + * @param xar		xar archive
  + * @param msg
  + * @return		new xar archive reference
  + */
  +/*@unused@*/ /*@newref@*/ /*@null@*/
  +rpmxar rpmxarLink (/*@null@*/ rpmxar xar, /*@null@*/ const char * msg)
  +	/*@modifies xar @*/;
  +
  +/** @todo Remove debugging entry from the ABI. */
  +/*@newref@*/ /*@null@*/
  +rpmxar XrpmxarLink (/*@null@*/ rpmxar xar, /*@null@*/ const char * msg,
  +		const char * fn, unsigned ln)
  +        /*@modifies xar @*/;
  +#define	rpmxarLink(_xar, _msg)	XrpmxarLink(_xar, _msg, __FILE__, __LINE__)
  +
  +/*@null@*/
  +rpmxar rpmxarFree(/*@only@*/ rpmxar xar)
  +	/*@modifies xar @*/;
   
  -int rpmxarInit(rpmxar xar, const char * fn, const char * fmode)
  +/*@relnull@*/
  +rpmxar rpmxarNew(const char * fn, const char * fmode)
   	/*@globals fileSystem @*/
   	/*@modifies xar, fileSystem @*/;
   
  @@ .
Received on Wed Nov 21 19:21:48 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.