Modify eu-strip option to perform strip in post script of rpm package & add option...
[platform/upstream/rpm.git] / lib / rpmtag.h
index 9e1653e..025a0a4 100644 (file)
@@ -8,19 +8,6 @@ extern "C" {
 #endif
 
 /**
- * Pseudo-tags used by the rpmdb and rpmgi iterator API's.
- */
-#define        RPMDBI_PACKAGES         0       /* Installed package headers. */
-#define        RPMDBI_DEPENDS          1       /* Dependency resolution cache. */
-#define        RPMDBI_LABEL            2       /* Fingerprint search marker. */
-#define        RPMDBI_ADDED            3       /* Added package headers. */
-#define        RPMDBI_REMOVED          4       /* Removed package headers. */
-#define        RPMDBI_AVAILABLE        5       /* Available package headers. */
-#define        RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
-#define        RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
-#define        RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
-
-/**
  * Header private tags.
  * @note General use tags should start at 1000 (RPM's tag space starts there).
  */
@@ -35,9 +22,11 @@ extern "C" {
 /** \ingroup rpmtag
  * Tags identify data in package headers.
  * @note tags should not have value 0!
+ * @note all new tags should be added above 5000
  */
 /** @todo: Somehow supply type **/
 typedef enum rpmTag_e {
+    RPMTAG_NOT_FOUND           = -1,                   /*!< Unknown tag */
 
     RPMTAG_HEADERIMAGE         = HEADER_IMAGE,         /*!< Current image. */
     RPMTAG_HEADERSIGNATURES    = HEADER_SIGNATURES,    /*!< Signatures. */
@@ -66,6 +55,8 @@ typedef enum rpmTag_e {
     RPMTAG_RSAHEADER           = RPMTAG_SIG_BASE+12,   /* x */
     RPMTAG_SHA1HEADER          = RPMTAG_SIG_BASE+13,   /* s */
 #define        RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
+    RPMTAG_LONGSIGSIZE         = RPMTAG_SIG_BASE+14,   /* l */
+    RPMTAG_LONGARCHIVESIZE     = RPMTAG_SIG_BASE+15,   /* l */
 
     RPMTAG_NAME                = 1000, /* s */
 #define        RPMTAG_N        RPMTAG_NAME     /* s */
@@ -102,8 +93,8 @@ typedef enum rpmTag_e {
     RPMTAG_FILESIZES           = 1028, /* i[] */
     RPMTAG_FILESTATES          = 1029, /* c[] */
     RPMTAG_FILEMODES           = 1030, /* h[] */
-    RPMTAG_FILEUIDS            = 1031, /* i[] internal */
-    RPMTAG_FILEGIDS            = 1032, /* i[] internal */
+    RPMTAG_FILEUIDS            = 1031, /* i[] internal - obsolete */
+    RPMTAG_FILEGIDS            = 1032, /* i[] internal - obsolete */
     RPMTAG_FILERDEVS           = 1033, /* h[] */
     RPMTAG_FILEMTIMES          = 1034, /* i[] */
     RPMTAG_FILEDIGESTS         = 1035, /* s[] */
@@ -126,15 +117,15 @@ typedef enum rpmTag_e {
     RPMTAG_REQUIRENAME         = 1049, /* s[] */
 #define        RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
     RPMTAG_REQUIREVERSION      = 1050, /* s[] */
-    RPMTAG_NOSOURCE            = 1051, /* i internal */
-    RPMTAG_NOPATCH             = 1052, /* i internal */
+    RPMTAG_NOSOURCE            = 1051, /* i */
+    RPMTAG_NOPATCH             = 1052, /* i */
     RPMTAG_CONFLICTFLAGS       = 1053, /* i[] */
     RPMTAG_CONFLICTNAME                = 1054, /* s[] */
 #define        RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
 #define        RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
     RPMTAG_CONFLICTVERSION     = 1055, /* s[] */
     RPMTAG_DEFAULTPREFIX       = 1056, /* s internal - deprecated */
-    RPMTAG_BUILDROOT           = 1057, /* s internal */
+    RPMTAG_BUILDROOT           = 1057, /* s internal - obsolete */
     RPMTAG_INSTALLPREFIX       = 1058, /* s internal - deprecated */
     RPMTAG_EXCLUDEARCH         = 1059, /* s[] */
     RPMTAG_EXCLUDEOS           = 1060, /* s[] */
@@ -153,15 +144,15 @@ typedef enum rpmTag_e {
     RPMTAG_CHANGELOGTEXT       = 1082, /* s[] */
     RPMTAG_BROKENMD5           = 1083, /* internal - obsolete */
     RPMTAG_PREREQ              = 1084, /* internal */
-    RPMTAG_PREINPROG           = 1085, /* s */
-    RPMTAG_POSTINPROG          = 1086, /* s */
-    RPMTAG_PREUNPROG           = 1087, /* s */
-    RPMTAG_POSTUNPROG          = 1088, /* s */
+    RPMTAG_PREINPROG           = 1085, /* s[] */
+    RPMTAG_POSTINPROG          = 1086, /* s[] */
+    RPMTAG_PREUNPROG           = 1087, /* s[] */
+    RPMTAG_POSTUNPROG          = 1088, /* s[] */
     RPMTAG_BUILDARCHS          = 1089, /* s[] */
     RPMTAG_OBSOLETENAME                = 1090, /* s[] */
 #define        RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
 #define        RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
-    RPMTAG_VERIFYSCRIPTPROG    = 1091, /* s */
+    RPMTAG_VERIFYSCRIPTPROG    = 1091, /* s[] */
     RPMTAG_TRIGGERSCRIPTPROG   = 1092, /* s[] */
     RPMTAG_DOCDIR              = 1093, /* internal */
     RPMTAG_COOKIE              = 1094, /* s */
@@ -175,8 +166,8 @@ typedef enum rpmTag_e {
     RPMTAG_TRIGGERPOSTUN       = 1102, /* internal */
     RPMTAG_AUTOREQ             = 1103, /* internal */
     RPMTAG_AUTOPROV            = 1104, /* internal */
-    RPMTAG_CAPABILITY          = 1105, /* i legacy - obsolete */
-    RPMTAG_SOURCEPACKAGE       = 1106, /* i legacy - obsolete */
+    RPMTAG_CAPABILITY          = 1105, /* i internal - obsolete */
+    RPMTAG_SOURCEPACKAGE       = 1106, /* i */
     RPMTAG_OLDORIGFILENAMES    = 1107, /* internal - obsolete */
     RPMTAG_BUILDPREREQ         = 1108, /* internal */
     RPMTAG_BUILDREQUIRES       = 1109, /* internal */
@@ -201,15 +192,15 @@ typedef enum rpmTag_e {
     RPMTAG_INSTALLTID          = 1128, /* i */
     RPMTAG_REMOVETID           = 1129, /* i */
     RPMTAG_SHA1RHN             = 1130, /* internal - obsolete */
-    RPMTAG_RHNPLATFORM         = 1131, /* s deprecated */
+    RPMTAG_RHNPLATFORM         = 1131, /* s internal - obsolete */
     RPMTAG_PLATFORM            = 1132, /* s */
     RPMTAG_PATCHESNAME         = 1133, /* s[] deprecated placeholder (SuSE) */
     RPMTAG_PATCHESFLAGS                = 1134, /* i[] deprecated placeholder (SuSE) */
     RPMTAG_PATCHESVERSION      = 1135, /* s[] deprecated placeholder (SuSE) */
-    RPMTAG_CACHECTIME          = 1136, /* i */
-    RPMTAG_CACHEPKGPATH                = 1137, /* s */
-    RPMTAG_CACHEPKGSIZE                = 1138, /* i */
-    RPMTAG_CACHEPKGMTIME       = 1139, /* i */
+    RPMTAG_CACHECTIME          = 1136, /* i internal - obsolete */
+    RPMTAG_CACHEPKGPATH                = 1137, /* s internal - obsolete */
+    RPMTAG_CACHEPKGSIZE                = 1138, /* i internal - obsolete */
+    RPMTAG_CACHEPKGMTIME       = 1139, /* i internal - obsolete */
     RPMTAG_FILECOLORS          = 1140, /* i[] */
     RPMTAG_FILECLASS           = 1141, /* i[] */
     RPMTAG_CLASSDICT           = 1142, /* s[] */
@@ -223,41 +214,41 @@ typedef enum rpmTag_e {
     RPMTAG_POLICIES            = 1150, /* s[] selinux *.te policy file. */
     RPMTAG_PRETRANS            = 1151, /* s */
     RPMTAG_POSTTRANS           = 1152, /* s */
-    RPMTAG_PRETRANSPROG                = 1153, /* s */
-    RPMTAG_POSTTRANSPROG       = 1154, /* s */
+    RPMTAG_PRETRANSPROG                = 1153, /* s[] */
+    RPMTAG_POSTTRANSPROG       = 1154, /* s[] */
     RPMTAG_DISTTAG             = 1155, /* s */
     RPMTAG_SUGGESTSNAME                = 1156, /* s[] extension */
 #define        RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] */
     RPMTAG_SUGGESTSVERSION     = 1157, /* s[] extension */
     RPMTAG_SUGGESTSFLAGS       = 1158, /* i[] extension */
-    RPMTAG_ENHANCESNAME                = 1159, /* s[] extension placeholder */
+    RPMTAG_ENHANCESNAME                = 1159, /* s[] extension */
 #define        RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] */
-    RPMTAG_ENHANCESVERSION     = 1160, /* s[] extension placeholder */
-    RPMTAG_ENHANCESFLAGS       = 1161, /* i[] extension placeholder */
-    RPMTAG_PRIORITY            = 1162, /* i[] extension placeholder */
-    RPMTAG_CVSID               = 1163, /* s */
-#define        RPMTAG_SVNID    RPMTAG_CVSID    /* s */
-    RPMTAG_BLINKPKGID          = 1164, /* s[] */
-    RPMTAG_BLINKHDRID          = 1165, /* s[] */
-    RPMTAG_BLINKNEVRA          = 1166, /* s[] */
-    RPMTAG_FLINKPKGID          = 1167, /* s[] */
-    RPMTAG_FLINKHDRID          = 1168, /* s[] */
-    RPMTAG_FLINKNEVRA          = 1169, /* s[] */
-    RPMTAG_PACKAGEORIGIN       = 1170, /* s */
+    RPMTAG_ENHANCESVERSION     = 1160, /* s[] extension */
+    RPMTAG_ENHANCESFLAGS       = 1161, /* i[] extension */
+    RPMTAG_PRIORITY            = 1162, /* i[] extension placeholder (unimplemented) */
+    RPMTAG_CVSID               = 1163, /* s (unimplemented) */
+#define        RPMTAG_SVNID    RPMTAG_CVSID    /* s (unimplemented) */
+    RPMTAG_BLINKPKGID          = 1164, /* s[] (unimplemented) */
+    RPMTAG_BLINKHDRID          = 1165, /* s[] (unimplemented) */
+    RPMTAG_BLINKNEVRA          = 1166, /* s[] (unimplemented) */
+    RPMTAG_FLINKPKGID          = 1167, /* s[] (unimplemented) */
+    RPMTAG_FLINKHDRID          = 1168, /* s[] (unimplemented) */
+    RPMTAG_FLINKNEVRA          = 1169, /* s[] (unimplemented) */
+    RPMTAG_PACKAGEORIGIN       = 1170, /* s (unimplemented) */
     RPMTAG_TRIGGERPREIN                = 1171, /* internal */
-    RPMTAG_BUILDSUGGESTS       = 1172, /* internal */
-    RPMTAG_BUILDENHANCES       = 1173, /* internal */
-    RPMTAG_SCRIPTSTATES                = 1174, /* i[] scriptlet exit codes */
-    RPMTAG_SCRIPTMETRICS       = 1175, /* i[] scriptlet execution times */
-    RPMTAG_BUILDCPUCLOCK       = 1176, /* i */
-    RPMTAG_FILEDIGESTALGO      = 1177, /* i file checksum algorithm */
-    RPMTAG_VARIANTS            = 1178, /* s[] */
-    RPMTAG_XMAJOR              = 1179, /* i */
-    RPMTAG_XMINOR              = 1180, /* i */
-    RPMTAG_REPOTAG             = 1181, /* s */
-    RPMTAG_KEYWORDS            = 1182, /* s[] */
-    RPMTAG_BUILDPLATFORMS      = 1183, /* s[] */
-    RPMTAG_PACKAGECOLOR                = 1184, /* i */
+    RPMTAG_BUILDSUGGESTS       = 1172, /* internal (unimplemented) */
+    RPMTAG_BUILDENHANCES       = 1173, /* internal (unimplemented) */
+    RPMTAG_SCRIPTSTATES                = 1174, /* i[] scriptlet exit codes (unimplemented) */
+    RPMTAG_SCRIPTMETRICS       = 1175, /* i[] scriptlet execution times (unimplemented) */
+    RPMTAG_BUILDCPUCLOCK       = 1176, /* i (unimplemented) */
+    RPMTAG_FILEDIGESTALGOS     = 1177, /* i[] (unimplemented) */
+    RPMTAG_VARIANTS            = 1178, /* s[] (unimplemented) */
+    RPMTAG_XMAJOR              = 1179, /* i (unimplemented) */
+    RPMTAG_XMINOR              = 1180, /* i (unimplemented) */
+    RPMTAG_REPOTAG             = 1181, /* s (unimplemented) */
+    RPMTAG_KEYWORDS            = 1182, /* s[] (unimplemented) */
+    RPMTAG_BUILDPLATFORMS      = 1183, /* s[] (unimplemented) */
+    RPMTAG_PACKAGECOLOR                = 1184, /* i (unimplemented) */
     RPMTAG_PACKAGEPREFCOLOR    = 1185, /* i (unimplemented) */
     RPMTAG_XATTRSDICT          = 1186, /* s[] (unimplemented) */
     RPMTAG_FILEXATTRSX         = 1187, /* i[] (unimplemented) */
@@ -266,39 +257,102 @@ typedef enum rpmTag_e {
     RPMTAG_OBSOLETEATTRSX      = 1190, /* i[] (unimplemented) */
     RPMTAG_PROVIDEATTRSX       = 1191, /* i[] (unimplemented) */
     RPMTAG_REQUIREATTRSX       = 1192, /* i[] (unimplemented) */
-    RPMTAG_BUILDPROVIDES       = 1193, /* internal */
-    RPMTAG_BUILDOBSOLETES      = 1194, /* internal */
+    RPMTAG_BUILDPROVIDES       = 1193, /* internal (unimplemented) */
+    RPMTAG_BUILDOBSOLETES      = 1194, /* internal (unimplemented) */
+    RPMTAG_DBINSTANCE          = 1195, /* i extension */
+    RPMTAG_NVRA                        = 1196, /* s extension */
+    /* tags 1997-4999 reserved */
     RPMTAG_FILENAMES           = 5000, /* s[] extension */
     RPMTAG_FILEPROVIDE         = 5001, /* s[] extension */
     RPMTAG_FILEREQUIRE         = 5002, /* s[] extension */
-    RPMTAG_FSNAMES             = 5003, /* s[] extension */
-    RPMTAG_FSSIZES             = 5004, /* i[] extension */
+    RPMTAG_FSNAMES             = 5003, /* s[] (unimplemented) */
+    RPMTAG_FSSIZES             = 5004, /* l[] (unimplemented) */
     RPMTAG_TRIGGERCONDS                = 5005, /* s[] extension */
     RPMTAG_TRIGGERTYPE         = 5006, /* s[] extension */
+    RPMTAG_ORIGFILENAMES       = 5007, /* s[] extension */
+    RPMTAG_LONGFILESIZES       = 5008, /* l[] */
+    RPMTAG_LONGSIZE            = 5009, /* l */
+    RPMTAG_FILECAPS            = 5010, /* s[] */
+    RPMTAG_FILEDIGESTALGO      = 5011, /* i file digest algorithm */
+    RPMTAG_BUGURL              = 5012, /* s */
+    RPMTAG_EVR                 = 5013, /* s extension */
+    RPMTAG_NVR                 = 5014, /* s extension */
+    RPMTAG_NEVR                        = 5015, /* s extension */
+    RPMTAG_NEVRA               = 5016, /* s extension */
+    RPMTAG_HEADERCOLOR         = 5017, /* i extension */
+    RPMTAG_VERBOSE             = 5018, /* i extension */
+    RPMTAG_EPOCHNUM            = 5019, /* i extension */
+    RPMTAG_PREINFLAGS          = 5020, /* i */
+    RPMTAG_POSTINFLAGS         = 5021, /* i */
+    RPMTAG_PREUNFLAGS          = 5022, /* i */
+    RPMTAG_POSTUNFLAGS         = 5023, /* i */
+    RPMTAG_PRETRANSFLAGS       = 5024, /* i */
+    RPMTAG_POSTTRANSFLAGS      = 5025, /* i */
+    RPMTAG_VERIFYSCRIPTFLAGS   = 5026, /* i */
+    RPMTAG_TRIGGERSCRIPTFLAGS  = 5027, /* i[] */
+    RPMTAG_COLLECTIONS         = 5029, /* s[] list of collections */
+    RPMTAG_POLICYNAMES         = 5030, /* s[] */
+    RPMTAG_POLICYTYPES         = 5031, /* s[] */
+    RPMTAG_POLICYTYPESINDEXES  = 5032, /* i[] */
+    RPMTAG_POLICYFLAGS         = 5033, /* i[] */
+    RPMTAG_VCS                 = 5034, /* s */
+    RPMTAG_ORDERNAME           = 5035, /* s[] */
+    RPMTAG_ORDERVERSION                = 5036, /* s[] */
+    RPMTAG_ORDERFLAGS          = 5037, /* i[] */
+    RPMTAG_SECMANIFEST         = 5038, /* s[] security manifest file */
+    RPMTAG_SECSWSOURCE         = 5039, /* s[] security software source */
+    RPMTAG_INSTFILENAMES       = 5040, /* s[] extension */
+    RPMTAG_REQUIRENEVRS                = 5041, /* s[] extension */
+    RPMTAG_PROVIDENEVRS                = 5042, /* s[] extension */
+    RPMTAG_OBSOLETENEVRS       = 5043, /* s[] extension */
+    RPMTAG_CONFLICTNEVRS       = 5044, /* s[] extension */
+    RPMTAG_FILENLINKS          = 5045, /* i[] extension */
 
     RPMTAG_FIRSTFREE_TAG       /*!< internal */
 } rpmTag;
 
 #define        RPMTAG_EXTERNAL_TAG             1000000
-#define RPMTAG_NOT_FOUND               -1
+
+/** \ingroup rpmtag
+ * Rpm database index tags.
+ */
+typedef enum rpmDbiTag_e {
+    RPMDBI_PACKAGES            = 0,    /* Installed package headers. */
+    RPMDBI_LABEL               = 2,    /* NEVRA label pseudo index */
+    RPMDBI_NAME                        = RPMTAG_NAME,
+    RPMDBI_BASENAMES           = RPMTAG_BASENAMES,
+    RPMDBI_GROUP               = RPMTAG_GROUP,
+    RPMDBI_REQUIRENAME         = RPMTAG_REQUIRENAME,
+    RPMDBI_PROVIDENAME         = RPMTAG_PROVIDENAME,
+    RPMDBI_CONFLICTNAME                = RPMTAG_CONFLICTNAME,
+    RPMDBI_OBSOLETENAME                = RPMTAG_OBSOLETENAME,
+    RPMDBI_TRIGGERNAME         = RPMTAG_TRIGGERNAME,
+    RPMDBI_DIRNAMES            = RPMTAG_DIRNAMES,
+    RPMDBI_INSTALLTID          = RPMTAG_INSTALLTID,
+    RPMDBI_SIGMD5              = RPMTAG_SIGMD5,
+    RPMDBI_SHA1HEADER          = RPMTAG_SHA1HEADER,
+    RPMDBI_INSTFILENAMES       = RPMTAG_INSTFILENAMES,
+} rpmDbiTag;
 
 /** \ingroup signature
  * Tags found in signature header from package.
  */
 typedef enum rpmSigTag_e {
-    RPMSIGTAG_SIZE     = 1000, /*!< internal Header+Payload size in bytes. */
+    RPMSIGTAG_SIZE     = 1000, /*!< internal Header+Payload size (32bit) in bytes. */
     RPMSIGTAG_LEMD5_1  = 1001, /*!< internal Broken MD5, take 1 @deprecated legacy. */
     RPMSIGTAG_PGP      = 1002, /*!< internal PGP 2.6.3 signature. */
     RPMSIGTAG_LEMD5_2  = 1003, /*!< internal Broken MD5, take 2 @deprecated legacy. */
     RPMSIGTAG_MD5      = 1004, /*!< internal MD5 signature. */
     RPMSIGTAG_GPG      = 1005, /*!< internal GnuPG signature. */
     RPMSIGTAG_PGP5     = 1006, /*!< internal PGP5 signature @deprecated legacy. */
-    RPMSIGTAG_PAYLOADSIZE = 1007,/*!< internal uncompressed payload size in bytes. */
+    RPMSIGTAG_PAYLOADSIZE = 1007,/*!< internal uncompressed payload size (32bit) in bytes. */
     RPMSIGTAG_BADSHA1_1        = RPMTAG_BADSHA1_1,     /*!< internal Broken SHA1, take 1. */
     RPMSIGTAG_BADSHA1_2        = RPMTAG_BADSHA1_2,     /*!< internal Broken SHA1, take 2. */
     RPMSIGTAG_SHA1     = RPMTAG_SHA1HEADER,    /*!< internal sha1 header digest. */
     RPMSIGTAG_DSA      = RPMTAG_DSAHEADER,     /*!< internal DSA header signature. */
-    RPMSIGTAG_RSA      = RPMTAG_RSAHEADER      /*!< internal RSA header signature. */
+    RPMSIGTAG_RSA      = RPMTAG_RSAHEADER,     /*!< internal RSA header signature. */
+    RPMSIGTAG_LONGSIZE = RPMTAG_LONGSIGSIZE,   /*!< internal Header+Payload size (64bit) in bytes. */
+    RPMSIGTAG_LONGARCHIVESIZE = RPMTAG_LONGARCHIVESIZE, /*!< internal uncompressed payload size (64bit) in bytes. */
 } rpmSigTag;
 
 
@@ -312,7 +366,7 @@ typedef enum rpmTagType_e {
     RPM_INT8_TYPE              =  2,
     RPM_INT16_TYPE             =  3,
     RPM_INT32_TYPE             =  4,
-/*    RPM_INT64_TYPE   = 5,   ---- These aren't supported (yet) */
+    RPM_INT64_TYPE             =  5,
     RPM_STRING_TYPE            =  6,
     RPM_BIN_TYPE               =  7,
     RPM_STRING_ARRAY_TYPE      =  8,
@@ -322,6 +376,16 @@ typedef enum rpmTagType_e {
 #define RPM_MASK_TYPE          0x0000ffff
 } rpmTagType;
 
+/** \ingroup rpmtag
+ * The classes of data in tags from headers.
+ */
+typedef enum rpmTagClass_e {
+    RPM_NULL_CLASS     = 0,
+    RPM_NUMERIC_CLASS  = 1,
+    RPM_STRING_CLASS   = 2,
+    RPM_BINARY_CLASS   = 3,
+} rpmTagClass;
+
 /** \ingroup header
  * New rpm data types under consideration/development.
  * These data types may (or may not) be added to rpm at some point. In order
@@ -343,34 +407,64 @@ typedef enum rpmSubTagType_e {
 /** \ingroup header
  *  * Identify how to return the header data type.
  *   */
-typedef enum rpmTagReturnType_e {
+enum rpmTagReturnType_e {
     RPM_ANY_RETURN_TYPE         = 0,
     RPM_SCALAR_RETURN_TYPE      = 0x00010000,
     RPM_ARRAY_RETURN_TYPE       = 0x00020000,
     RPM_MAPPING_RETURN_TYPE     = 0x00040000,
     RPM_MASK_RETURN_TYPE        = 0xffff0000
-} rpmTagReturnType;
+};
+
+typedef rpmFlags rpmTagReturnType;
 
 /** \ingroup rpmtag
  * Return tag name from value.
  * @param tag          tag value
  * @return             tag name, "(unknown)" on not found
  */
-const char * rpmTagGetName(rpmTag tag);
+const char * rpmTagGetName(rpmTagVal tag);
+
+/** \ingroup rpmtag
+ * Return tag data type from value.
+ * @param tag          tag value
+ * @return             tag data type + return type, RPM_NULL_TYPE on not found.
+ */
+rpmTagType rpmTagGetType(rpmTagVal tag);
 
 /** \ingroup rpmtag
  * Return tag data type from value.
  * @param tag          tag value
  * @return             tag data type, RPM_NULL_TYPE on not found.
  */
-rpmTagType rpmTagGetType(rpmTag tag);
+rpmTagType rpmTagGetTagType(rpmTagVal tag);
+
+/** \ingroup rpmtag
+ * Return tag data type from value.
+ * @param tag          tag value
+ * @return             tag data return type, RPM_NULL_TYPE on not found.
+ */
+rpmTagReturnType rpmTagGetReturnType(rpmTagVal tag);
+
+/** \ingroup rpmtag
+ * Return tag data class from value.
+ * @param tag          tag value
+ * @return             tag data class, RPM_NULL_CLASS on not found.
+ */
+rpmTagClass rpmTagGetClass(rpmTagVal tag);
 
 /** \ingroup rpmtag
  * Return tag value from name.
  * @param tagstr       name of tag
  * @return             tag value, -1 on not found
  */
-rpmTag rpmTagGetValue(const char * tagstr);
+rpmTagVal rpmTagGetValue(const char * tagstr);
+
+/** \ingroup rpmtag
+ * Return data class of type
+ * @param type         tag type
+ * @return             data class, RPM_NULL_CLASS on unknown.
+ */
+rpmTagClass rpmTagTypeGetClass(rpmTagType type);
 
 /** \ingroup rpmtag
  * Return known rpm tag names, sorted by name.