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:   17-May-2009 23:31:39
  Branch: HEAD                             Handle: 2009051721313900

  Modified files:
    rpm/rpmdb               header.c header_internal.h

  Log:
    - add HEADERFLAG_MAPPED and h->bloblen to prepare for mmap'd headers.

  Summary:
    Revision    Changes     Path
    1.181       +6  -2      rpm/rpmdb/header.c
    1.52        +8  -6      rpm/rpmdb/header_internal.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.180 -r1.181 header.c
  --- rpm/rpmdb/header.c        17 May 2009 18:11:57 -0000      1.180
  +++ rpm/rpmdb/header.c        17 May 2009 21:31:39 -0000      1.181
  @@ -30,7 +30,7 @@
   
   /* Compute tag data store size using offsets? */
   /*...@unchecked@*/
  -int _hdr_fastdatalength = 1;
  +int _hdr_fastdatalength = 0;
   
   /* Swab tag data only when accessed through headerGet()? */
   /*...@unchecked@*/
  @@ -115,8 +115,10 @@
            if ((h->flags & HEADERFLAG_ALLOCATED) && ENTRY_IS_REGION(entry)) {
                if (entry->length > 0) {
                    rpmuint32_t * ei = entry->data;
  -                 if ((ei - 2) == h->blob)
  +                 if ((ei - 2) == h->blob) {
                        h->blob = _free(h->blob);
  +                     h->bloblen = 0;
  +                 }
                    entry->data = NULL;
                }
            } else if (!ENTRY_IN_REGION(entry)) {
  @@ -164,6 +166,7 @@
   
       (void) memcpy(h->magic, header_magic, sizeof(h->magic));
       h->blob = NULL;
  +    h->bloblen = 0;
       h->origin = NULL;
       h->baseurl = NULL;
       h->digest = NULL;
  @@ -1036,6 +1039,7 @@
       }
       /*...@-assignexpose -kepttr...@*/
       h->blob = uh;
  +    h->bloblen = 0;
       /*...@=assignexpose =kepttr...@*/
       h->indexAlloced = il + 1;
       h->indexUsed = il;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.51 -r1.52 header_internal.h
  --- rpm/rpmdb/header_internal.h       27 Mar 2009 17:42:00 -0000      1.51
  +++ rpm/rpmdb/header_internal.h       17 May 2009 21:31:39 -0000      1.52
  @@ -87,6 +87,7 @@
       unsigned char magic[8];  /*!< Header magic. */
   /*...@only@*/ /*...@null@*/
       void * blob;             /*!< Header region blob. */
  +    size_t bloblen;          /*!< Header region blob length (in bytes). */
   /*...@only@*/ /*...@null@*/
       const char * origin;     /*!< Header origin (e.g. path or URL). */
   /*...@only@*/ /*...@null@*/
  @@ -98,19 +99,20 @@
       struct stat sb;          /*!< Header stat(2) (from origin *.rpm file) */
       rpmuint32_t instance;    /*!< Header instance (if from rpmdb). */
       rpmuint32_t startoff;    /*!< Header starting byte offset in package. */
  -    rpmuint32_t endoff;              /*!< Header ending byte offset in 
package. */
  +    rpmuint32_t endoff;      /*!< Header ending byte offset in package. */
       struct rpmop_s h_loadops;
       struct rpmop_s h_getops;
   /*...@owned@*/
  -    indexEntry index;                /*!< Array of tags. */
  -    size_t indexUsed;                /*!< Current size of tag array. */
  +    indexEntry index;        /*!< Array of tags. */
  +    size_t indexUsed;        /*!< Current size of tag array. */
       size_t indexAlloced;     /*!< Allocated size of tag array. */
       rpmuint32_t flags;
  -#define      HEADERFLAG_SORTED       (1 << 0) /*!< Are header entries 
sorted? */
  -#define      HEADERFLAG_ALLOCATED    (1 << 1) /*!< Is 1st header region 
allocated? */
  -#define      HEADERFLAG_LEGACY       (1 << 2) /*!< Header came from legacy 
source? */
  +#define HEADERFLAG_SORTED    (1 << 0) /*!< Are header entries sorted? */
  +#define HEADERFLAG_ALLOCATED (1 << 1) /*!< Is 1st header region allocated? */
  +#define HEADERFLAG_LEGACY    (1 << 2) /*!< Header came from legacy source? */
   #define HEADERFLAG_DEBUG     (1 << 3) /*!< Debug this header? */
   #define HEADERFLAG_SIGNATURE (1 << 4) /*!< Signature header? */
  +#define HEADERFLAG_MAPPED    (1 << 5) /*!< Is 1st header region mmap'd? */
   #if defined(__LCLINT__)
   /*...@refs@*/
       int nrefs;                       /*!< (unused) keep splint happy */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to