Add rpmdb record number to headers retrieved from rpmdb
authorPanu Matilainen <pmatilai@redhat.com>
Wed, 12 Nov 2008 15:58:37 +0000 (17:58 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 12 Nov 2008 15:58:37 +0000 (17:58 +0200)
- set "instance" number on retrieval from rpmdb
- add public headerGetInstance() function for retrieving the value
- ported from rpm5.org, useful for number of things

lib/header.c
lib/header.h
lib/header_internal.h
lib/rpmdb.c

index fa38c89..78b4f89 100644 (file)
@@ -141,6 +141,7 @@ Header headerNew(void)
     h->blob = NULL;
     h->indexAlloced = INDEX_MALLOC_SIZE;
     h->indexUsed = 0;
+    h->instance = 0;
     h->flags |= HEADERFLAG_SORTED;
 
     h->index = (h->indexAlloced
@@ -861,6 +862,7 @@ Header headerLoad(void * uh)
     h->blob = uh;
     h->indexAlloced = il + 1;
     h->indexUsed = il;
+    h->instance = 0;
     h->index = xcalloc(h->indexAlloced, sizeof(*h->index));
     h->flags |= HEADERFLAG_SORTED;
     h->nrefs = 0;
@@ -1953,3 +1955,7 @@ void headerCopyTags(Header headerFrom, Header headerTo,
     }
 }
 
+unsigned int headerGetInstance(Header h)
+{
+    return h ? h->instance : 0;
+}
index 357accd..aa93e22 100644 (file)
@@ -369,6 +369,13 @@ rpm_color_t headerGetColor(Header h);
  */
 int headerIsSource(Header h);
 
+/** \ingroup header
+ * Return header instance, ie is the header from rpmdb.
+ * @param h            header
+ * @return             rpmdb record number or 0
+ */
+unsigned int headerGetInstance(Header h);
+
 typedef enum headerConvOps_e {
     HEADERCONV_EXPANDFILELIST  = 0,
     HEADERCONV_COMPRESSFILELIST = 1,
index f413891..6139a4a 100644 (file)
@@ -54,6 +54,7 @@ struct headerToken_s {
     indexEntry index;          /*!< Array of tags. */
     int indexUsed;             /*!< Current size of tag array. */
     int indexAlloced;          /*!< Allocated size of tag array. */
+    unsigned int instance;     /*!< Rpmdb instance (offset) */
     int flags;
 #define        HEADERFLAG_SORTED       (1 << 0) /*!< Are header entries sorted? */
 #define        HEADERFLAG_ALLOCATED    (1 << 1) /*!< Is 1st header region allocated? */
index 78a97b2..118d070 100644 (file)
@@ -2082,6 +2082,7 @@ top:
            goto top;
        return NULL;
     }
+    mi->mi_h->instance = mi->mi_offset;
 
     mi->mi_prevoffset = mi->mi_offset;
     mi->mi_modified = 0;