Modify eu-strip option to perform strip in post script of rpm package & add option...
[platform/upstream/rpm.git] / lib / rpmtag.h
index 32b2495..025a0a4 100644 (file)
@@ -8,17 +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_ARGLIST          6       /* (rpmgi) Argument list. */
-
-/**
  * Header private tags.
  * @note General use tags should start at 1000 (RPM's tag space starts there).
  */
@@ -33,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. */
@@ -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,7 +192,7 @@ 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) */
@@ -223,17 +214,17 @@ 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 (unimplemented) */
-#define        RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] (unimplemented) */
-    RPMTAG_SUGGESTSVERSION     = 1157, /* s[] extension (unimplemented) */
-    RPMTAG_SUGGESTSFLAGS       = 1158, /* i[] extension (unimplemented) */
-    RPMTAG_ENHANCESNAME                = 1159, /* s[] extension placeholder (unimplemented) */
-#define        RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] (unimplemented) */
-    RPMTAG_ENHANCESVERSION     = 1160, /* s[] extension placeholder (unimplemented) */
-    RPMTAG_ENHANCESFLAGS       = 1161, /* i[] extension placeholder (unimplemented) */
+    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 */
+#define        RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* 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) */
@@ -266,10 +257,11 @@ 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 */
@@ -298,12 +290,49 @@ typedef enum rpmTag_e {
     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.
@@ -378,41 +407,57 @@ 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(rpmTag tag);
+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