X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Frpmtag.h;h=025a0a41576334fbdb0037e452ef5265f755bcf1;hb=9cf156d6583a9f9581000bb12ff047980ebcef03;hp=32b249599b14418d68b20b125aa5223bee9496c1;hpb=367c0d7014b769a5c12f83b525dddb0a7c76beef;p=platform%2Fupstream%2Frpm.git diff --git a/lib/rpmtag.h b/lib/rpmtag.h index 32b2495..025a0a4 100644 --- a/lib/rpmtag.h +++ b/lib/rpmtag.h @@ -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