Use rpm_tag_t everywhere for rpm (header) tag type
[platform/upstream/rpm.git] / lib / rpmtag.h
1 #ifndef _RPMTAG_H
2 #define _RPMTAG_H
3
4 /** \ingroup rpmtag
5  * Automatically generated table of tag name/value pairs.
6  */
7 extern const struct headerTagTableEntry_s * rpmTagTable;
8
9 /** \ingroup rpmtag
10  * Number of entries in rpmTagTable.
11  */
12 extern const int rpmTagTableSize;
13
14 /** \ingroup rpmtag
15  */
16 extern headerTagIndices rpmTags;
17
18 /** \ingroup header
19  * Table of query format extensions.
20  * @note Chains to headerDefaultFormats[].
21  */
22 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
23
24 /**
25  * Pseudo-tags used by the rpmdb and rpmgi iterator API's.
26  */
27 #define RPMDBI_PACKAGES         0       /* Installed package headers. */
28 #define RPMDBI_DEPENDS          1       /* Dependency resolution cache. */
29 #define RPMDBI_LABEL            2       /* Fingerprint search marker. */
30 #define RPMDBI_ADDED            3       /* Added package headers. */
31 #define RPMDBI_REMOVED          4       /* Removed package headers. */
32 #define RPMDBI_AVAILABLE        5       /* Available package headers. */
33 #define RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
34 #define RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
35 #define RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
36
37 /** \ingroup rpmtag
38  * Tags identify data in package headers.
39  * @note tags should not have value 0!
40  */
41 /** @todo: Somehow supply type **/
42 typedef enum rpmTag_e {
43
44     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         /*!< Current image. */
45     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    /*!< Signatures. */
46     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     /*!< Original image. */
47     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       /*!< Regions. */
48
49     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, /*!< I18N string locales. */
50
51 /* Retrofit (and uniqify) signature tags for use by rpmTagGetName() and rpmQuery. */
52 /* the md5 sum was broken *twice* on big endian machines */
53 /* XXX 2nd underscore prevents tagTable generation */
54     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
55     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,    /* i */
56     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    /* internal - obsolete */
57     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,    /* x */
58     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    /* x internal - obsolete */
59     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,    /* x */
60 #define RPMTAG_PKGID    RPMTAG_SIGMD5                   /* x */
61     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,    /* x */
62     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    /* internal - obsolete */
63
64     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    /* internal - obsolete */
65     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    /* internal - obsolete */
66     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,   /* s[] */
67     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,   /* x */
68     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,   /* x */
69     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,   /* s */
70 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
71
72     RPMTAG_NAME                 = 1000, /* s */
73 #define RPMTAG_N        RPMTAG_NAME     /* s */
74     RPMTAG_VERSION              = 1001, /* s */
75 #define RPMTAG_V        RPMTAG_VERSION  /* s */
76     RPMTAG_RELEASE              = 1002, /* s */
77 #define RPMTAG_R        RPMTAG_RELEASE  /* s */
78     RPMTAG_EPOCH                = 1003, /* i */
79 #define RPMTAG_E        RPMTAG_EPOCH    /* i */
80     RPMTAG_SUMMARY              = 1004, /* s{} */
81     RPMTAG_DESCRIPTION          = 1005, /* s{} */
82     RPMTAG_BUILDTIME            = 1006, /* i */
83     RPMTAG_BUILDHOST            = 1007, /* s */
84     RPMTAG_INSTALLTIME          = 1008, /* i */
85     RPMTAG_SIZE                 = 1009, /* i */
86     RPMTAG_DISTRIBUTION         = 1010, /* s */
87     RPMTAG_VENDOR               = 1011, /* s */
88     RPMTAG_GIF                  = 1012, /* x */
89     RPMTAG_XPM                  = 1013, /* x */
90     RPMTAG_LICENSE              = 1014, /* s */
91     RPMTAG_PACKAGER             = 1015, /* s */
92     RPMTAG_GROUP                = 1016, /* s{} */
93     RPMTAG_CHANGELOG            = 1017, /* s[] internal */
94     RPMTAG_SOURCE               = 1018, /* s[] */
95     RPMTAG_PATCH                = 1019, /* s[] */
96     RPMTAG_URL                  = 1020, /* s */
97     RPMTAG_OS                   = 1021, /* s legacy used int */
98     RPMTAG_ARCH                 = 1022, /* s legacy used int */
99     RPMTAG_PREIN                = 1023, /* s */
100     RPMTAG_POSTIN               = 1024, /* s */
101     RPMTAG_PREUN                = 1025, /* s */
102     RPMTAG_POSTUN               = 1026, /* s */
103     RPMTAG_OLDFILENAMES         = 1027, /* s[] obsolete */
104     RPMTAG_FILESIZES            = 1028, /* i[] */
105     RPMTAG_FILESTATES           = 1029, /* c[] */
106     RPMTAG_FILEMODES            = 1030, /* h[] */
107     RPMTAG_FILEUIDS             = 1031, /* i[] internal */
108     RPMTAG_FILEGIDS             = 1032, /* i[] internal */
109     RPMTAG_FILERDEVS            = 1033, /* h[] */
110     RPMTAG_FILEMTIMES           = 1034, /* i[] */
111     RPMTAG_FILEDIGESTS          = 1035, /* s[] */
112 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
113     RPMTAG_FILELINKTOS          = 1036, /* s[] */
114     RPMTAG_FILEFLAGS            = 1037, /* i[] */
115     RPMTAG_ROOT                 = 1038, /* internal - obsolete */
116     RPMTAG_FILEUSERNAME         = 1039, /* s[] */
117     RPMTAG_FILEGROUPNAME        = 1040, /* s[] */
118     RPMTAG_EXCLUDE              = 1041, /* internal - obsolete */
119     RPMTAG_EXCLUSIVE            = 1042, /* internal - obsolete */
120     RPMTAG_ICON                 = 1043, /* x */
121     RPMTAG_SOURCERPM            = 1044, /* s */
122     RPMTAG_FILEVERIFYFLAGS      = 1045, /* i[] */
123     RPMTAG_ARCHIVESIZE          = 1046, /* i */
124     RPMTAG_PROVIDENAME          = 1047, /* s[] */
125 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* s[] */
126 #define RPMTAG_P        RPMTAG_PROVIDENAME      /* s[] */
127     RPMTAG_REQUIREFLAGS         = 1048, /* i[] */
128     RPMTAG_REQUIRENAME          = 1049, /* s[] */
129 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
130     RPMTAG_REQUIREVERSION       = 1050, /* s[] */
131     RPMTAG_NOSOURCE             = 1051, /* i internal */
132     RPMTAG_NOPATCH              = 1052, /* i internal */
133     RPMTAG_CONFLICTFLAGS        = 1053, /* i[] */
134     RPMTAG_CONFLICTNAME         = 1054, /* s[] */
135 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
136 #define RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
137     RPMTAG_CONFLICTVERSION      = 1055, /* s[] */
138     RPMTAG_DEFAULTPREFIX        = 1056, /* s internal - deprecated */
139     RPMTAG_BUILDROOT            = 1057, /* s internal */
140     RPMTAG_INSTALLPREFIX        = 1058, /* s internal - deprecated */
141     RPMTAG_EXCLUDEARCH          = 1059, /* s[] */
142     RPMTAG_EXCLUDEOS            = 1060, /* s[] */
143     RPMTAG_EXCLUSIVEARCH        = 1061, /* s[] */
144     RPMTAG_EXCLUSIVEOS          = 1062, /* s[] */
145     RPMTAG_AUTOREQPROV          = 1063, /* s internal */
146     RPMTAG_RPMVERSION           = 1064, /* s */
147     RPMTAG_TRIGGERSCRIPTS       = 1065, /* s[] */
148     RPMTAG_TRIGGERNAME          = 1066, /* s[] */
149     RPMTAG_TRIGGERVERSION       = 1067, /* s[] */
150     RPMTAG_TRIGGERFLAGS         = 1068, /* i[] */
151     RPMTAG_TRIGGERINDEX         = 1069, /* i[] */
152     RPMTAG_VERIFYSCRIPT         = 1079, /* s */
153     RPMTAG_CHANGELOGTIME        = 1080, /* i[] */
154     RPMTAG_CHANGELOGNAME        = 1081, /* s[] */
155     RPMTAG_CHANGELOGTEXT        = 1082, /* s[] */
156     RPMTAG_BROKENMD5            = 1083, /* internal - obsolete */
157     RPMTAG_PREREQ               = 1084, /* internal */
158     RPMTAG_PREINPROG            = 1085, /* s */
159     RPMTAG_POSTINPROG           = 1086, /* s */
160     RPMTAG_PREUNPROG            = 1087, /* s */
161     RPMTAG_POSTUNPROG           = 1088, /* s */
162     RPMTAG_BUILDARCHS           = 1089, /* s[] */
163     RPMTAG_OBSOLETENAME         = 1090, /* s[] */
164 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
165 #define RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
166     RPMTAG_VERIFYSCRIPTPROG     = 1091, /* s */
167     RPMTAG_TRIGGERSCRIPTPROG    = 1092, /* s[] */
168     RPMTAG_DOCDIR               = 1093, /* internal */
169     RPMTAG_COOKIE               = 1094, /* s */
170     RPMTAG_FILEDEVICES          = 1095, /* i[] */
171     RPMTAG_FILEINODES           = 1096, /* i[] */
172     RPMTAG_FILELANGS            = 1097, /* s[] */
173     RPMTAG_PREFIXES             = 1098, /* s[] */
174     RPMTAG_INSTPREFIXES         = 1099, /* s[] */
175     RPMTAG_TRIGGERIN            = 1100, /* internal */
176     RPMTAG_TRIGGERUN            = 1101, /* internal */
177     RPMTAG_TRIGGERPOSTUN        = 1102, /* internal */
178     RPMTAG_AUTOREQ              = 1103, /* internal */
179     RPMTAG_AUTOPROV             = 1104, /* internal */
180     RPMTAG_CAPABILITY           = 1105, /* i legacy - obsolete */
181     RPMTAG_SOURCEPACKAGE        = 1106, /* i legacy - obsolete */
182     RPMTAG_OLDORIGFILENAMES     = 1107, /* internal - obsolete */
183     RPMTAG_BUILDPREREQ          = 1108, /* internal */
184     RPMTAG_BUILDREQUIRES        = 1109, /* internal */
185     RPMTAG_BUILDCONFLICTS       = 1110, /* internal */
186     RPMTAG_BUILDMACROS          = 1111, /* internal - unused */
187     RPMTAG_PROVIDEFLAGS         = 1112, /* i[] */
188     RPMTAG_PROVIDEVERSION       = 1113, /* s[] */
189     RPMTAG_OBSOLETEFLAGS        = 1114, /* i[] */
190     RPMTAG_OBSOLETEVERSION      = 1115, /* s[] */
191     RPMTAG_DIRINDEXES           = 1116, /* i[] */
192     RPMTAG_BASENAMES            = 1117, /* s[] */
193     RPMTAG_DIRNAMES             = 1118, /* s[] */
194     RPMTAG_ORIGDIRINDEXES       = 1119, /* i[] relocation */
195     RPMTAG_ORIGBASENAMES        = 1120, /* s[] relocation */
196     RPMTAG_ORIGDIRNAMES         = 1121, /* s[] relocation */
197     RPMTAG_OPTFLAGS             = 1122, /* s */
198     RPMTAG_DISTURL              = 1123, /* s */
199     RPMTAG_PAYLOADFORMAT        = 1124, /* s */
200     RPMTAG_PAYLOADCOMPRESSOR    = 1125, /* s */
201     RPMTAG_PAYLOADFLAGS         = 1126, /* s */
202     RPMTAG_INSTALLCOLOR         = 1127, /* i transaction color when installed */
203     RPMTAG_INSTALLTID           = 1128, /* i */
204     RPMTAG_REMOVETID            = 1129, /* i */
205     RPMTAG_SHA1RHN              = 1130, /* internal - obsolete */
206     RPMTAG_RHNPLATFORM          = 1131, /* s deprecated */
207     RPMTAG_PLATFORM             = 1132, /* s */
208     RPMTAG_PATCHESNAME          = 1133, /* s[] deprecated placeholder (SuSE) */
209     RPMTAG_PATCHESFLAGS         = 1134, /* i[] deprecated placeholder (SuSE) */
210     RPMTAG_PATCHESVERSION       = 1135, /* s[] deprecated placeholder (SuSE) */
211     RPMTAG_CACHECTIME           = 1136, /* i */
212     RPMTAG_CACHEPKGPATH         = 1137, /* s */
213     RPMTAG_CACHEPKGSIZE         = 1138, /* i */
214     RPMTAG_CACHEPKGMTIME        = 1139, /* i */
215     RPMTAG_FILECOLORS           = 1140, /* i[] */
216     RPMTAG_FILECLASS            = 1141, /* i[] */
217     RPMTAG_CLASSDICT            = 1142, /* s[] */
218     RPMTAG_FILEDEPENDSX         = 1143, /* i[] */
219     RPMTAG_FILEDEPENDSN         = 1144, /* i[] */
220     RPMTAG_DEPENDSDICT          = 1145, /* i[] */
221     RPMTAG_SOURCEPKGID          = 1146, /* x */
222     RPMTAG_FILECONTEXTS         = 1147, /* s[] - obsolete */
223     RPMTAG_FSCONTEXTS           = 1148, /* s[] extension */
224     RPMTAG_RECONTEXTS           = 1149, /* s[] extension */
225     RPMTAG_POLICIES             = 1150, /* s[] selinux *.te policy file. */
226     RPMTAG_PRETRANS             = 1151, /* s */
227     RPMTAG_POSTTRANS            = 1152, /* s */
228     RPMTAG_PRETRANSPROG         = 1153, /* s */
229     RPMTAG_POSTTRANSPROG        = 1154, /* s */
230     RPMTAG_DISTTAG              = 1155, /* s */
231     RPMTAG_SUGGESTSNAME         = 1156, /* s[] extension */
232 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] */
233     RPMTAG_SUGGESTSVERSION      = 1157, /* s[] extension */
234     RPMTAG_SUGGESTSFLAGS        = 1158, /* i[] extension */
235     RPMTAG_ENHANCESNAME         = 1159, /* s[] extension placeholder */
236 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] */
237     RPMTAG_ENHANCESVERSION      = 1160, /* s[] extension placeholder */
238     RPMTAG_ENHANCESFLAGS        = 1161, /* i[] extension placeholder */
239     RPMTAG_PRIORITY             = 1162, /* i[] extension placeholder */
240     RPMTAG_CVSID                = 1163, /* s */
241 #define RPMTAG_SVNID    RPMTAG_CVSID    /* s */
242     RPMTAG_BLINKPKGID           = 1164, /* s[] */
243     RPMTAG_BLINKHDRID           = 1165, /* s[] */
244     RPMTAG_BLINKNEVRA           = 1166, /* s[] */
245     RPMTAG_FLINKPKGID           = 1167, /* s[] */
246     RPMTAG_FLINKHDRID           = 1168, /* s[] */
247     RPMTAG_FLINKNEVRA           = 1169, /* s[] */
248     RPMTAG_PACKAGEORIGIN        = 1170, /* s */
249     RPMTAG_TRIGGERPREIN         = 1171, /* internal */
250     RPMTAG_BUILDSUGGESTS        = 1172, /* internal */
251     RPMTAG_BUILDENHANCES        = 1173, /* internal */
252     RPMTAG_SCRIPTSTATES         = 1174, /* i[] scriptlet exit codes */
253     RPMTAG_SCRIPTMETRICS        = 1175, /* i[] scriptlet execution times */
254     RPMTAG_BUILDCPUCLOCK        = 1176, /* i */
255     RPMTAG_FILEDIGESTALGOS      = 1177, /* i[] */
256     RPMTAG_VARIANTS             = 1178, /* s[] */
257     RPMTAG_XMAJOR               = 1179, /* i */
258     RPMTAG_XMINOR               = 1180, /* i */
259     RPMTAG_REPOTAG              = 1181, /* s */
260     RPMTAG_KEYWORDS             = 1182, /* s[] */
261     RPMTAG_BUILDPLATFORMS       = 1183, /* s[] */
262     RPMTAG_PACKAGECOLOR         = 1184, /* i */
263     RPMTAG_PACKAGEPREFCOLOR     = 1185, /* i (unimplemented) */
264     RPMTAG_XATTRSDICT           = 1186, /* s[] (unimplemented) */
265     RPMTAG_FILEXATTRSX          = 1187, /* i[] (unimplemented) */
266     RPMTAG_DEPATTRSDICT         = 1188, /* s[] (unimplemented) */
267     RPMTAG_CONFLICTATTRSX       = 1189, /* i[] (unimplemented) */
268     RPMTAG_OBSOLETEATTRSX       = 1190, /* i[] (unimplemented) */
269     RPMTAG_PROVIDEATTRSX        = 1191, /* i[] (unimplemented) */
270     RPMTAG_REQUIREATTRSX        = 1192, /* i[] (unimplemented) */
271     RPMTAG_BUILDPROVIDES        = 1193, /* internal */
272     RPMTAG_BUILDOBSOLETES       = 1194, /* internal */
273
274     RPMTAG_FIRSTFREE_TAG        /*!< internal */
275 } rpmTag;
276
277 #define RPMTAG_EXTERNAL_TAG             1000000
278 #define RPMTAG_NOT_FOUND                -1
279
280
281 /** \ingroup rpmtag
282  * Return tag name from value.
283  * @param tag           tag value
284  * @return              tag name, "(unknown)" on not found
285  */
286 const char * rpmTagGetName(rpm_tag_t tag);
287
288 /** \ingroup rpmtag
289  * Return tag data type from value.
290  * @param tag           tag value
291  * @return              tag data type, RPM_NULL_TYPE on not found.
292  */
293 int rpmTagGetType(rpm_tag_t tag);
294
295 /** \ingroup rpmtag
296  * Return tag value from name.
297  * @param tagstr        name of tag
298  * @return              tag value, -1 on not found
299  */
300 rpm_tag_t rpmTagGetValue(const char * tagstr);
301
302 #endif /* _RPMTAG_H */