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]
