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 18:31:28
  Branch: HEAD                             Handle: 2008051216312700

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

  Log:
    - 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.
    - jbj: add stat(2) of origin *.rpm to Header internal store.

  Summary:
    Revision    Changes     Path
    1.2339      +4  -0      rpm/CHANGES
    1.91        +39 -12     rpm/rpmdb/hdrfmt.c
    1.159       +9  -9      rpm/rpmdb/header.c
    1.41        +1  -1      rpm/rpmdb/header_internal.h
    1.44        +1  -4      rpm/rpmdb/librpmdb.vers
    1.79        +2  -4      rpm/rpmdb/pkgio.c
    1.46        +7  -6      rpm/rpmdb/rpmtag.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2338 -r1.2339 CHANGES
  --- rpm/CHANGES       11 May 2008 19:11:02 -0000      1.2338
  +++ rpm/CHANGES       12 May 2008 16:31:27 -0000      1.2339
  @@ -1,5 +1,9 @@
   
   5.1.0 -> 5.2a0:
  +    - 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.
  +    - jbj: add stat(2) of origin *.rpm to Header internal store.
       - jbj: permit file digests through (e.g.) :stat(sha512) format extension.
       - jbj: add :uuid(vN) format. UUIDv5 URI design & tag type coercion 
todo++.
       - jbj: rpmuuid: add i18n to error messages.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.90 -r1.91 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c        11 May 2008 19:11:02 -0000      1.90
  +++ rpm/rpmdb/hdrfmt.c        12 May 2008 16:31:27 -0000      1.91
  @@ -1953,9 +1953,9 @@
                fileSystem, internalState @*/
   {
       he->tag = RPMTAG_HEADERSTARTOFF;
  -    he->t = RPM_UINT32_TYPE;
  -    he->p.ui32p = xmalloc(sizeof(*he->p.ui32p));
  -    he->p.ui32p[0] = headerGetStartOff(h);
  +    he->t = RPM_UINT64_TYPE;
  +    he->p.ui64p = xmalloc(sizeof(*he->p.ui64p));
  +    he->p.ui64p[0] = headerGetStartOff(h);
       he->freeData = 1;
       he->c = 1;
       return 0;
  @@ -1976,9 +1976,9 @@
                fileSystem, internalState @*/
   {
       he->tag = RPMTAG_HEADERENDOFF;
  -    he->t = RPM_UINT32_TYPE;
  -    he->p.ui32p = xmalloc(sizeof(*he->p.ui32p));
  -    he->p.ui32p[0] = headerGetEndOff(h);
  +    he->t = RPM_UINT64_TYPE;
  +    he->p.ui64p = xmalloc(sizeof(*he->p.ui64p));
  +    he->p.ui64p[0] = headerGetEndOff(h);
       he->freeData = 1;
       he->c = 1;
       return 0;
  @@ -2014,22 +2014,47 @@
   /[EMAIL PROTECTED]@*/
   
   /**
  - * Retrieve package time from header.
  + * Retrieve *.rpm package st->st_mtime from header.
    * @param h          header
    * @retval *he               tag container
    * @return           0 on success
    */
   /[EMAIL PROTECTED]@*/
  -static int pkgtimeTag(Header h, HE_t he)
  +static int pkgmtimeTag(Header h, HE_t he)
        /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno,
                fileSystem, internalState @*/
        /[EMAIL PROTECTED] he, rpmGlobalMacroContext,
                fileSystem, internalState @*/
   {
  +    struct stat * st = headerGetStatbuf(h);
       he->tag = RPMTAG_PACKAGETIME;
  -    he->t = RPM_UINT32_TYPE;
  -    he->p.ui32p = xmalloc(sizeof(*he->p.ui32p));
  -    he->p.ui32p[0] = headerGetTime(h);
  +    he->t = RPM_UINT64_TYPE;
  +    he->p.ui64p = xmalloc(sizeof(*he->p.ui64p));
  +    he->p.ui64p[0] = st->st_mtime;
  +    he->freeData = 1;
  +    he->c = 1;
  +    return 0;
  +}
  +/[EMAIL PROTECTED]@*/
  +
  +/**
  + * Retrieve *.rpm package st->st_size from header.
  + * @param h          header
  + * @retval *he               tag container
  + * @return           0 on success
  + */
  +/[EMAIL PROTECTED]@*/
  +static int pkgsizeTag(Header h, HE_t he)
  +     /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno,
  +             fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] he, rpmGlobalMacroContext,
  +             fileSystem, internalState @*/
  +{
  +    struct stat * st = headerGetStatbuf(h);
  +    he->tag = RPMTAG_PACKAGETIME;
  +    he->t = RPM_UINT64_TYPE;
  +    he->p.ui64p = xmalloc(sizeof(*he->p.ui64p));
  +    he->p.ui64p[0] = st->st_size;
       he->freeData = 1;
       he->c = 1;
       return 0;
  @@ -3423,8 +3448,10 @@
        { .tagFunction = headerendoffTag } },
       { HEADER_EXT_TAG, "RPMTAG_PACKAGEORIGIN",
        { .tagFunction = pkgoriginTag } },
  +    { HEADER_EXT_TAG, "RPMTAG_PACKAGESIZE",
  +     { .tagFunction = pkgsizeTag } },
       { HEADER_EXT_TAG, "RPMTAG_PACKAGETIME",
  -     { .tagFunction = pkgtimeTag } },
  +     { .tagFunction = pkgmtimeTag } },
       { HEADER_EXT_TAG, "RPMTAG_NVRA",
        { .tagFunction = nvraTag } },
       { HEADER_EXT_TAG, "RPMTAG_FILENAMES",
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.158 -r1.159 header.c
  --- rpm/rpmdb/header.c        4 May 2008 13:14:50 -0000       1.158
  +++ rpm/rpmdb/header.c        12 May 2008 16:31:27 -0000      1.159
  @@ -1206,27 +1206,27 @@
       return 0;
   }
   
  -uint32_t headerGetInstance(Header h)
  +struct stat * headerGetStatbuf(Header h)
   {
  -    return (h != NULL ? h->instance : 0);
  +    return &h->sb;
   }
   
  -uint32_t headerSetInstance(Header h, uint32_t instance)
  +int headerSetStatbuf(Header h, struct stat * st)
   {
  -    if (h != NULL)
  -     h->instance = instance;
  +    if (h != NULL && st != NULL)
  +     memcpy(&h->sb, st, sizeof(h->sb));
       return 0;
   }
   
  -uint32_t headerGetTime(Header h)
  +uint32_t headerGetInstance(Header h)
   {
  -    return (h != NULL ? h->time : 0);
  +    return (h != NULL ? h->instance : 0);
   }
   
  -uint32_t headerSetTime(Header h, uint32_t time)
  +uint32_t headerSetInstance(Header h, uint32_t instance)
   {
       if (h != NULL)
  -     h->time = time;
  +     h->instance = instance;
       return 0;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.40 -r1.41 header_internal.h
  --- rpm/rpmdb/header_internal.h       23 Mar 2008 02:49:47 -0000      1.40
  +++ rpm/rpmdb/header_internal.h       12 May 2008 16:31:27 -0000      1.41
  @@ -87,7 +87,7 @@
       void * blob;             /*!< Header region blob. */
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
       const char * origin;     /*!< Header origin (e.g. path or URL). */
  -    uint32_t time;           /*!< Header time. */
  +    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. */
       uint32_t endoff;         /*!< Header ending byte offset in package. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.43 -r1.44 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   23 Mar 2008 13:01:38 -0000      1.43
  +++ rpm/rpmdb/librpmdb.vers   12 May 2008 16:31:27 -0000      1.44
  @@ -41,11 +41,8 @@
       headerGetMagic;
       headerGetOrigin;
       headerGetEndOff;
  -    headerSetEndOff;
       headerGetStartOff;
  -    headerSetStartOff;
  -    headerGetTime;
  -    headerSetTime;
  +    headerGetStatbuf;
       headerInit;
       headerIsEntry;
       headerLink;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.78 -r1.79 pkgio.c
  --- rpm/rpmdb/pkgio.c 3 Apr 2008 16:40:46 -0000       1.78
  +++ rpm/rpmdb/pkgio.c 12 May 2008 16:31:27 -0000      1.79
  @@ -1351,12 +1351,10 @@
        } else
            (void) headerSetOrigin(h, origin);
       }
  -    {        struct stat sb;
  +    {        struct stat * st = headerGetStatbuf(h);
        int saveno = errno;
  -     memset(&sb, 0, sizeof(sb));
  -     (void) fstat(Fileno(fd), &sb);
  +     (void) fstat(Fileno(fd), st);
        errno = saveno;
  -     (void) headerSetTime(h, (uint32_t)sb.st_mtime);
       }
       (void) headerSetStartOff(h, startoff);
       (void) headerSetEndOff(h, fd->stats->ops[FDSTAT_READ].bytes);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
  ============================================================================
  $ cvs diff -u -r1.45 -r1.46 rpmtag.h
  --- rpm/rpmdb/rpmtag.h        9 May 2008 22:22:48 -0000       1.45
  +++ rpm/rpmdb/rpmtag.h        12 May 2008 16:31:27 -0000      1.46
  @@ -417,6 +417,7 @@
       RPMTAG_HEADERSTARTOFF    = 1211, /* i */
       RPMTAG_HEADERENDOFF              = 1212, /* i */
       RPMTAG_PACKAGETIME               = 1213, /* i */
  +    RPMTAG_PACKAGESIZE               = 1214, /* i */
   
   /[EMAIL PROTECTED]@*/
       RPMTAG_FIRSTFREE_TAG     /*!< internal */
  @@ -964,20 +965,20 @@
        /[EMAIL PROTECTED] h @*/;
   
   /** \ingroup header
  - * Return header time.
  + * Return header stat(2) buffer (of origin *.rpm file).
    * @param h          header
  - * @return           header time
  + * @return           header stat(2) buffer
    */
  -uint32_t headerGetTime(/[EMAIL PROTECTED]@*/ Header h)
  +struct stat * headerGetStatbuf(/[EMAIL PROTECTED]@*/ Header h)
        /[EMAIL PROTECTED]/;
   
   /** \ingroup header
  - * Store header time.
  + * Copy into header stat(2) buffer (of origin *.rpm file).
    * @param h          header
  - * @param origin     new header time
  + * @param st         new header stat(2) buffer
    * @return           0 always
    */
  -uint32_t headerSetTime(/[EMAIL PROTECTED]@*/ Header h, uint32_t time)
  +int headerSetStatbuf(/[EMAIL PROTECTED]@*/ Header h, struct stat * st)
        /[EMAIL PROTECTED] h @*/;
   
   /** \ingroup header
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to