RPM Community Forums

Mailing List Message of <rpm-cvs>

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

From: Jeff Johnson <jbj@rpm5.org>
Date: Sat 29 Sep 2007 - 20:18:58 CEST
Message-Id: <20070929181858.1CD1634845F@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:   29-Sep-2007 20:18:58
  Branch: HEAD                             Handle: 2007092919185700

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

  Log:
    - add metadata header stubs to pkgio.c.

  Summary:
    Revision    Changes     Path
    1.1648      +1  -0      rpm/CHANGES
    2.228       +2  -2      rpm/build/pack.c
    2.230       +1  -1      rpm/lib/psm.c
    1.8         +96 -19     rpm/rpmdb/pkgio.c
    1.3         +5  -6      rpm/rpmdb/pkgio.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1647 -r1.1648 CHANGES
  --- rpm/CHANGES	29 Sep 2007 17:06:25 -0000	1.1647
  +++ rpm/CHANGES	29 Sep 2007 18:18:57 -0000	1.1648
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: add metadata header stubs to pkgio.c.
       - jbj: move rpmtsFindPubkey() and rpmtsOp() to rpmdb for forward linkage.
       - jbj: add _RPMTS_PRINT to keep rpmrollback.c happy.
       - jbj: rearrange package.c internals to new locations.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.227 -r2.228 pack.c
  --- rpm/build/pack.c	8 Sep 2007 22:42:36 -0000	2.227
  +++ rpm/build/pack.c	29 Sep 2007 18:18:57 -0000	2.228
  @@ -316,7 +316,7 @@
       }
   
       {	const char item[] = "Lead";
  -	size_t nl = rpmpkgSizeof(item);
  +	size_t nl = rpmpkgSizeof(item, NULL);
   
   	if (nl == 0) {
   	    rc = RPMRC_FAIL;
  @@ -702,7 +702,7 @@
       /* Write the lead section into the package. */
       if (!_nolead) {
   	const char item[] = "Lead";
  -	size_t nl = rpmpkgSizeof(item);
  +	size_t nl = rpmpkgSizeof(item, NULL);
   	rpmRC _rc;
   
   	if (nl == 0)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.229 -r2.230 psm.c
  --- rpm/lib/psm.c	22 Sep 2007 21:27:48 -0000	2.229
  +++ rpm/lib/psm.c	29 Sep 2007 18:18:57 -0000	2.230
  @@ -1794,7 +1794,7 @@
   	    if (!_nolead) {
   		static const char item[] = "Lead";
   		const char * NEVR = rpmteNEVR(psm->te);
  -		size_t nb = rpmpkgSizeof(item);
  +		size_t nb = rpmpkgSizeof(item, NULL);
   	
   		if (nb == 0)
   		    rc = RPMRC_FAIL;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.7 -r1.8 pkgio.c
  --- rpm/rpmdb/pkgio.c	29 Sep 2007 17:06:25 -0000	1.7
  +++ rpm/rpmdb/pkgio.c	29 Sep 2007 18:18:57 -0000	1.8
  @@ -453,7 +453,7 @@
    */
   static rpmRC wrSignature(FD_t fd, void * ptr, const char ** msg)
   	/*@globals fileSystem @*/
  -	/*@modifies fd, sigh, fileSystem @*/
  +	/*@modifies fd, ptr, fileSystem @*/
   {
       Header sigh = ptr;
       static unsigned char zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
  @@ -491,7 +491,7 @@
       int fdno = Fileno(fd);
       struct stat sb, * st = &sb;
       size_t expected;
  -    size_t nl = rpmpkgSizeof("Lead");
  +    size_t nl = rpmpkgSizeof("Lead", NULL);
   
       /* HACK: workaround for davRead wiring. */
       if (fdno == 123456789) {
  @@ -1060,16 +1060,108 @@
       return rc;
   }
   
  +/**
  + * Return size of Header.
  + * @param ptr		metadata header (at least 32 bytes)
  + * @return		size of header
  + */
  +static size_t szHeader(const void * ptr)
  +{
  +    uint32_t p[4];
  +    memcpy(p, ptr, sizeof(p));
  +    return (8 + 8 + 16 * ntohl(p[2]) + ntohl(p[3]));
  +}
  +
  +/**
  + * Check metadata header.
  + * @param fd		file handle
  + * @param ptr		metadata header
  + * @retval *msg		failure msg
  + * @return		rpmRC return code
  + */
  +static rpmRC ckHeader(FD_t fd, const void * ptr, const char ** msg)
  +	/*@globals fileSystem @*/
  +	/*@modifies fd, ptr, fileSystem @*/
  +{
  +    rpmRC rc = RPMRC_OK;
  +
  +    return rc;
  +}
  +
  +/**
  + * Read metadata header.
  + * @param fd		file handle
  + * @retval *ptr		metadata header (or NULL)
  + * @retval *msg		failure msg
  + * @return		rpmRC return code
  + */
  +static rpmRC rdHeader(FD_t fd, void * ptr, const char ** msg)
  +	/*@globals fileSystem @*/
  +	/*@modifies fd, *ptr, *msg, fileSystem @*/
  +{
  +    Header * hdrp = ptr;
  +    Header h = NULL;
  +    rpmRC rc = RPMRC_OK;
  +
  +    h = headerRead(fd);
  +    if (h == NULL)
  +	rc = RPMRC_FAIL;
  +    else if (hdrp) {
  +	*hdrp = headerLink(h);
  +	h = headerFree(h);
  +    }
  +
  +    return rc;
  +}
  +
  +/**
  + * Write metadata header.
  + * @param fd		file handle
  + * @param ptr		metadata header
  + * @retval *msg		failure msg
  + * @return		rpmRC return code
  + */
  +static rpmRC wrHeader(FD_t fd, void * ptr, const char ** msg)
  +	/*@globals fileSystem @*/
  +	/*@modifies fd, ptr, fileSystem @*/
  +{
  +    Header h = ptr;
  +    rpmRC rc = RPMRC_OK;
  +    int xx;
  +
  +    xx = headerWrite(fd, h);
  +    if (xx)
  +	rc = RPMRC_FAIL;
  +
  +    return rc;
  +}
  +
   /*===============================================*/
   
  -size_t rpmpkgSizeof(const char * fn)
  +size_t rpmpkgSizeof(const char * fn, const void * ptr)
   {
       size_t len = 0;
  -    if (!strcmp(fn, "Lead"));
  +    if (!strcmp(fn, "Lead"))
   	return 96;	/* RPMLEAD_SIZE */
  +    if (!strcmp(fn, "Signature")) {
  +	size_t nb = szHeader(ptr);
  +	nb += (8 - (nb % 8));   /* padding */
  +	return nb;
  +    }
  +    if (!strcmp(fn, "Header"))
  +	return szHeader(ptr);
       return len;
   }
   
  +rpmRC rpmpkgCheck(const char * fn, FD_t fd, const void * ptr, const char ** msg)
  +{
  +    rpmRC rc = RPMRC_FAIL;
  +
  +    if (!strcmp(fn, "Header"))
  +	return ckHeader(fd, ptr, msg);
  +    return rc;
  +}
  +
   rpmRC rpmpkgRead(const char * fn, FD_t fd, void * ptr, const char ** msg)
   {
       rpmRC rc = RPMRC_FAIL;
  @@ -1078,10 +1170,8 @@
   	return rdLead(fd, ptr, msg);
       if (!strcmp(fn, "Signature"))
   	return rdSignature(fd, ptr, msg);
  -#ifdef	NOTYET
       if (!strcmp(fn, "Header"))
   	return rdHeader(fd, ptr, msg);
  -#endif
       return rc;
   }
   
  @@ -1093,20 +1183,7 @@
   	return wrLead(fd, ptr, msg);
       if (!strcmp(fn, "Signature"))
   	return wrSignature(fd, ptr, msg);
  -#ifdef	NOTYET
       if (!strcmp(fn, "Header"))
   	return wrHeader(fd, ptr, msg);
  -#endif
  -    return rc;
  -}
  -
  -#ifdef	NOTYET
  -rpmRC rpmpkgCheck(const char * fn, FD_t fd, void * ptr, const char ** msg)
  -{
  -    rpmRC rc = RPMRC_FAIL;
  -
  -    if (!strcmp(fn, "Lead"))
  -	return ckLead(fd, ptr, msg);
       return rc;
   }
  -#endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.h
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 pkgio.h
  --- rpm/rpmdb/pkgio.h	8 Sep 2007 18:22:56 -0000	1.2
  +++ rpm/rpmdb/pkgio.h	29 Sep 2007 18:18:57 -0000	1.3
  @@ -16,16 +16,17 @@
   /**
    * Return size of item in bytes.
    * @param fn		item name
  + * @param ptr		item buffer
    * @return		size of item in bytes.
    */
  -size_t rpmpkgSizeof(const char * fn)
  +size_t rpmpkgSizeof(const char * fn, /*@null@*/ const void * ptr)
   	/*@*/;
   
   /**
    * Write item onto file descriptor.
    * @param fn		item name
    * @param fd		file handle
  - * @retval *ptr		item buffer
  + * @param ptr		item buffer
    * @retval *msg		item check failure message
    * @return		RPMRC_OK on success
    */
  @@ -41,22 +42,20 @@
    * @retval *msg		item check failure message
    * @return		RPMRC_OK on success
    */
  -rpmRC rpmpkgRead(const char * fn, FD_t fd, /*@null@*/ /*@out@*/void * ptr,
  +rpmRC rpmpkgRead(const char * fn, FD_t fd, /*@null@*/ /*@out@*/ void * ptr,
   		const char ** msg)
   	/*@modifies fd, *ptr, *msg @*/;
   
  -#ifdef	NOTYET
   /**
    * Verify item integrity.
    * @param fn		item name
    * @param fd		file handle
  - * @retval *ptr		item buffer
  + * @param ptr		item buffer
    * @retval *msg		item check failure message
    * @return		RPMRC_OK on success
    */
   rpmRC rpmpkgCheck(const char * fn, FD_t fd, const void * ptr, const char ** msg)
   	/*@modifies fd, *msg @*/;
  -#endif
   
   #ifdef __cplusplus
   }
  @@ .
Received on Sat Sep 29 20:18:58 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.