7 * Accessing RPM tags: values, types, ...
10 #include <rpm/rpmtypes.h>
17 * Header private tags.
18 * @note General use tags should start at 1000 (RPM's tag space starts there).
20 #define HEADER_IMAGE 61
21 #define HEADER_SIGNATURES 62
22 #define HEADER_IMMUTABLE 63
23 #define HEADER_REGIONS 64
24 #define HEADER_I18NTABLE 100
25 #define HEADER_SIGBASE 256
26 #define HEADER_TAGBASE 1000
29 * Tags identify data in package headers.
30 * @note tags should not have value 0!
31 * @note all new tags should be added above 5000
33 /** @todo: Somehow supply type **/
34 typedef enum rpmTag_e {
35 RPMTAG_NOT_FOUND = -1, /*!< Unknown tag */
37 RPMTAG_HEADERIMAGE = HEADER_IMAGE, /*!< Current image. */
38 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES, /*!< Signatures. */
39 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE, /*!< Original image. */
40 RPMTAG_HEADERREGIONS = HEADER_REGIONS, /*!< Regions. */
42 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE, /* s[] !< I18N string locales. */
44 /* Retrofit (and uniqify) signature tags for use by rpmTagGetName() and rpmQuery. */
45 /* the md5 sum was broken *twice* on big endian machines */
46 /* XXX 2nd underscore prevents tagTable generation */
47 RPMTAG_SIG_BASE = HEADER_SIGBASE,
48 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1, /* i */
49 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2, /* internal - obsolete */
50 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3, /* x */
51 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4, /* x internal - obsolete */
52 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5, /* x */
53 #define RPMTAG_PKGID RPMTAG_SIGMD5 /* x */
54 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6, /* x */
55 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7, /* internal - obsolete */
57 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8, /* internal - obsolete */
58 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9, /* internal - obsolete */
59 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10, /* s[] */
60 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11, /* x */
61 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12, /* x */
62 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13, /* s */
63 #define RPMTAG_HDRID RPMTAG_SHA1HEADER /* s */
64 RPMTAG_LONGSIGSIZE = RPMTAG_SIG_BASE+14, /* l */
65 RPMTAG_LONGARCHIVESIZE = RPMTAG_SIG_BASE+15, /* l */
66 /* RPMTAG_SIG_BASE+16 reserved */
67 RPMTAG_SHA256HEADER = RPMTAG_SIG_BASE+17, /* s */
69 RPMTAG_NAME = 1000, /* s */
70 #define RPMTAG_N RPMTAG_NAME /* s */
71 RPMTAG_VERSION = 1001, /* s */
72 #define RPMTAG_V RPMTAG_VERSION /* s */
73 RPMTAG_RELEASE = 1002, /* s */
74 #define RPMTAG_R RPMTAG_RELEASE /* s */
75 RPMTAG_EPOCH = 1003, /* i */
76 #define RPMTAG_E RPMTAG_EPOCH /* i */
77 RPMTAG_SUMMARY = 1004, /* s{} */
78 RPMTAG_DESCRIPTION = 1005, /* s{} */
79 RPMTAG_BUILDTIME = 1006, /* i */
80 RPMTAG_BUILDHOST = 1007, /* s */
81 RPMTAG_INSTALLTIME = 1008, /* i */
82 RPMTAG_SIZE = 1009, /* i */
83 RPMTAG_DISTRIBUTION = 1010, /* s */
84 RPMTAG_VENDOR = 1011, /* s */
85 RPMTAG_GIF = 1012, /* x */
86 RPMTAG_XPM = 1013, /* x */
87 RPMTAG_LICENSE = 1014, /* s */
88 RPMTAG_PACKAGER = 1015, /* s */
89 RPMTAG_GROUP = 1016, /* s{} */
90 RPMTAG_CHANGELOG = 1017, /* s[] internal */
91 RPMTAG_SOURCE = 1018, /* s[] */
92 RPMTAG_PATCH = 1019, /* s[] */
93 RPMTAG_URL = 1020, /* s */
94 RPMTAG_OS = 1021, /* s legacy used int */
95 RPMTAG_ARCH = 1022, /* s legacy used int */
96 RPMTAG_PREIN = 1023, /* s */
97 RPMTAG_POSTIN = 1024, /* s */
98 RPMTAG_PREUN = 1025, /* s */
99 RPMTAG_POSTUN = 1026, /* s */
100 RPMTAG_OLDFILENAMES = 1027, /* s[] obsolete */
101 RPMTAG_FILESIZES = 1028, /* i[] */
102 RPMTAG_FILESTATES = 1029, /* c[] */
103 RPMTAG_FILEMODES = 1030, /* h[] */
104 RPMTAG_FILEUIDS = 1031, /* i[] internal - obsolete */
105 RPMTAG_FILEGIDS = 1032, /* i[] internal - obsolete */
106 RPMTAG_FILERDEVS = 1033, /* h[] */
107 RPMTAG_FILEMTIMES = 1034, /* i[] */
108 RPMTAG_FILEDIGESTS = 1035, /* s[] */
109 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
110 RPMTAG_FILELINKTOS = 1036, /* s[] */
111 RPMTAG_FILEFLAGS = 1037, /* i[] */
112 RPMTAG_ROOT = 1038, /* internal - obsolete */
113 RPMTAG_FILEUSERNAME = 1039, /* s[] */
114 RPMTAG_FILEGROUPNAME = 1040, /* s[] */
115 RPMTAG_EXCLUDE = 1041, /* internal - obsolete */
116 RPMTAG_EXCLUSIVE = 1042, /* internal - obsolete */
117 RPMTAG_ICON = 1043, /* x */
118 RPMTAG_SOURCERPM = 1044, /* s */
119 RPMTAG_FILEVERIFYFLAGS = 1045, /* i[] */
120 RPMTAG_ARCHIVESIZE = 1046, /* i */
121 RPMTAG_PROVIDENAME = 1047, /* s[] */
122 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME /* s[] */
123 #define RPMTAG_P RPMTAG_PROVIDENAME /* s[] */
124 RPMTAG_REQUIREFLAGS = 1048, /* i[] */
125 RPMTAG_REQUIRENAME = 1049, /* s[] */
126 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME /* s[] */
127 RPMTAG_REQUIREVERSION = 1050, /* s[] */
128 RPMTAG_NOSOURCE = 1051, /* i[] */
129 RPMTAG_NOPATCH = 1052, /* i[] */
130 RPMTAG_CONFLICTFLAGS = 1053, /* i[] */
131 RPMTAG_CONFLICTNAME = 1054, /* s[] */
132 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME /* s[] */
133 #define RPMTAG_C RPMTAG_CONFLICTNAME /* s[] */
134 RPMTAG_CONFLICTVERSION = 1055, /* s[] */
135 RPMTAG_DEFAULTPREFIX = 1056, /* s internal - deprecated */
136 RPMTAG_BUILDROOT = 1057, /* s internal - obsolete */
137 RPMTAG_INSTALLPREFIX = 1058, /* s internal - deprecated */
138 RPMTAG_EXCLUDEARCH = 1059, /* s[] */
139 RPMTAG_EXCLUDEOS = 1060, /* s[] */
140 RPMTAG_EXCLUSIVEARCH = 1061, /* s[] */
141 RPMTAG_EXCLUSIVEOS = 1062, /* s[] */
142 RPMTAG_AUTOREQPROV = 1063, /* s internal */
143 RPMTAG_RPMVERSION = 1064, /* s */
144 RPMTAG_TRIGGERSCRIPTS = 1065, /* s[] */
145 RPMTAG_TRIGGERNAME = 1066, /* s[] */
146 RPMTAG_TRIGGERVERSION = 1067, /* s[] */
147 RPMTAG_TRIGGERFLAGS = 1068, /* i[] */
148 RPMTAG_TRIGGERINDEX = 1069, /* i[] */
149 RPMTAG_VERIFYSCRIPT = 1079, /* s */
150 RPMTAG_CHANGELOGTIME = 1080, /* i[] */
151 RPMTAG_CHANGELOGNAME = 1081, /* s[] */
152 RPMTAG_CHANGELOGTEXT = 1082, /* s[] */
153 RPMTAG_BROKENMD5 = 1083, /* internal - obsolete */
154 RPMTAG_PREREQ = 1084, /* internal */
155 RPMTAG_PREINPROG = 1085, /* s[] */
156 RPMTAG_POSTINPROG = 1086, /* s[] */
157 RPMTAG_PREUNPROG = 1087, /* s[] */
158 RPMTAG_POSTUNPROG = 1088, /* s[] */
159 RPMTAG_BUILDARCHS = 1089, /* s[] */
160 RPMTAG_OBSOLETENAME = 1090, /* s[] */
161 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME /* s[] */
162 #define RPMTAG_O RPMTAG_OBSOLETENAME /* s[] */
163 RPMTAG_VERIFYSCRIPTPROG = 1091, /* s[] */
164 RPMTAG_TRIGGERSCRIPTPROG = 1092, /* s[] */
165 RPMTAG_DOCDIR = 1093, /* internal */
166 RPMTAG_COOKIE = 1094, /* s */
167 RPMTAG_FILEDEVICES = 1095, /* i[] */
168 RPMTAG_FILEINODES = 1096, /* i[] */
169 RPMTAG_FILELANGS = 1097, /* s[] */
170 RPMTAG_PREFIXES = 1098, /* s[] */
171 RPMTAG_INSTPREFIXES = 1099, /* s[] */
172 RPMTAG_TRIGGERIN = 1100, /* internal */
173 RPMTAG_TRIGGERUN = 1101, /* internal */
174 RPMTAG_TRIGGERPOSTUN = 1102, /* internal */
175 RPMTAG_AUTOREQ = 1103, /* internal */
176 RPMTAG_AUTOPROV = 1104, /* internal */
177 RPMTAG_CAPABILITY = 1105, /* i internal - obsolete */
178 RPMTAG_SOURCEPACKAGE = 1106, /* i */
179 RPMTAG_OLDORIGFILENAMES = 1107, /* internal - obsolete */
180 RPMTAG_BUILDPREREQ = 1108, /* internal */
181 RPMTAG_BUILDREQUIRES = 1109, /* internal */
182 RPMTAG_BUILDCONFLICTS = 1110, /* internal */
183 RPMTAG_BUILDMACROS = 1111, /* internal - unused */
184 RPMTAG_PROVIDEFLAGS = 1112, /* i[] */
185 RPMTAG_PROVIDEVERSION = 1113, /* s[] */
186 RPMTAG_OBSOLETEFLAGS = 1114, /* i[] */
187 RPMTAG_OBSOLETEVERSION = 1115, /* s[] */
188 RPMTAG_DIRINDEXES = 1116, /* i[] */
189 RPMTAG_BASENAMES = 1117, /* s[] */
190 RPMTAG_DIRNAMES = 1118, /* s[] */
191 RPMTAG_ORIGDIRINDEXES = 1119, /* i[] relocation */
192 RPMTAG_ORIGBASENAMES = 1120, /* s[] relocation */
193 RPMTAG_ORIGDIRNAMES = 1121, /* s[] relocation */
194 RPMTAG_OPTFLAGS = 1122, /* s */
195 RPMTAG_DISTURL = 1123, /* s */
196 RPMTAG_PAYLOADFORMAT = 1124, /* s */
197 RPMTAG_PAYLOADCOMPRESSOR = 1125, /* s */
198 RPMTAG_PAYLOADFLAGS = 1126, /* s */
199 RPMTAG_INSTALLCOLOR = 1127, /* i transaction color when installed */
200 RPMTAG_INSTALLTID = 1128, /* i */
201 RPMTAG_REMOVETID = 1129, /* i */
202 RPMTAG_SHA1RHN = 1130, /* internal - obsolete */
203 RPMTAG_RHNPLATFORM = 1131, /* s internal - obsolete */
204 RPMTAG_PLATFORM = 1132, /* s */
205 RPMTAG_PATCHESNAME = 1133, /* s[] deprecated placeholder (SuSE) */
206 RPMTAG_PATCHESFLAGS = 1134, /* i[] deprecated placeholder (SuSE) */
207 RPMTAG_PATCHESVERSION = 1135, /* s[] deprecated placeholder (SuSE) */
208 RPMTAG_CACHECTIME = 1136, /* i internal - obsolete */
209 RPMTAG_CACHEPKGPATH = 1137, /* s internal - obsolete */
210 RPMTAG_CACHEPKGSIZE = 1138, /* i internal - obsolete */
211 RPMTAG_CACHEPKGMTIME = 1139, /* i internal - obsolete */
212 RPMTAG_FILECOLORS = 1140, /* i[] */
213 RPMTAG_FILECLASS = 1141, /* i[] */
214 RPMTAG_CLASSDICT = 1142, /* s[] */
215 RPMTAG_FILEDEPENDSX = 1143, /* i[] */
216 RPMTAG_FILEDEPENDSN = 1144, /* i[] */
217 RPMTAG_DEPENDSDICT = 1145, /* i[] */
218 RPMTAG_SOURCEPKGID = 1146, /* x */
219 RPMTAG_FILECONTEXTS = 1147, /* s[] - obsolete */
220 RPMTAG_FSCONTEXTS = 1148, /* s[] extension */
221 RPMTAG_RECONTEXTS = 1149, /* s[] extension */
222 RPMTAG_POLICIES = 1150, /* s[] selinux *.te policy file. */
223 RPMTAG_PRETRANS = 1151, /* s */
224 RPMTAG_POSTTRANS = 1152, /* s */
225 RPMTAG_PRETRANSPROG = 1153, /* s[] */
226 RPMTAG_POSTTRANSPROG = 1154, /* s[] */
227 RPMTAG_DISTTAG = 1155, /* s */
228 RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] - obsolete */
229 #define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] - obsolete */
230 RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] - obsolete */
231 RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] - obsolete */
232 RPMTAG_OLDENHANCESNAME = 1159, /* s[] - obsolete */
233 #define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] - obsolete */
234 RPMTAG_OLDENHANCESVERSION = 1160, /* s[] - obsolete */
235 RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] - obsolete */
236 RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
237 RPMTAG_CVSID = 1163, /* s (unimplemented) */
238 #define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
239 RPMTAG_BLINKPKGID = 1164, /* s[] (unimplemented) */
240 RPMTAG_BLINKHDRID = 1165, /* s[] (unimplemented) */
241 RPMTAG_BLINKNEVRA = 1166, /* s[] (unimplemented) */
242 RPMTAG_FLINKPKGID = 1167, /* s[] (unimplemented) */
243 RPMTAG_FLINKHDRID = 1168, /* s[] (unimplemented) */
244 RPMTAG_FLINKNEVRA = 1169, /* s[] (unimplemented) */
245 RPMTAG_PACKAGEORIGIN = 1170, /* s (unimplemented) */
246 RPMTAG_TRIGGERPREIN = 1171, /* internal */
247 RPMTAG_BUILDSUGGESTS = 1172, /* internal (unimplemented) */
248 RPMTAG_BUILDENHANCES = 1173, /* internal (unimplemented) */
249 RPMTAG_SCRIPTSTATES = 1174, /* i[] scriptlet exit codes (unimplemented) */
250 RPMTAG_SCRIPTMETRICS = 1175, /* i[] scriptlet execution times (unimplemented) */
251 RPMTAG_BUILDCPUCLOCK = 1176, /* i (unimplemented) */
252 RPMTAG_FILEDIGESTALGOS = 1177, /* i[] (unimplemented) */
253 RPMTAG_VARIANTS = 1178, /* s[] (unimplemented) */
254 RPMTAG_XMAJOR = 1179, /* i (unimplemented) */
255 RPMTAG_XMINOR = 1180, /* i (unimplemented) */
256 RPMTAG_REPOTAG = 1181, /* s (unimplemented) */
257 RPMTAG_KEYWORDS = 1182, /* s[] (unimplemented) */
258 RPMTAG_BUILDPLATFORMS = 1183, /* s[] (unimplemented) */
259 RPMTAG_PACKAGECOLOR = 1184, /* i (unimplemented) */
260 RPMTAG_PACKAGEPREFCOLOR = 1185, /* i (unimplemented) */
261 RPMTAG_XATTRSDICT = 1186, /* s[] (unimplemented) */
262 RPMTAG_FILEXATTRSX = 1187, /* i[] (unimplemented) */
263 RPMTAG_DEPATTRSDICT = 1188, /* s[] (unimplemented) */
264 RPMTAG_CONFLICTATTRSX = 1189, /* i[] (unimplemented) */
265 RPMTAG_OBSOLETEATTRSX = 1190, /* i[] (unimplemented) */
266 RPMTAG_PROVIDEATTRSX = 1191, /* i[] (unimplemented) */
267 RPMTAG_REQUIREATTRSX = 1192, /* i[] (unimplemented) */
268 RPMTAG_BUILDPROVIDES = 1193, /* internal (unimplemented) */
269 RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */
270 RPMTAG_DBINSTANCE = 1195, /* i extension */
271 RPMTAG_NVRA = 1196, /* s extension */
273 /* tags 1997-4999 reserved */
274 RPMTAG_FILENAMES = 5000, /* s[] extension */
275 RPMTAG_FILEPROVIDE = 5001, /* s[] extension */
276 RPMTAG_FILEREQUIRE = 5002, /* s[] extension */
277 RPMTAG_FSNAMES = 5003, /* s[] (unimplemented) */
278 RPMTAG_FSSIZES = 5004, /* l[] (unimplemented) */
279 RPMTAG_TRIGGERCONDS = 5005, /* s[] extension */
280 RPMTAG_TRIGGERTYPE = 5006, /* s[] extension */
281 RPMTAG_ORIGFILENAMES = 5007, /* s[] extension */
282 RPMTAG_LONGFILESIZES = 5008, /* l[] */
283 RPMTAG_LONGSIZE = 5009, /* l */
284 RPMTAG_FILECAPS = 5010, /* s[] */
285 RPMTAG_FILEDIGESTALGO = 5011, /* i file digest algorithm */
286 RPMTAG_BUGURL = 5012, /* s */
287 RPMTAG_EVR = 5013, /* s extension */
288 RPMTAG_NVR = 5014, /* s extension */
289 RPMTAG_NEVR = 5015, /* s extension */
290 RPMTAG_NEVRA = 5016, /* s extension */
291 RPMTAG_HEADERCOLOR = 5017, /* i extension */
292 RPMTAG_VERBOSE = 5018, /* i extension */
293 RPMTAG_EPOCHNUM = 5019, /* i extension */
294 RPMTAG_PREINFLAGS = 5020, /* i */
295 RPMTAG_POSTINFLAGS = 5021, /* i */
296 RPMTAG_PREUNFLAGS = 5022, /* i */
297 RPMTAG_POSTUNFLAGS = 5023, /* i */
298 RPMTAG_PRETRANSFLAGS = 5024, /* i */
299 RPMTAG_POSTTRANSFLAGS = 5025, /* i */
300 RPMTAG_VERIFYSCRIPTFLAGS = 5026, /* i */
301 RPMTAG_TRIGGERSCRIPTFLAGS = 5027, /* i[] */
302 RPMTAG_COLLECTIONS = 5029, /* s[] list of collections (unimplemented) */
303 RPMTAG_POLICYNAMES = 5030, /* s[] */
304 RPMTAG_POLICYTYPES = 5031, /* s[] */
305 RPMTAG_POLICYTYPESINDEXES = 5032, /* i[] */
306 RPMTAG_POLICYFLAGS = 5033, /* i[] */
307 RPMTAG_VCS = 5034, /* s */
308 RPMTAG_ORDERNAME = 5035, /* s[] */
309 RPMTAG_ORDERVERSION = 5036, /* s[] */
310 RPMTAG_ORDERFLAGS = 5037, /* i[] */
311 RPMTAG_SECMANIFEST = 5038, /* s[] security manifest file */
312 RPMTAG_SECSWSOURCE = 5039, /* s[] security software source */
313 RPMTAG_INSTFILENAMES = 5040, /* s[] extension */
314 RPMTAG_REQUIRENEVRS = 5041, /* s[] extension */
315 RPMTAG_PROVIDENEVRS = 5042, /* s[] extension */
316 RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */
317 RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */
318 RPMTAG_FILENLINKS = 5045, /* i[] extension */
319 RPMTAG_RECOMMENDNAME = 5046, /* s[] */
320 #define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */
321 RPMTAG_RECOMMENDVERSION = 5047, /* s[] */
322 RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */
323 RPMTAG_SUGGESTNAME = 5049, /* s[] */
324 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */
325 RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */
326 RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */
327 RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */
328 #define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */
329 RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */
330 RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */
331 RPMTAG_ENHANCENAME = 5055, /* s[] */
332 #define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */
333 RPMTAG_ENHANCEVERSION = 5056, /* s[] */
334 RPMTAG_ENHANCEFLAGS = 5057, /* i[] */
335 RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */
336 RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */
337 RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */
338 RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */
339 RPMTAG_ENCODING = 5062, /* s */
340 RPMTAG_FILETRIGGERIN = 5063, /* internal */
341 RPMTAG_FILETRIGGERUN = 5064, /* internal */
342 RPMTAG_FILETRIGGERPOSTUN = 5065, /* internal */
343 RPMTAG_FILETRIGGERSCRIPTS = 5066, /* s[] */
344 RPMTAG_FILETRIGGERSCRIPTPROG = 5067, /* s[] */
345 RPMTAG_FILETRIGGERSCRIPTFLAGS = 5068, /* i[] */
346 RPMTAG_FILETRIGGERNAME = 5069, /* s[] */
347 RPMTAG_FILETRIGGERINDEX = 5070, /* i[] */
348 RPMTAG_FILETRIGGERVERSION = 5071, /* s[] */
349 RPMTAG_FILETRIGGERFLAGS = 5072, /* i[] */
350 RPMTAG_TRANSFILETRIGGERIN = 5073, /* internal */
351 RPMTAG_TRANSFILETRIGGERUN = 5074, /* internal */
352 RPMTAG_TRANSFILETRIGGERPOSTUN = 5075, /* internal */
353 RPMTAG_TRANSFILETRIGGERSCRIPTS = 5076, /* s[] */
354 RPMTAG_TRANSFILETRIGGERSCRIPTPROG = 5077, /* s[] */
355 RPMTAG_TRANSFILETRIGGERSCRIPTFLAGS = 5078, /* i[] */
356 RPMTAG_TRANSFILETRIGGERNAME = 5079, /* s[] */
357 RPMTAG_TRANSFILETRIGGERINDEX = 5080, /* i[] */
358 RPMTAG_TRANSFILETRIGGERVERSION = 5081, /* s[] */
359 RPMTAG_TRANSFILETRIGGERFLAGS = 5082, /* i[] */
360 RPMTAG_REMOVEPATHPOSTFIXES = 5083, /* s internal */
361 RPMTAG_FILETRIGGERPRIORITIES = 5084, /* i[] */
362 RPMTAG_TRANSFILETRIGGERPRIORITIES = 5085, /* i[] */
363 RPMTAG_FILETRIGGERCONDS = 5086, /* s[] extension */
364 RPMTAG_FILETRIGGERTYPE = 5087, /* s[] extension */
365 RPMTAG_TRANSFILETRIGGERCONDS = 5088, /* s[] extension */
366 RPMTAG_TRANSFILETRIGGERTYPE = 5089, /* s[] extension */
367 RPMTAG_FILESIGNATURES = 5090, /* s[] */
368 RPMTAG_FILESIGNATURELENGTH = 5091, /* i */
369 RPMTAG_PAYLOADDIGEST = 5092, /* s[] */
370 RPMTAG_PAYLOADDIGESTALGO = 5093, /* i */
371 /* Skip numbers which might be used in new RPM versions */
372 RPMTAG_BUILDINFO = 7000, /* s[] information about build */
374 RPMTAG_FIRSTFREE_TAG /*!< internal */
377 #define RPMTAG_EXTERNAL_TAG 1000000
380 * Rpm database index tags.
382 typedef enum rpmDbiTag_e {
383 RPMDBI_PACKAGES = 0, /* Installed package headers. */
384 RPMDBI_LABEL = 2, /* NEVRA label pseudo index */
385 RPMDBI_NAME = RPMTAG_NAME,
386 RPMDBI_BASENAMES = RPMTAG_BASENAMES,
387 RPMDBI_GROUP = RPMTAG_GROUP,
388 RPMDBI_REQUIRENAME = RPMTAG_REQUIRENAME,
389 RPMDBI_PROVIDENAME = RPMTAG_PROVIDENAME,
390 RPMDBI_CONFLICTNAME = RPMTAG_CONFLICTNAME,
391 RPMDBI_OBSOLETENAME = RPMTAG_OBSOLETENAME,
392 RPMDBI_TRIGGERNAME = RPMTAG_TRIGGERNAME,
393 RPMDBI_DIRNAMES = RPMTAG_DIRNAMES,
394 RPMDBI_INSTALLTID = RPMTAG_INSTALLTID,
395 RPMDBI_SIGMD5 = RPMTAG_SIGMD5,
396 RPMDBI_SHA1HEADER = RPMTAG_SHA1HEADER,
397 RPMDBI_INSTFILENAMES = RPMTAG_INSTFILENAMES,
398 RPMDBI_FILETRIGGERNAME = RPMTAG_FILETRIGGERNAME,
399 RPMDBI_TRANSFILETRIGGERNAME = RPMTAG_TRANSFILETRIGGERNAME,
400 RPMDBI_RECOMMENDNAME = RPMTAG_RECOMMENDNAME,
401 RPMDBI_SUGGESTNAME = RPMTAG_SUGGESTNAME,
402 RPMDBI_SUPPLEMENTNAME = RPMTAG_SUPPLEMENTNAME,
403 RPMDBI_ENHANCENAME = RPMTAG_ENHANCENAME,
406 /** \ingroup signature
407 * Tags found in signature header from package.
409 typedef enum rpmSigTag_e {
410 RPMSIGTAG_SIZE = 1000, /*!< internal Header+Payload size (32bit) in bytes. */
411 RPMSIGTAG_LEMD5_1 = 1001, /*!< internal Broken MD5, take 1 @deprecated legacy. */
412 RPMSIGTAG_PGP = 1002, /*!< internal PGP 2.6.3 signature. */
413 RPMSIGTAG_LEMD5_2 = 1003, /*!< internal Broken MD5, take 2 @deprecated legacy. */
414 RPMSIGTAG_MD5 = 1004, /*!< internal MD5 signature. */
415 RPMSIGTAG_GPG = 1005, /*!< internal GnuPG signature. */
416 RPMSIGTAG_PGP5 = 1006, /*!< internal PGP5 signature @deprecated legacy. */
417 RPMSIGTAG_PAYLOADSIZE = 1007,/*!< internal uncompressed payload size (32bit) in bytes. */
418 RPMSIGTAG_RESERVEDSPACE = 1008,/*!< internal space reserved for signatures */
419 RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1, /*!< internal Broken SHA1, take 1. */
420 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, /*!< internal Broken SHA1, take 2. */
421 RPMSIGTAG_DSA = RPMTAG_DSAHEADER, /*!< internal DSA header signature. */
422 RPMSIGTAG_RSA = RPMTAG_RSAHEADER, /*!< internal RSA header signature. */
423 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, /*!< internal sha1 header digest. */
424 RPMSIGTAG_LONGSIZE = RPMTAG_LONGSIGSIZE, /*!< internal Header+Payload size (64bit) in bytes. */
425 RPMSIGTAG_LONGARCHIVESIZE = RPMTAG_LONGARCHIVESIZE, /*!< internal uncompressed payload size (64bit) in bytes. */
426 RPMSIGTAG_SHA256 = RPMTAG_SHA256HEADER,
431 * The basic types of data in tags from headers.
433 typedef enum rpmTagType_e {
434 #define RPM_MIN_TYPE 0
443 RPM_STRING_ARRAY_TYPE = 8,
444 RPM_I18NSTRING_TYPE = 9,
445 #define RPM_MAX_TYPE 9
446 #define RPM_FORCEFREE_TYPE 0xff
447 #define RPM_MASK_TYPE 0x0000ffff
451 * The classes of data in tags from headers.
453 typedef enum rpmTagClass_e {
455 RPM_NUMERIC_CLASS = 1,
456 RPM_STRING_CLASS = 2,
457 RPM_BINARY_CLASS = 3,
461 * New rpm data types under consideration/development.
462 * These data types may (or may not) be added to rpm at some point. In order
463 * to avoid incompatibility with legacy versions of rpm, these data (sub-)types
464 * are introduced into the header by overloading RPM_BIN_TYPE, with the binary
465 * value of the tag a 16 byte image of what should/will be in the header index,
466 * followed by per-tag private data.
468 typedef enum rpmSubTagType_e {
469 RPM_REGION_TYPE = -10,
470 RPM_BIN_ARRAY_TYPE = -11,
471 /*!<@todo Implement, kinda like RPM_STRING_ARRAY_TYPE for known (but variable)
472 length binary data. */
474 /*!<@todo Implement, intent is to to carry a (???,tagNum,valNum) cross
475 reference to retrieve data from other tags. */
479 * * Identify how to return the header data type.
481 enum rpmTagReturnType_e {
482 RPM_ANY_RETURN_TYPE = 0,
483 RPM_SCALAR_RETURN_TYPE = 0x00010000,
484 RPM_ARRAY_RETURN_TYPE = 0x00020000,
485 RPM_MAPPING_RETURN_TYPE = 0x00040000,
486 RPM_MASK_RETURN_TYPE = 0xffff0000
489 typedef rpmFlags rpmTagReturnType;
492 * Return tag name from value.
493 * @param tag tag value
494 * @return tag name, "(unknown)" on not found
496 const char * rpmTagGetName(rpmTagVal tag);
499 * Return tag data type from value.
500 * @param tag tag value
501 * @return tag data type + return type, RPM_NULL_TYPE on not found.
503 rpmTagType rpmTagGetType(rpmTagVal tag);
506 * Return tag data type from value.
507 * @param tag tag value
508 * @return tag data type, RPM_NULL_TYPE on not found.
510 rpmTagType rpmTagGetTagType(rpmTagVal tag);
513 * Return tag data type from value.
514 * @param tag tag value
515 * @return tag data return type, RPM_NULL_TYPE on not found.
517 rpmTagReturnType rpmTagGetReturnType(rpmTagVal tag);
520 * Return tag data class from value.
521 * @param tag tag value
522 * @return tag data class, RPM_NULL_CLASS on not found.
524 rpmTagClass rpmTagGetClass(rpmTagVal tag);
527 * Return tag value from name.
528 * @param tagstr name of tag
529 * @return tag value, -1 on not found
531 rpmTagVal rpmTagGetValue(const char * tagstr);
534 * Return data class of type
535 * @param type tag type
536 * @return data class, RPM_NULL_CLASS on unknown.
538 rpmTagClass rpmTagTypeGetClass(rpmTagType type);
541 * Return known rpm tag names, sorted by name.
542 * @retval tagnames tag container of string array type
543 * @param fullname return short or full name
544 * @return number of tag names, 0 on error
546 int rpmTagGetNames(rpmtd tagnames, int fullname);
552 #endif /* _RPMTAG_H */