Add RPMTAG_EPOCHNUM tag extension
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 20 Nov 2009 08:32:47 +0000 (10:32 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 20 Nov 2009 08:32:47 +0000 (10:32 +0200)
- return RPMTAG_EPOCH but convert non-existent epoch to 0, as rpm internals
  treat it

lib/rpmtag.h
lib/tagexts.c
tests/rpmgeneral.at

index 58be8cf..eb3b1ad 100644 (file)
@@ -291,6 +291,7 @@ typedef enum rpmTag_e {
     RPMTAG_NEVRA               = 5016, /* s extension */
     RPMTAG_HEADERCOLOR         = 5017, /* i extension */
     RPMTAG_VERBOSE             = 5018, /* i extension */
+    RPMTAG_EPOCHNUM            = 5019, /* i extension */
 
     RPMTAG_FIRSTFREE_TAG       /*!< internal */
 } rpmTag;
index eac9aca..f438d19 100644 (file)
@@ -744,6 +744,21 @@ static int verboseTag(Header h, rpmtd td, headerGetFlags hgflags)
     }
 }
 
+static int epochnumTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+    /* For consistency, always return malloced data */
+    if (!headerGet(h, RPMTAG_EPOCH, td, HEADERGET_ALLOC)) {
+       uint32_t *e = malloc(sizeof(*e));
+       *e = 0;
+       td->data = e;
+       td->type = RPM_INT32_TYPE;
+       td->count = 1;
+       td->flags = RPMTD_ALLOCED;
+    }
+    td->tag = RPMTAG_EPOCHNUM;
+    return 1;
+}
+
 void *rpmHeaderTagFunc(rpmTag tag)
 {
     const struct headerTagFunc_s * ext;
@@ -784,6 +799,7 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
     { RPMTAG_NEVRA,            nevraTag },
     { RPMTAG_HEADERCOLOR,      headercolorTag },
     { RPMTAG_VERBOSE,          verboseTag },
+    { RPMTAG_EPOCHNUM,         epochnumTag },
     { 0,                       NULL }
 };
 
index de5c3f5..98f86d5 100644 (file)
@@ -97,6 +97,7 @@ DISTURL
 DSAHEADER
 E
 EPOCH
+EPOCHNUM
 EVR
 EXCLUDEARCH
 EXCLUDEOS