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