RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   12-May-2008 20:17:57
  Branch: HEAD                             Handle: 2008051218175600

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               hdrfmt.c header.c header_internal.h librpmdb.vers
                            rpmtag.h

  Log:
    - jbj: preserve stat(2) & digest through headerReload().
    - jbj: get rid of copy-n-paste typos, add "l" type markers to rpmtag.h.
    - jbj: add RPMTAG_PACKAGEDIGEST extension as RPM_STRING_TYPE.
    - jbj: add digest of origin *.rpm to Header internal store.

  Summary:
    Revision    Changes     Path
    1.2340      +4  -0      rpm/CHANGES
    1.92        +30 -1      rpm/rpmdb/hdrfmt.c
    1.160       +23 -0      rpm/rpmdb/header.c
    1.42        +1  -0      rpm/rpmdb/header_internal.h
    1.45        +7  -0      rpm/rpmdb/librpmdb.vers
    1.47        +23 -4      rpm/rpmdb/rpmtag.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2339 -r1.2340 CHANGES
  --- rpm/CHANGES       12 May 2008 16:31:27 -0000      1.2339
  +++ rpm/CHANGES       12 May 2008 18:17:56 -0000      1.2340
  @@ -1,5 +1,9 @@
   
   5.1.0 -> 5.2a0:
  +    - jbj: preserve stat(2) & digest through headerReload().
  +    - jbj: get rid of copy-n-paste typos, add "l" type markers to rpmtag.h.
  +    - jbj: add RPMTAG_PACKAGEDIGEST extension as RPM_STRING_TYPE.
  +    - jbj: add digest of origin *.rpm to Header internal store.
       - jbj: add RPMTAG_PACKAGESIZE extension as RPM_UINT64_TYPE.
       - jbj: rework RPMTAG_PACKAGETIME extension as RPM_UINT64_TYPE.
       - jbj: rework header{Get,Set}Time as header{Get,Stat}Statbuf methods.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.91 -r1.92 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c        12 May 2008 16:31:27 -0000      1.91
  +++ rpm/rpmdb/hdrfmt.c        12 May 2008 18:17:56 -0000      1.92
  @@ -2014,6 +2014,33 @@
   /[EMAIL PROTECTED]@*/
   
   /**
  + * Retrieve package digest from header.
  + * @param h          header
  + * @retval *he               tag container
  + * @return           0 on success
  + */
  +/[EMAIL PROTECTED]@*/
  +static int pkgdigestTag(Header h, HE_t he)
  +     /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno,
  +             fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] he, rpmGlobalMacroContext,
  +             fileSystem, internalState @*/
  +{
  +    const char * digest;
  +
  +    he->tag = RPMTAG_PACKAGEDIGEST;
  +    if ((digest = headerGetDigest(h)) != NULL)
  +    {
  +     he->t = RPM_STRING_TYPE;
  +     he->p.str = xstrdup(digest);
  +     he->c = 1;
  +     he->freeData = 1;
  +    }
  +    return 0;
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +/**
    * Retrieve *.rpm package st->st_mtime from header.
    * @param h          header
    * @retval *he               tag container
  @@ -2051,7 +2078,7 @@
                fileSystem, internalState @*/
   {
       struct stat * st = headerGetStatbuf(h);
  -    he->tag = RPMTAG_PACKAGETIME;
  +    he->tag = RPMTAG_PACKAGESIZE;
       he->t = RPM_UINT64_TYPE;
       he->p.ui64p = xmalloc(sizeof(*he->p.ui64p));
       he->p.ui64p[0] = st->st_size;
  @@ -3446,6 +3473,8 @@
        { .tagFunction = headerstartoffTag } },
       { HEADER_EXT_TAG, "RPMTAG_HEADERENDOFF",
        { .tagFunction = headerendoffTag } },
  +    { HEADER_EXT_TAG, "RPMTAG_PACKAGEDIGEST",
  +     { .tagFunction = pkgdigestTag } },
       { HEADER_EXT_TAG, "RPMTAG_PACKAGEORIGIN",
        { .tagFunction = pkgoriginTag } },
       { HEADER_EXT_TAG, "RPMTAG_PACKAGESIZE",
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.159 -r1.160 header.c
  --- rpm/rpmdb/header.c        12 May 2008 16:31:27 -0000      1.159
  +++ rpm/rpmdb/header.c        12 May 2008 18:17:56 -0000      1.160
  @@ -154,6 +154,7 @@
        h->index = _free(h->index);
       }
       h->origin = _free(h->origin);
  +    h->digest = _free(h->digest);
   
   /[EMAIL PROTECTED]@*/
       if (_hdr_stats) {
  @@ -176,6 +177,7 @@
       (void) memcpy(h->magic, header_magic, sizeof(h->magic));
       h->blob = NULL;
       h->origin = NULL;
  +    h->digest = NULL;
       h->instance = 0;
       h->indexAlloced = INDEX_MALLOC_SIZE;
       h->indexUsed = 0;
  @@ -1218,6 +1220,20 @@
       return 0;
   }
   
  +const char * headerGetDigest(Header h)
  +{
  +    return (h != NULL ? h->digest : NULL);
  +}
  +
  +int headerSetDigest(Header h, const char * digest)
  +{
  +    if (h != NULL) {
  +     h->digest = _free(h->digest);
  +     h->digest = xstrdup(digest);
  +    }
  +    return 0;
  +}
  +
   uint32_t headerGetInstance(Header h)
   {
       return (h != NULL ? h->instance : 0);
  @@ -1259,6 +1275,8 @@
       Header nh;
       void * uh;
       const char * origin = (h->origin != NULL ? xstrdup(h->origin) : NULL);
  +    const char * digest = (h->digest != NULL ? xstrdup(h->digest) : NULL);
  +    struct stat sb = h->sb;  /* structure assignment */
       uint32_t instance = h->instance;
       int xx;
   
  @@ -1284,6 +1302,11 @@
        xx = headerSetOrigin(nh, origin);
        origin = _free(origin);
       }
  +    if (digest != NULL) {
  +     xx = headerSetDigest(nh, digest);
  +     digest = _free(digest);
  +    }
  +    nh->sb = sb;     /* structure assignment */
       xx = (int) headerSetInstance(nh, instance);
       return nh;
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.41 -r1.42 header_internal.h
  --- rpm/rpmdb/header_internal.h       12 May 2008 16:31:27 -0000      1.41
  +++ rpm/rpmdb/header_internal.h       12 May 2008 18:17:56 -0000      1.42
  @@ -87,6 +87,7 @@
       void * blob;             /*!< Header region blob. */
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
       const char * origin;     /*!< Header origin (e.g. path or URL). */
  +    const char * digest;     /*!< Header digest (from origin *.rpm file) */
       struct stat sb;          /*!< Header stat(2) (from origin *.rpm file) */
       uint32_t instance;               /*!< Header instance (if from rpmdb). */
       uint32_t startoff;               /*!< Header starting byte offset in 
package. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.44 -r1.45 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   12 May 2008 16:31:27 -0000      1.44
  +++ rpm/rpmdb/librpmdb.vers   12 May 2008 18:17:56 -0000      1.45
  @@ -37,12 +37,19 @@
       headerFini;
       headerFree;
       headerGet;
  +    headerGetDigest;
  +    headerSetDigest;
       headerGetInstance;
  +    headerSetInstance;
       headerGetMagic;
       headerGetOrigin;
  +    headerSetOrigin;
       headerGetEndOff;
  +    headerSetEndOff;
       headerGetStartOff;
  +    headerSetStartOff;
       headerGetStatbuf;
  +    headerSetStatbuf;
       headerInit;
       headerIsEntry;
       headerLink;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
  ============================================================================
  $ cvs diff -u -r1.46 -r1.47 rpmtag.h
  --- rpm/rpmdb/rpmtag.h        12 May 2008 16:31:27 -0000      1.46
  +++ rpm/rpmdb/rpmtag.h        12 May 2008 18:17:56 -0000      1.47
  @@ -414,10 +414,11 @@
       RPMTAG_STAT                      = 1208, /* s[] stat(2) from disk 
extension */
       RPMTAG_ORIGINTID         = 1209, /* i[] */
       RPMTAG_ORIGINTIME                = 1210, /* i[] */
  -    RPMTAG_HEADERSTARTOFF    = 1211, /* i */
  -    RPMTAG_HEADERENDOFF              = 1212, /* i */
  -    RPMTAG_PACKAGETIME               = 1213, /* i */
  -    RPMTAG_PACKAGESIZE               = 1214, /* i */
  +    RPMTAG_HEADERSTARTOFF    = 1211, /* l */
  +    RPMTAG_HEADERENDOFF              = 1212, /* l */
  +    RPMTAG_PACKAGETIME               = 1213, /* l */
  +    RPMTAG_PACKAGESIZE               = 1214, /* l */
  +    RPMTAG_PACKAGEDIGEST     = 1215, /* s */
   
   /[EMAIL PROTECTED]@*/
       RPMTAG_FIRSTFREE_TAG     /*!< internal */
  @@ -982,6 +983,24 @@
        /[EMAIL PROTECTED] h @*/;
   
   /** \ingroup header
  + * Return digest of origin *.rpm file.
  + * @param h          header
  + * @return           header digest
  + */
  +/[EMAIL PROTECTED]@*/
  +const char * headerGetDigest(/[EMAIL PROTECTED]@*/ Header h)
  +     /[EMAIL PROTECTED]/;
  +
  +/** \ingroup header
  + * Store digest of origin *.rpm file.
  + * @param h          header
  + * @param st         new header digest
  + * @return           0 always
  + */
  +int headerSetDigest(/[EMAIL PROTECTED]@*/ Header h, const char * digest)
  +     /[EMAIL PROTECTED] h @*/;
  +
  +/** \ingroup header
    * Return header instance (if from rpmdb).
    * @param h          header
    * @return           header instance
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to