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