]> git.ipfire.org Git - pakfire.git/blob - src/debugedit/rpmtag.h
Bump version to 0.9.27
[pakfire.git] / src / debugedit / rpmtag.h
1 #ifndef H_RPMTAG
2 #define H_RPMTAG
3
4 /** \ingroup header
5 * \file rpmdb/rpmtag.h
6 */
7
8 #include "rpmiotypes.h"
9 #include "rpmsw.h"
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 /** \ingroup header
16 */
17 typedef const char * errmsg_t;
18
19 /** \ingroup header
20 */
21 typedef /*@abstract@*/ /*@refcounted@*/ struct headerToken_s * Header;
22
23 /** \ingroup header
24 * The basic types of data in tags from headers.
25 */
26 enum rpmTagType_e {
27 /* RPM_NULL_TYPE = 0 - never been used. */
28 /* RPM_CHAR_TYPE = 1 - never been used, same as RPM_UINT8_TYPE. */
29 RPM_UINT8_TYPE = 2,
30 RPM_UINT16_TYPE = 3,
31 RPM_UINT32_TYPE = 4,
32 RPM_UINT64_TYPE = 5,
33 RPM_STRING_TYPE = 6,
34 RPM_BIN_TYPE = 7,
35 RPM_STRING_ARRAY_TYPE = 8,
36 RPM_I18NSTRING_TYPE = 9
37 /* RPM_ASN1_TYPE = 10 - never been used. */
38 /* RPM_OPENPGP_TYPE= 11 - never been used. */
39 };
40 #define RPM_MIN_TYPE 2
41 #define RPM_MAX_TYPE 9
42 #define RPM_MASK_TYPE 0x0000ffff
43
44 /** \ingroup header
45 */
46 typedef enum rpmTagType_e rpmTagType; /*!< tag data type. */
47
48 /** \ingroup header
49 */
50 typedef union rpmDataType_u rpmTagData; /*!< tag data. */
51
52 /** \ingroup header
53 */
54 typedef rpmuint32_t rpmTagCount; /*!< tag data element count. */
55
56 /** \ingroup header
57 */
58 typedef struct _HE_s * HE_t; /*!< tag container. */
59
60 /** \ingroup header
61 */
62 /*@-typeuse -fielduse@*/
63 #if !defined(SWIG)
64 union rpmDataType_u {
65 /*@null@*/
66 void * ptr;
67 rpmuint8_t * ui8p; /*!< RPM_UINT8_TYPE | RPM_CHAR_TYPE */
68 rpmuint16_t * ui16p; /*!< RPM_UINT16_TYPE */
69 rpmuint32_t * ui32p; /*!< RPM_UINT32_TYPE */
70 rpmuint64_t * ui64p; /*!< RPM_UINT64_TYPE */
71 /*@relnull@*/
72 const char * str; /*!< RPM_STRING_TYPE */
73 unsigned char * blob; /*!< RPM_BIN_TYPE */
74 const char ** argv; /*!< RPM_STRING_ARRAY_TYPE */
75 HE_t he;
76 };
77 #endif
78 /*@=typeuse =fielduse@*/
79
80 /*@=typeuse =fielduse@*/
81 /** \ingroup header
82 */
83 /*@-enummemuse -typeuse @*/
84 typedef enum rpmSubTagType_e {
85 RPM_REGION_TYPE = -10,
86 RPM_BIN_ARRAY_TYPE = -11,
87 RPM_XREF_TYPE = -12
88 } rpmSubTagType;
89 /*@=enummemuse =typeuse @*/
90
91 /** \ingroup header
92 * Identify how to return the header data type.
93 */
94 /*@-enummemuse -typeuse @*/
95 typedef enum rpmTagReturnType_e {
96 RPM_ANY_RETURN_TYPE = 0,
97 RPM_SCALAR_RETURN_TYPE = 0x00010000,
98 RPM_ARRAY_RETURN_TYPE = 0x00020000,
99 RPM_MAPPING_RETURN_TYPE = 0x00040000,
100 /* 0x00080000 */
101 RPM_PROBE_RETURN_TYPE = 0x00100000,
102 RPM_TREE_RETURN_TYPE = 0x00200000,
103 RPM_OPENPGP_RETURN_TYPE = 0x00400000,
104 RPM_X509_RETURN_TYPE = 0x00800000,
105 RPM_ASN1_RETURN_TYPE = 0x01000000,
106 RPM_OPAQUE_RETURN_TYPE = 0x10000000,
107 RPM_MASK_RETURN_TYPE = 0xffff0000
108 } rpmTagReturnType;
109 /*@=enummemuse =typeuse @*/
110
111 /**
112 * Header private tags.
113 * @note General use tags should start at 1000 (RPM's tag space starts there).
114 */
115 #define HEADER_IMAGE 61
116 #define HEADER_SIGNATURES 62
117 #define HEADER_IMMUTABLE 63
118 #define HEADER_REGIONS 64
119 #define HEADER_I18NTABLE 100
120 #define HEADER_SIGBASE 256
121 #define HEADER_TAGBASE 1000
122
123 /** \ingroup header
124 */
125 typedef /*@abstract@*/ struct headerIterator_s * HeaderIterator;
126
127 /** \ingroup header
128 */
129 typedef /*@abstract@*/ struct headerTagIndices_s * headerTagIndices;
130
131 /** \ingroup header
132 */
133 typedef /*@abstract@*/ const struct headerSprintfExtension_s * headerSprintfExtension;
134
135 /**
136 * Pseudo-tags used by the rpmdb and rpmgi iterator API's.
137 */
138 #define RPMDBI_PACKAGES 0 /* Installed package headers. */
139 #define RPMDBI_DEPENDS 1 /* Dependency resolution cache. */
140 /* (obsolete) RPMDBI_LABEL was 2 */
141 #define RPMDBI_ADDED 3 /* Added package headers. */
142 #define RPMDBI_REMOVED 4 /* Removed package headers. */
143 #define RPMDBI_AVAILABLE 5 /* Available package headers. */
144 #define RPMDBI_HDLIST 6 /* (rpmgi) Header list. */
145 #define RPMDBI_ARGLIST 7 /* (rpmgi) Argument list. */
146 #define RPMDBI_FTSWALK 8 /* (rpmgi) File tree walk. */
147 #define RPMDBI_SEQNO 9 /* Sequence numbers. */
148 #define RPMDBI_BTREE 10 /* (development) Generic DB_BTREE. */
149 #define RPMDBI_HASH 11 /* (development) Generic DB_HASH. */
150 #define RPMDBI_QUEUE 12 /* (development) Generic DB_QUEUE. */
151 #define RPMDBI_RECNO 13 /* (development) Generic DB_RECNO. */
152 #define RPMDBI_REPACKAGES 14 /* Re-packaged package paths. */
153 #define RPMDBI_REPOSITORY 15 /* Repository URI's. */
154
155 /** \ingroup header
156 * Tags identify data in package headers.
157 * @note tags should not have value 0!
158 */
159 enum rpmTag_e {
160
161 RPMTAG_HEADERIMAGE = HEADER_IMAGE, /*!< internal Current image. */
162 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES, /*!< internal Signatures. */
163 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE, /*!< x Original image. */
164 /*@-enummemuse@*/
165 RPMTAG_HEADERREGIONS = HEADER_REGIONS, /*!< internal Regions. */
166
167 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE, /*!< s[] I18N string locales. */
168 /*@=enummemuse@*/
169
170 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
171 /* the md5 sum was broken *twice* on big endian machines */
172 /* XXX 2nd underscore prevents tagTable generation */
173 RPMTAG_SIG_BASE = HEADER_SIGBASE,
174 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1, /* i */
175 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2, /* internal - obsolete */
176 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3, /* x */
177 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4, /* x internal - obsolete */
178 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5, /* x */
179 #define RPMTAG_PKGID RPMTAG_SIGMD5 /* x */
180 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6, /* x */
181 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7, /* internal - obsolete */
182
183 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8, /* internal - obsolete */
184 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9, /* internal - obsolete */
185 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10, /* s[] */
186 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11, /* x */
187 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12, /* x */
188 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13, /* s */
189 #define RPMTAG_HDRID RPMTAG_SHA1HEADER /* s */
190
191 RPMTAG_NAME = 1000, /* s */
192 #define RPMTAG_N RPMTAG_NAME /* s */
193 RPMTAG_VERSION = 1001, /* s */
194 #define RPMTAG_V RPMTAG_VERSION /* s */
195 RPMTAG_RELEASE = 1002, /* s */
196 #define RPMTAG_R RPMTAG_RELEASE /* s */
197 RPMTAG_EPOCH = 1003, /* i */
198 #define RPMTAG_E RPMTAG_EPOCH /* i */
199 RPMTAG_SUMMARY = 1004, /* s{} */
200 RPMTAG_DESCRIPTION = 1005, /* s{} */
201 RPMTAG_BUILDTIME = 1006, /* i */
202 RPMTAG_BUILDHOST = 1007, /* s */
203 RPMTAG_INSTALLTIME = 1008, /* i[] */
204 RPMTAG_SIZE = 1009, /* i */
205 RPMTAG_DISTRIBUTION = 1010, /* s */
206 RPMTAG_VENDOR = 1011, /* s */
207 RPMTAG_GIF = 1012, /* x */
208 RPMTAG_XPM = 1013, /* x */
209 RPMTAG_LICENSE = 1014, /* s */
210 RPMTAG_PACKAGER = 1015, /* s */
211 RPMTAG_GROUP = 1016, /* s{} */
212 /*@-enummemuse@*/
213 RPMTAG_CHANGELOG = 1017, /* s[] internal */
214 /*@=enummemuse@*/
215 RPMTAG_SOURCE = 1018, /* s[] */
216 RPMTAG_PATCH = 1019, /* s[] */
217 RPMTAG_URL = 1020, /* s */
218 RPMTAG_OS = 1021, /* s legacy used int */
219 RPMTAG_ARCH = 1022, /* s legacy used int */
220 RPMTAG_PREIN = 1023, /* s */
221 RPMTAG_POSTIN = 1024, /* s */
222 RPMTAG_PREUN = 1025, /* s */
223 RPMTAG_POSTUN = 1026, /* s */
224 RPMTAG_OLDFILENAMES = 1027, /* s[] obsolete */
225 RPMTAG_FILESIZES = 1028, /* i[] */
226 RPMTAG_FILESTATES = 1029, /* c[] */
227 RPMTAG_FILEMODES = 1030, /* h[] */
228 RPMTAG_FILEUIDS = 1031, /* i[] internal */
229 RPMTAG_FILEGIDS = 1032, /* i[] internal */
230 RPMTAG_FILERDEVS = 1033, /* h[] */
231 RPMTAG_FILEMTIMES = 1034, /* i[] */
232 RPMTAG_FILEDIGESTS = 1035, /* s[] */
233 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
234 RPMTAG_FILELINKTOS = 1036, /* s[] */
235 RPMTAG_FILEFLAGS = 1037, /* i[] */
236 /*@-enummemuse@*/
237 RPMTAG_ROOT = 1038, /* internal - obsolete */
238 /*@=enummemuse@*/
239 RPMTAG_FILEUSERNAME = 1039, /* s[] */
240 RPMTAG_FILEGROUPNAME = 1040, /* s[] */
241 /*@-enummemuse@*/
242 RPMTAG_EXCLUDE = 1041, /* internal - obsolete */
243 RPMTAG_EXCLUSIVE = 1042, /* internal - obsolete */
244 /*@=enummemuse@*/
245 RPMTAG_ICON = 1043, /* x */
246 RPMTAG_SOURCERPM = 1044, /* s */
247 RPMTAG_FILEVERIFYFLAGS = 1045, /* i[] */
248 RPMTAG_ARCHIVESIZE = 1046, /* i */
249 RPMTAG_PROVIDENAME = 1047, /* s[] */
250 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME /* s[] */
251 #define RPMTAG_P RPMTAG_PROVIDENAME /* s[] */
252 RPMTAG_REQUIREFLAGS = 1048, /* i[] */
253 RPMTAG_REQUIRENAME = 1049, /* s[] */
254 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME /* s[] */
255 RPMTAG_REQUIREVERSION = 1050, /* s[] */
256 RPMTAG_NOSOURCE = 1051, /* i internal */
257 RPMTAG_NOPATCH = 1052, /* i internal */
258 RPMTAG_CONFLICTFLAGS = 1053, /* i[] */
259 RPMTAG_CONFLICTNAME = 1054, /* s[] */
260 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME /* s[] */
261 #define RPMTAG_C RPMTAG_CONFLICTNAME /* s[] */
262 RPMTAG_CONFLICTVERSION = 1055, /* s[] */
263 RPMTAG_DEFAULTPREFIX = 1056, /* s internal - deprecated */
264 RPMTAG_BUILDROOT = 1057, /* s internal */
265 RPMTAG_INSTALLPREFIX = 1058, /* s internal - deprecated */
266 RPMTAG_EXCLUDEARCH = 1059, /* s[] */
267 RPMTAG_EXCLUDEOS = 1060, /* s[] */
268 RPMTAG_EXCLUSIVEARCH = 1061, /* s[] */
269 RPMTAG_EXCLUSIVEOS = 1062, /* s[] */
270 RPMTAG_AUTOREQPROV = 1063, /* s internal */
271 RPMTAG_RPMVERSION = 1064, /* s */
272 RPMTAG_TRIGGERSCRIPTS = 1065, /* s[] */
273 RPMTAG_TRIGGERNAME = 1066, /* s[] */
274 RPMTAG_TRIGGERVERSION = 1067, /* s[] */
275 RPMTAG_TRIGGERFLAGS = 1068, /* i[] */
276 RPMTAG_TRIGGERINDEX = 1069, /* i[] */
277 RPMTAG_VERIFYSCRIPT = 1079, /* s */
278 RPMTAG_CHANGELOGTIME = 1080, /* i[] */
279 RPMTAG_CHANGELOGNAME = 1081, /* s[] */
280 RPMTAG_CHANGELOGTEXT = 1082, /* s[] */
281 /*@-enummemuse@*/
282 RPMTAG_BROKENMD5 = 1083, /* internal - obsolete */
283 /*@=enummemuse@*/
284 RPMTAG_PREREQ = 1084, /* internal */
285 RPMTAG_PREINPROG = 1085, /* s */
286 RPMTAG_POSTINPROG = 1086, /* s */
287 RPMTAG_PREUNPROG = 1087, /* s */
288 RPMTAG_POSTUNPROG = 1088, /* s */
289 RPMTAG_BUILDARCHS = 1089, /* s[] */
290 RPMTAG_OBSOLETENAME = 1090, /* s[] */
291 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME /* s[] */
292 #define RPMTAG_O RPMTAG_OBSOLETENAME /* s[] */
293 RPMTAG_VERIFYSCRIPTPROG = 1091, /* s */
294 RPMTAG_TRIGGERSCRIPTPROG = 1092, /* s[] */
295 RPMTAG_DOCDIR = 1093, /* internal */
296 RPMTAG_COOKIE = 1094, /* s */
297 RPMTAG_FILEDEVICES = 1095, /* i[] */
298 RPMTAG_FILEINODES = 1096, /* i[] */
299 RPMTAG_FILELANGS = 1097, /* s[] */
300 RPMTAG_PREFIXES = 1098, /* s[] */
301 RPMTAG_INSTPREFIXES = 1099, /* s[] */
302 RPMTAG_TRIGGERIN = 1100, /* internal */
303 RPMTAG_TRIGGERUN = 1101, /* internal */
304 RPMTAG_TRIGGERPOSTUN = 1102, /* internal */
305 RPMTAG_AUTOREQ = 1103, /* internal */
306 RPMTAG_AUTOPROV = 1104, /* internal */
307 /*@-enummemuse@*/
308 RPMTAG_CAPABILITY = 1105, /* i legacy - obsolete */
309 /*@=enummemuse@*/
310 RPMTAG_SOURCEPACKAGE = 1106, /* i legacy - obsolete */
311 /*@-enummemuse@*/
312 RPMTAG_OLDORIGFILENAMES = 1107, /* internal - obsolete */
313 /*@=enummemuse@*/
314 RPMTAG_BUILDPREREQ = 1108, /* internal */
315 RPMTAG_BUILDREQUIRES = 1109, /* internal */
316 RPMTAG_BUILDCONFLICTS = 1110, /* internal */
317 /*@-enummemuse@*/
318 RPMTAG_BUILDMACROS = 1111, /* s[] srpms only */
319 /*@=enummemuse@*/
320 RPMTAG_PROVIDEFLAGS = 1112, /* i[] */
321 RPMTAG_PROVIDEVERSION = 1113, /* s[] */
322 RPMTAG_OBSOLETEFLAGS = 1114, /* i[] */
323 RPMTAG_OBSOLETEVERSION = 1115, /* s[] */
324 RPMTAG_DIRINDEXES = 1116, /* i[] */
325 RPMTAG_BASENAMES = 1117, /* s[] */
326 RPMTAG_DIRNAMES = 1118, /* s[] */
327 RPMTAG_ORIGDIRINDEXES = 1119, /* i[] relocation */
328 RPMTAG_ORIGBASENAMES = 1120, /* s[] relocation */
329 RPMTAG_ORIGDIRNAMES = 1121, /* s[] relocation */
330 RPMTAG_OPTFLAGS = 1122, /* s */
331 RPMTAG_DISTURL = 1123, /* s */
332 RPMTAG_PAYLOADFORMAT = 1124, /* s */
333 RPMTAG_PAYLOADCOMPRESSOR = 1125, /* s */
334 RPMTAG_PAYLOADFLAGS = 1126, /* s */
335 RPMTAG_INSTALLCOLOR = 1127, /* i transaction color when installed */
336 RPMTAG_INSTALLTID = 1128, /* i[] */
337 RPMTAG_REMOVETID = 1129, /* i[] */
338 /*@-enummemuse@*/
339 RPMTAG_SHA1RHN = 1130, /* internal - obsolete */
340 /*@=enummemuse@*/
341 RPMTAG_RHNPLATFORM = 1131, /* s deprecated */
342 RPMTAG_PLATFORM = 1132, /* s */
343 RPMTAG_PATCHESNAME = 1133, /* s[] deprecated placeholder (SuSE) */
344 RPMTAG_PATCHESFLAGS = 1134, /* i[] deprecated placeholder (SuSE) */
345 RPMTAG_PATCHESVERSION = 1135, /* s[] deprecated placeholder (SuSE) */
346 RPMTAG_CACHECTIME = 1136, /* i rpmcache(8) only */
347 RPMTAG_CACHEPKGPATH = 1137, /* s rpmcache(8) only */
348 RPMTAG_CACHEPKGSIZE = 1138, /* i rpmcache(8) only */
349 RPMTAG_CACHEPKGMTIME = 1139, /* i rpmcache(8) only */
350 RPMTAG_FILECOLORS = 1140, /* i[] */
351 RPMTAG_FILECLASS = 1141, /* i[] */
352 RPMTAG_CLASSDICT = 1142, /* s[] */
353 RPMTAG_FILEDEPENDSX = 1143, /* i[] */
354 RPMTAG_FILEDEPENDSN = 1144, /* i[] */
355 RPMTAG_DEPENDSDICT = 1145, /* i[] */
356 RPMTAG_SOURCEPKGID = 1146, /* x */
357 RPMTAG_FILECONTEXTS = 1147, /* s[] */
358 RPMTAG_FSCONTEXTS = 1148, /* s[] extension */
359 RPMTAG_RECONTEXTS = 1149, /* s[] extension */
360 RPMTAG_POLICIES = 1150, /* s[] selinux *.te policy file. */
361 RPMTAG_PRETRANS = 1151, /* s */
362 RPMTAG_POSTTRANS = 1152, /* s */
363 RPMTAG_PRETRANSPROG = 1153, /* s */
364 RPMTAG_POSTTRANSPROG = 1154, /* s */
365 RPMTAG_DISTTAG = 1155, /* s */
366 RPMTAG_SUGGESTSNAME = 1156, /* s[] extension */
367 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] */
368 RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension */
369 RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension */
370 RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder */
371 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] */
372 RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder */
373 RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder */
374 RPMTAG_PRIORITY = 1162, /* i[] extension placeholder */
375 RPMTAG_CVSID = 1163, /* s */
376 #define RPMTAG_SVNID RPMTAG_CVSID /* s */
377 RPMTAG_BLINKPKGID = 1164, /* s[] */
378 RPMTAG_BLINKHDRID = 1165, /* s[] */
379 RPMTAG_BLINKNEVRA = 1166, /* s[] */
380 RPMTAG_FLINKPKGID = 1167, /* s[] */
381 RPMTAG_FLINKHDRID = 1168, /* s[] */
382 RPMTAG_FLINKNEVRA = 1169, /* s[] */
383 RPMTAG_PACKAGEORIGIN = 1170, /* s */
384 RPMTAG_TRIGGERPREIN = 1171, /* internal */
385 RPMTAG_BUILDSUGGESTS = 1172, /* internal */
386 RPMTAG_BUILDENHANCES = 1173, /* internal */
387 RPMTAG_SCRIPTSTATES = 1174, /* i[] scriptlet exit codes */
388 RPMTAG_SCRIPTMETRICS = 1175, /* i[] scriptlet execution times */
389 RPMTAG_BUILDCPUCLOCK = 1176, /* i */
390 RPMTAG_FILEDIGESTALGOS = 1177, /* i[] */
391 RPMTAG_VARIANTS = 1178, /* s[] */
392 RPMTAG_XMAJOR = 1179, /* i */
393 RPMTAG_XMINOR = 1180, /* i */
394 RPMTAG_REPOTAG = 1181, /* s */
395 RPMTAG_KEYWORDS = 1182, /* s[] */
396 RPMTAG_BUILDPLATFORMS = 1183, /* s[] */
397 RPMTAG_PACKAGECOLOR = 1184, /* i */
398 RPMTAG_PACKAGEPREFCOLOR = 1185, /* i (unimplemented) */
399 RPMTAG_XATTRSDICT = 1186, /* s[] (unimplemented) */
400 RPMTAG_FILEXATTRSX = 1187, /* i[] (unimplemented) */
401 RPMTAG_DEPATTRSDICT = 1188, /* s[] (unimplemented) */
402 RPMTAG_CONFLICTATTRSX = 1189, /* i[] (unimplemented) */
403 RPMTAG_OBSOLETEATTRSX = 1190, /* i[] (unimplemented) */
404 RPMTAG_PROVIDEATTRSX = 1191, /* i[] (unimplemented) */
405 RPMTAG_REQUIREATTRSX = 1192, /* i[] (unimplemented) */
406 RPMTAG_BUILDPROVIDES = 1193, /* internal */
407 RPMTAG_BUILDOBSOLETES = 1194, /* internal */
408 RPMTAG_DBINSTANCE = 1195, /* i */
409 RPMTAG_NVRA = 1196, /* s */
410 RPMTAG_FILEPATHS = 1197, /* s[] */
411 RPMTAG_ORIGPATHS = 1198, /* s[] */
412 RPMTAG_RPMLIBVERSION = 1199, /* i */
413 RPMTAG_RPMLIBTIMESTAMP = 1200, /* i */
414 RPMTAG_RPMLIBVENDOR = 1201, /* i */
415 RPMTAG_CLASS = 1202, /* s arbitrary */
416 RPMTAG_TRACK = 1203, /* s internal arbitrary */
417 RPMTAG_TRACKPROG = 1204, /* s internal arbitrary */
418 RPMTAG_SANITYCHECK = 1205, /* s */
419 RPMTAG_SANITYCHECKPROG = 1206, /* s */
420 RPMTAG_FILESTAT = 1207, /* s[] stat(2) from metadata extension*/
421 RPMTAG_STAT = 1208, /* s[] stat(2) from disk extension */
422 RPMTAG_ORIGINTID = 1209, /* i[] */
423 RPMTAG_ORIGINTIME = 1210, /* i[] */
424 RPMTAG_HEADERSTARTOFF = 1211, /* l */
425 RPMTAG_HEADERENDOFF = 1212, /* l */
426 RPMTAG_PACKAGETIME = 1213, /* l */
427 RPMTAG_PACKAGESIZE = 1214, /* l */
428 RPMTAG_PACKAGEDIGEST = 1215, /* s */
429 RPMTAG_PACKAGESTAT = 1216, /* x */
430 RPMTAG_PACKAGEBASEURL = 1217, /* s */
431 RPMTAG_DISTEPOCH = 1218, /* s */
432 #define RPMTAG_D RPMTAG_DISTEPOCH /* s */
433
434 RPMTAG_CONFLICTYAMLENTRY = 1219, /* s[] */
435 RPMTAG_OBSOLETEYAMLENTRY = 1220, /* s[] */
436 RPMTAG_PROVIDEYAMLENTRY = 1221, /* s[] */
437 RPMTAG_REQUIREYAMLENTRY = 1222, /* s[] */
438
439 RPMTAG_FILEDIGESTALGO = 5011, /* i file checksum algorithm */
440 RPMTAG_BUGURL = 5012, /* s */
441
442 /*@-enummemuse@*/
443 RPMTAG_FIRSTFREE_TAG, /*!< internal */
444 /*@=enummemuse@*/
445
446 RPMTAG_PACKAGETRANSFLAGS = 0x4efaafd9, /* s[] arbitrary */
447 RPMTAG_PACKAGEDEPFLAGS = 0x748a8314, /* s[] arbitrary */
448
449 RPMTAG_BUILDPREPPROG = 0x4ba37c9e, /* s[] arbitrary */
450 RPMTAG_BUILDPREP = 0x799c0b4d, /* s[] arbitrary */
451 RPMTAG_BUILDBUILDPROG = 0x6fb46014, /* s[] arbitrary */
452 RPMTAG_BUILDBUILD = 0x5bae1a5a, /* s[] arbitrary */
453 RPMTAG_BUILDINSTALLPROG = 0x70d4ab6f, /* s[] arbitrary */
454 RPMTAG_BUILDINSTALL = 0x567f5983, /* s[] arbitrary */
455 RPMTAG_BUILDCHECKPROG = 0x488a60ce, /* s[] arbitrary */
456 RPMTAG_BUILDCHECK = 0x7f3b97b5, /* s[] arbitrary */
457 RPMTAG_BUILDCLEANPROG = 0x42c93d41, /* s[] arbitrary */
458 RPMTAG_BUILDCLEAN = 0x566042bf, /* s[] arbitrary */
459
460 RPMTAG_LASTARBITRARY_TAG = 0x80000000 /*!< internal */
461 };
462
463 #define RPMTAG_EXTERNAL_TAG 1000000
464
465 /** \ingroup signature
466 * Tags found in signature header from package.
467 */
468 enum rpmSigTag_e {
469 RPMSIGTAG_SIZE = 1000, /*!< internal Header+Payload size in bytes. */
470 RPMSIGTAG_LEMD5_1 = 1001, /*!< internal Broken MD5, take 1 @deprecated legacy. */
471 RPMSIGTAG_PGP = 1002, /*!< internal PGP 2.6.3 signature. */
472 RPMSIGTAG_LEMD5_2 = 1003, /*!< internal Broken MD5, take 2 @deprecated legacy. */
473 RPMSIGTAG_MD5 = 1004, /*!< internal MD5 signature. */
474 RPMSIGTAG_GPG = 1005, /*!< internal GnuPG signature. */
475 RPMSIGTAG_PGP5 = 1006, /*!< internal PGP5 signature @deprecated legacy. */
476 RPMSIGTAG_PAYLOADSIZE = 1007,/*!< internal uncompressed payload size in bytes. */
477 RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1, /*!< internal Broken SHA1, take 1. */
478 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, /*!< internal Broken SHA1, take 2. */
479 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, /*!< internal sha1 header digest. */
480 RPMSIGTAG_DSA = RPMTAG_DSAHEADER, /*!< internal DSA header signature. */
481 RPMSIGTAG_RSA = RPMTAG_RSAHEADER, /*!< internal RSA header signature. */
482 RPMSIGTAG_PADDING = 0x3fffffff /*!< signature header padding */
483 };
484
485 /** \ingroup header
486 */
487 typedef enum rpmTag_e rpmTag;
488
489 /** \ingroup header
490 */
491 typedef enum rpmSigTag_e rpmSigTag;
492
493 /** \ingroup header
494 */
495 /*@-typeuse -fielduse@*/
496 #if !defined(SWIG)
497 struct _HE_s {
498 rpmTag tag;
499 rpmTagType t;
500 /*@owned@*/ /*@null@*/
501 rpmTagData p;
502 rpmTagCount c;
503 int ix;
504 unsigned int freeData : 1;
505 unsigned int avail : 1;
506 unsigned int append : 1;
507 };
508 #endif
509
510 /**
511 */
512 typedef struct _HE_s HE_s;
513
514 /** \ingroup rpmdb
515 */
516 typedef struct tagStore_s * tagStore_t;
517
518 /**
519 */
520 typedef /*@abstract@*/ const struct headerTagTableEntry_s * headerTagTableEntry;
521
522 #if defined(_RPMTAG_INTERNAL)
523 /**
524 */
525 /** \ingroup header
526 * Associate tag names with numeric values.
527 */
528 #if !defined(SWIG)
529 struct headerTagTableEntry_s {
530 /*@observer@*/ /*@relnull@*/
531 const char * name; /*!< Tag name. */
532 rpmTag val; /*!< Tag numeric value. */
533 rpmTagType type; /*!< Tag type. */
534 };
535 #endif
536
537 /**
538 */
539 struct tagStore_s {
540 /*@only@*/
541 const char * str; /*!< Tag string (might be arbitrary). */
542 rpmTag tag; /*!< Tag number. */
543 rpmiob iob; /*!< Tag contents. */
544 };
545 #endif /* _RPMTAG_INTERNAL */
546
547 /**
548 * Automatically generated table of tag name/value pairs.
549 */
550 /*@-redecl@*/
551 /*@observer@*/ /*@unchecked@*/
552 extern headerTagTableEntry rpmTagTable;
553 /*@=redecl@*/
554
555 /**
556 * Number of entries in rpmTagTable.
557 */
558 /*@-redecl@*/
559 /*@unchecked@*/
560 extern int rpmTagTableSize;
561
562 /*@unchecked@*/
563 extern headerTagIndices rpmTags;
564 /*@=redecl@*/
565
566 #if defined(_RPMTAG_INTERNAL)
567 /**
568 */
569 #if !defined(SWIG)
570 struct headerTagIndices_s {
571 /*@relnull@*/
572 int (*loadIndex) (headerTagTableEntry ** ipp, size_t * np,
573 int (*cmp) (const void * avp, const void * bvp))
574 /*@ modifies *ipp, *np */; /*!< Load sorted tag index. */
575 /*@relnull@*/
576 headerTagTableEntry * byName; /*!< rpmTag's sorted by name. */
577 size_t byNameSize; /*!< No. of entries. */
578 int (*byNameCmp) (const void * avp, const void * bvp)
579 /*@*/; /*!< Compare entries by name. */
580 rpmTag (*tagValue) (const char * name)
581 /*@*/; /*!< Return value from name. */
582 /*@relnull@*/
583 headerTagTableEntry * byValue; /*!< rpmTag's sorted by value. */
584 size_t byValueSize; /*!< No. of entries. */
585 int (*byValueCmp) (const void * avp, const void * bvp)
586 /*@*/; /*!< Compare entries by value. */
587 const char * (*tagName) (rpmTag value)
588 /*@*/; /*!< Return name from value. */
589 rpmTag (*tagType) (rpmTag value)
590 /*@*/; /*!< Return type from value. */
591 size_t nameBufLen; /*!< No. bytes allocated for nameBuf. */
592 /*@relnull@*/
593 const char ** aTags; /*!< Arbitrary tags array (ARGV_t) */
594 /*@owned@*/ /*@null@*/
595 char * nameBuf; /* Name buffer. */
596 /*@only@*/
597 char * (*tagCanonicalize) (const char * s)
598 /*@*/; /*!< Canonicalize arbitrary string. */
599 rpmTag (*tagGenerate) (const char * s)
600 /*@*/; /*!< Generate tag from string. */
601 };
602 #endif
603 #endif /* _RPMTAG_INTERNAL */
604
605 /**
606 * Return tag name from value.
607 * @param tag tag value
608 * @return tag name, "(unknown)" on not found
609 */
610 /*@observer@*/
611 const char * tagName(rpmTag tag)
612 /*@*/;
613
614 /**
615 * Return tag data type from value.
616 * @todo Return rpmTagType-like, not unsigned int. There's no clear typedef yet.
617 * @param tag tag value
618 * @return tag data type, 0 on not found.
619 */
620 unsigned int tagType(rpmTag tag)
621 /*@*/;
622
623 /**
624 * Return tag value from name.
625 * @param tagstr name of tag
626 * @return tag value, 0xffffffff on not found
627 */
628 rpmTag tagValue(const char * tagstr)
629 /*@*/;
630
631 /**
632 * Canonicalize a rpmTag string.
633 * @param s string
634 * @return canonicalized string
635 */
636 /*@only@*/
637 char * tagCanonicalize(const char * s)
638 /*@*/;
639
640 /**
641 * Generate a tag from arbitrary string.
642 * @param s string
643 * @return generated tag value
644 */
645 rpmTag tagGenerate(const char * s)
646 /*@*/;
647
648 /**
649 * Free memory in header tag indices.
650 * @param _rpmTags header tag indices (NULL uses rpmTags)
651 */
652 void tagClean(/*@null@*/ headerTagIndices _rpmTags)
653 /*@globals rpmTags @*/
654 /*@modifies _rpmTags, rpmTags @*/;
655
656 /**
657 * Destroy tagStore array.
658 * @param dbiTags dbi tag storage
659 * @param dbiNTags no. of dbi tags
660 * @return NULL always
661 */
662 /*@null@*/
663 tagStore_t tagStoreFree(/*@only@*//*@null@*/tagStore_t dbiTags, size_t dbiNTags)
664 /*@modifies dbiTags @*/;
665
666 #if defined(_RPMTAG_INTERNAL)
667 /** \ingroup header
668 */
669 typedef enum headerSprintfExtensionType_e {
670 HEADER_EXT_LAST = 0, /*!< End of extension chain. */
671 HEADER_EXT_FORMAT, /*!< headerTagFormatFunction() extension */
672 HEADER_EXT_MORE, /*!< Chain to next table. */
673 HEADER_EXT_TAG /*!< headerTagTagFunction() extension */
674 } headerSprintfExtensionType;
675
676 /** \ingroup header
677 * HEADER_EXT_TAG format function prototype.
678 *
679 * @param he tag container
680 * @param av parameter array (or NULL)
681 * @return formatted string
682 */
683 typedef /*only@*/ char * (*headerTagFormatFunction) (HE_t he, /*@null@*/ const char ** av)
684 /*@modifies he @*/;
685
686 /** \ingroup header
687 * HEADER_EXT_FORMAT format function prototype.
688 * This is allowed to fail, which indicates the tag doesn't exist.
689 *
690 * @param h header
691 * @retval he tag container
692 * @return 0 on success
693 */
694 typedef int (*headerTagTagFunction) (Header h, HE_t he)
695 /*@modifies he @*/;
696
697 /** \ingroup header
698 * Define header tag output formats.
699 */
700 #if !defined(SWIG)
701 struct headerSprintfExtension_s {
702 headerSprintfExtensionType type; /*!< Type of extension. */
703 /*@observer@*/ /*@null@*/
704 const char * name; /*!< Name of extension. */
705 union {
706 /*@observer@*/ /*@null@*/
707 void * generic; /*!< Private extension. */
708 headerTagFormatFunction fmtFunction; /*!< HEADER_EXT_TAG extension. */
709 headerTagTagFunction tagFunction; /*!< HEADER_EXT_FORMAT extension. */
710 headerSprintfExtension * more; /*!< Chained table extension. */
711 } u;
712 };
713 #endif
714 #endif /* _RPMTAG_INTERNAL */
715
716 /** \ingroup header
717 * Supported default header tag output formats.
718 */
719 /*@unchecked@*/ /*@observer@*/
720 extern headerSprintfExtension headerDefaultFormats;
721
722 /** \ingroup header
723 * Supported default header extension/tag output formats.
724 */
725 /*@unchecked@*/ /*@observer@*/
726 extern headerSprintfExtension headerCompoundFormats;
727
728 /**
729 * Display list of tags that can be used in --queryformat.
730 * @param fp file handle to use for display (NULL uses stdout)
731 * @param _rpmTagTable rpm tag table (NULL uses rpmTagTable)
732 * @param _rpmHeaderFormats rpm tag extensions & formats (NULL uses headerCompoundFormats)
733 */
734 void rpmDisplayQueryTags(/*@null@*/ FILE * fp,
735 /*@null@*/ headerTagTableEntry _rpmTagTable,
736 /*@null@*/ headerSprintfExtension _rpmHeaderFormats)
737 /*@globals fileSystem, internalState @*/
738 /*@modifies *fp, fileSystem, internalState @*/;
739
740 /** \ingroup header
741 * Return formatted output string from header tags.
742 * The returned string must be free()d.
743 *
744 * @param h header
745 * @param fmt format to use
746 * @param tags array of tag name/value/type triples (NULL uses default)
747 * @param exts formatting extensions chained table (NULL uses default)
748 * @retval errmsg error message (if any)
749 * @return formatted output string (malloc'ed)
750 */
751 /*@only@*/ /*@null@*/
752 char * headerSprintf(Header h, const char * fmt,
753 /*@null@*/ headerTagTableEntry tags,
754 /*@null@*/ headerSprintfExtension exts,
755 /*@null@*/ /*@out@*/ errmsg_t * errmsg)
756 /*@globals headerCompoundFormats, fileSystem, internalState @*/
757 /*@modifies h, *errmsg, fileSystem, internalState @*/;
758
759 /** \ingroup header
760 * Retrieve extension or tag value from a header.
761 *
762 * @param h header
763 * @param he tag container
764 * @param flags tag retrieval flags
765 * @return 1 on success, 0 on failure
766 */
767 int headerGet(Header h, HE_t he, unsigned int flags)
768 /*@globals internalState @*/
769 /*@modifies he, internalState @*/;
770 #define HEADERGET_NOEXTENSION (1 << 0) /*!< Extension search disabler. */
771 #define HEADERGET_NOI18NSTRING (1 << 1) /*!< Return i18n strings as argv. */
772
773 /** \ingroup header
774 * Add or append tag container to header.
775 *
776 * @param h header
777 * @param he tag container
778 * @param flags (unused)
779 * @return 1 on success, 0 on failure
780 */
781 /*@mayexit@*/
782 int headerPut(Header h, HE_t he, /*@unused@*/ unsigned int flags)
783 /*@modifies h @*/;
784
785 /** \ingroup header
786 * Remove tag container from header.
787 *
788 * @param h header
789 * @param he tag container
790 * @param flags (unused)
791 * @return 1 on success, 0 on failure
792 */
793 /*@mayexit@*/
794 int headerDel(Header h, HE_t he, /*@unused@*/ unsigned int flags)
795 /*@modifies h @*/;
796
797 /** \ingroup header
798 * Modify tag container in header.
799 * If there are multiple entries with this tag, the first one gets replaced.
800 * @param h header
801 * @param he tag container
802 * @param flags (unused)
803 * @return 1 on success, 0 on failure
804 */
805 int headerMod(Header h, HE_t he, /*@unused@*/ unsigned int flags)
806 /*@modifies h @*/;
807
808 /** \ingroup header
809 * Destroy header tag container iterator.
810 * @param hi header tag container iterator
811 * @return NULL always
812 */
813 /*@null@*/
814 HeaderIterator headerFini(/*@only@*/ HeaderIterator hi)
815 /*@globals fileSystem @*/
816 /*@modifies hi, fileSystem */;
817
818 /** \ingroup header
819 * Create header tag iterator.
820 * @param h header
821 * @return header tag iterator
822 */
823 HeaderIterator headerInit(Header h)
824 /*@globals fileSystem @*/
825 /*@modifies h, fileSystem */;
826
827 /** \ingroup header
828 * Return next tag from header.
829 * @param hi header tag iterator
830 * @param he tag container
831 * @param flags (unused)
832 * @return 1 on success, 0 on failure
833 */
834 int headerNext(HeaderIterator hi, HE_t he, /*@unused@*/ unsigned int flags)
835 /*@globals internalState @*/
836 /*@modifies hi, he, internalState @*/;
837
838 /** \ingroup header
839 * Reference a header instance.
840 * @param h header
841 * @return referenced header instance
842 */
843 Header headerLink(Header h)
844 /*@modifies h @*/;
845 #define headerLink(_h) \
846 ((Header)rpmioLinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
847
848 /** \ingroup header
849 * Dereference a header instance.
850 * @param h header
851 * @return NULL on last dereference
852 */
853 /*@null@*/
854 Header headerUnlink(/*@killref@*/ /*@null@*/ Header h)
855 /*@modifies h @*/;
856 #define headerUnlink(_h) \
857 ((Header)rpmioUnlinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
858
859 /** \ingroup header
860 * Dereference a header instance.
861 * @param h header
862 * @return NULL on last dereference
863 */
864 /*@null@*/
865 Header headerFree(/*@killref@*/ /*@null@*/ Header h)
866 /*@modifies h @*/;
867 #define headerFree(_h) \
868 ((Header)rpmioFreePoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
869
870 /** \ingroup header
871 * Create new (empty) header instance.
872 * @return header
873 */
874 Header headerNew(void)
875 /*@globals fileSystem @*/
876 /*@modifies fileSystem @*/;
877
878 /** \ingroup header
879 * Return size of on-disk header representation in bytes.
880 * @param h header
881 * @return size of on-disk header
882 */
883 size_t headerSizeof(/*@null@*/ Header h)
884 /*@modifies h @*/;
885
886 /** \ingroup header
887 * headerUnload.
888 * @param h header
889 * @retval *lenp no. bytes in unloaded header blob
890 * @return unloaded header blob (NULL on error)
891 */
892 /*@only@*/ /*@null@*/
893 void * headerUnload(Header h, /*@out@*/ /*@null@*/ size_t * lenp)
894 /*@globals internalState @*/
895 /*@modifies h, *lenp, internalState @*/;
896
897 /** \ingroup header
898 * Convert header to on-disk representation, and then reload.
899 * This is used to insure that all header data is in a single
900 * contiguous memory allocation.
901 * @param h header (with pointers)
902 * @param tag region tag
903 * @return on-disk header (with offsets)
904 */
905 /*@null@*/
906 Header headerReload(/*@only@*/ Header h, int tag)
907 /*@globals fileSystem, internalState @*/
908 /*@modifies h, fileSystem, internalState @*/;
909
910 /** \ingroup header
911 * Duplicate a header.
912 * @param h header
913 * @return new header instance
914 */
915 /*@null@*/
916 Header headerCopy(Header h)
917 /*@globals fileSystem, internalState @*/
918 /*@modifies h, fileSystem, internalState @*/;
919
920 /** \ingroup header
921 * Convert header to in-memory representation.
922 * @param uh on-disk header blob (i.e. with offsets)
923 * @return header
924 */
925 /*@null@*/
926 Header headerLoad(/*@kept@*/ void * uh)
927 /*@globals fileSystem, internalState @*/
928 /*@modifies uh, fileSystem, internalState @*/;
929
930 /** \ingroup header
931 * Make a copy and convert header to in-memory representation.
932 * @param uh on-disk header blob (i.e. with offsets)
933 * @return header
934 */
935 /*@null@*/
936 Header headerCopyLoad(const void * uh)
937 /*@globals fileSystem, internalState @*/
938 /*@modifies fileSystem, internalState @*/;
939
940 /** \ingroup header
941 * Check if tag is in header.
942 * @param h header
943 * @param tag tag
944 * @return 1 on success, 0 on failure
945 */
946 int headerIsEntry(/*@null@*/ Header h, rpmTag tag)
947 /*@*/;
948
949 /** \ingroup header
950 * Add locale specific tag to header.
951 * A NULL lang is interpreted as the C locale. Here are the rules:
952 * \verbatim
953 * - If the tag isn't in the header, it's added with the passed string
954 * as new value.
955 * - If the tag occurs multiple times in entry, which tag is affected
956 * by the operation is undefined.
957 * - If the tag is in the header w/ this language, the entry is
958 * *replaced* (like headerModifyEntry()).
959 * \endverbatim
960 * This function is intended to just "do the right thing". If you need
961 * more fine grained control use headerAddEntry() and headerModifyEntry().
962 *
963 * @param h header
964 * @param tag tag
965 * @param string tag value
966 * @param lang locale
967 * @return 1 on success, 0 on failure
968 */
969 int headerAddI18NString(Header h, rpmTag tag, const char * string,
970 const char * lang)
971 /*@modifies h @*/;
972
973 /** \ingroup header
974 * Duplicate tag values from one header into another.
975 * @param headerFrom source header
976 * @param headerTo destination header
977 * @param tagstocopy array of tags that are copied
978 */
979 void headerCopyTags(Header headerFrom, Header headerTo, rpmTag * tagstocopy)
980 /*@globals internalState @*/
981 /*@modifies headerTo, internalState @*/;
982
983 /** \ingroup header
984 * Return header magic.
985 * @param h header
986 * @param *magicp magic array
987 * @param *nmagicp no. bytes of magic
988 * @return 0 always
989 */
990 int headerGetMagic(/*@null@*/ Header h, unsigned char **magicp, size_t *nmagicp)
991 /*@modifies *magicp, *nmagicp @*/;
992
993 /** \ingroup header
994 * Store header magic.
995 * @param h header
996 * @param magic magic array
997 * @param nmagic no. bytes of magic
998 * @return 0 always
999 */
1000 int headerSetMagic(/*@null@*/ Header h, unsigned char * magic, size_t nmagic)
1001 /*@modifies h @*/;
1002
1003 /** \ingroup header
1004 * Return header origin (e.g path or URL).
1005 * @param h header
1006 * @return header origin
1007 */
1008 /*@observer@*/ /*@null@*/
1009 const char * headerGetOrigin(/*@null@*/ Header h)
1010 /*@*/;
1011
1012 /** \ingroup header
1013 * Store header origin (e.g path or URL).
1014 * @param h header
1015 * @param origin new header origin
1016 * @return 0 always
1017 */
1018 int headerSetOrigin(/*@null@*/ Header h, const char * origin)
1019 /*@modifies h @*/;
1020
1021 /** \ingroup header
1022 * Return header parent identifier (e.g parent's NVRA).
1023 * @param h header
1024 * @return header parent
1025 */
1026 /*@observer@*/ /*@null@*/
1027 const char * headerGetParent(/*@null@*/ Header h)
1028 /*@*/;
1029
1030 /** \ingroup header
1031 * Store header parent (e.g parent's NVRA).
1032 * @param h header
1033 * @param parent new header parent
1034 * @return 0 always
1035 */
1036 int headerSetParent(/*@null@*/ Header h, const char * parent)
1037 /*@modifies h @*/;
1038
1039 /** \ingroup header
1040 * Return header base URL (e.g path or URL).
1041 * @param h header
1042 * @return header origin
1043 */
1044 /*@observer@*/ /*@null@*/
1045 const char * headerGetBaseURL(/*@null@*/ Header h)
1046 /*@*/;
1047
1048 /** \ingroup header
1049 * Store header base URL (e.g path or URL).
1050 * @param h header
1051 * @param baseurl new header baseurl
1052 * @return 0 always
1053 */
1054 int headerSetBaseURL(/*@null@*/ Header h, const char * baseurl)
1055 /*@modifies h @*/;
1056
1057 /** \ingroup header
1058 * Return header stat(2) buffer (of origin *.rpm file).
1059 * @param h header
1060 * @return header stat(2) buffer
1061 */
1062 struct stat * headerGetStatbuf(/*@null@*/ Header h)
1063 /*@*/;
1064
1065 /** \ingroup header
1066 * Copy into header stat(2) buffer (of origin *.rpm file).
1067 * @param h header
1068 * @param st new header stat(2) buffer
1069 * @return 0 always
1070 */
1071 int headerSetStatbuf(/*@null@*/ Header h, struct stat * st)
1072 /*@modifies h @*/;
1073
1074 /** \ingroup header
1075 * Return digest of origin *.rpm file.
1076 * @param h header
1077 * @return header digest
1078 */
1079 /*@null@*/
1080 const char * headerGetDigest(/*@null@*/ Header h)
1081 /*@*/;
1082
1083 /** \ingroup header
1084 * Store digest of origin *.rpm file.
1085 * @param h header
1086 * @param st new header digest
1087 * @return 0 always
1088 */
1089 int headerSetDigest(/*@null@*/ Header h, const char * digest)
1090 /*@modifies h @*/;
1091
1092 /** \ingroup header
1093 * Return rpmdb pointer.
1094 * @param h header
1095 * @return rpmdb pointer
1096 */
1097 /*@null@*/
1098 void * headerGetRpmdb(/*@null@*/ Header h)
1099 /*@*/;
1100
1101 /** \ingroup header
1102 * Store rpmdb pointer.
1103 * @param h header
1104 * @param rpmdb new rpmdb pointer (or NULL to unset)
1105 * @return NULL always
1106 */
1107 /*@null@*/
1108 void * headerSetRpmdb(/*@null@*/ Header h, /*@null@*/ void * rpmdb)
1109 /*@modifies h @*/;
1110
1111 /** \ingroup header
1112 * Return header instance (if from rpmdb).
1113 * @param h header
1114 * @return header instance
1115 */
1116 uint32_t headerGetInstance(/*@null@*/ Header h)
1117 /*@*/;
1118
1119 /** \ingroup header
1120 * Store header instance (e.g path or URL).
1121 * @param h header
1122 * @param instance new header instance
1123 * @return 0 always
1124 */
1125 uint32_t headerSetInstance(/*@null@*/ Header h, uint32_t instance)
1126 /*@modifies h @*/;
1127
1128 /** \ingroup header
1129 * Return header starting byte offset.
1130 * @param h header
1131 * @return header starting byte offset
1132 */
1133 rpmuint32_t headerGetStartOff(/*@null@*/ Header h)
1134 /*@*/;
1135
1136 /** \ingroup header
1137 * Store header starting byte offset.
1138 * @param h header
1139 * @param startoff new header starting byte offset
1140 * @return 0 always
1141 */
1142 rpmuint32_t headerSetStartOff(/*@null@*/ Header h, rpmuint32_t startoff)
1143 /*@modifies h @*/;
1144
1145 /** \ingroup header
1146 * Return header ending byte offset.
1147 * @param h header
1148 * @return header ending byte offset
1149 */
1150 rpmuint32_t headerGetEndOff(/*@null@*/ Header h)
1151 /*@*/;
1152
1153 /** \ingroup header
1154 * Store header ending byte offset.
1155 * @param h header
1156 * @param startoff new header ending byte offset
1157 * @return 0 always
1158 */
1159 rpmuint32_t headerSetEndOff(/*@null@*/ Header h, rpmuint32_t endoff)
1160 /*@modifies h @*/;
1161
1162 /** \ingroup header
1163 * Return header stats accumulator structure.
1164 * @param h header
1165 * @param opx per-header accumulator index (aka rpmtsOpX)
1166 * @return per-header accumulator pointer
1167 */
1168 /*@null@*/
1169 void * headerGetStats(Header h, int opx)
1170 /*@*/;
1171
1172 /**
1173 * Define per-header macros.
1174 * @param h header
1175 * @return 0 always
1176 */
1177 int headerMacrosLoad(Header h)
1178 /*@globals internalState @*/
1179 /*@modifies internalState @*/;
1180
1181 /**
1182 * Define per-header macros.
1183 * @param h header
1184 * @return 0 always
1185 */
1186 int headerMacrosUnload(Header h)
1187 /*@globals internalState @*/
1188 /*@modifies internalState @*/;
1189
1190 /** \ingroup header
1191 * Return name, epoch, version, release, arch strings from header.
1192 * @param h header
1193 * @retval *np name pointer (or NULL)
1194 * @retval *ep epoch pointer (or NULL)
1195 * @retval *vp version pointer (or NULL)
1196 * @retval *rp release pointer (or NULL)
1197 * @retval *ap arch pointer (or NULL)
1198 * @return 0 always
1199 */
1200 int headerNEVRA(Header h,
1201 /*@null@*/ /*@out@*/ const char ** np,
1202 /*@null@*/ /*@out@*/ /*@unused@*/ const char ** ep,
1203 /*@null@*/ /*@out@*/ const char ** vp,
1204 /*@null@*/ /*@out@*/ const char ** rp,
1205 /*@null@*/ /*@out@*/ const char ** ap)
1206 /*@globals internalState @*/
1207 /*@modifies h, *np, *vp, *rp, *ap, internalState @*/;
1208
1209 /**
1210 * Return header color.
1211 * @param h header
1212 * @return header color
1213 */
1214 rpmuint32_t hGetColor(Header h)
1215 /*@globals internalState @*/
1216 /*@modifies h, internalState @*/;
1217
1218 /** \ingroup header
1219 * Translate and merge legacy signature tags into header.
1220 * @todo Remove headerSort() through headerInitIterator() modifies sig.
1221 * @param h header
1222 * @param sigh signature header
1223 */
1224 void headerMergeLegacySigs(Header h, const Header sigh)
1225 /*@globals fileSystem, internalState @*/
1226 /*@modifies h, sigh, fileSystem, internalState @*/;
1227
1228 /** \ingroup header
1229 * Regenerate signature header.
1230 * @todo Remove headerSort() through headerInitIterator() modifies h.
1231 * @param h header
1232 * @param noArchiveSize don't copy archive size tag (pre rpm-4.1)
1233 * @return regenerated signature header
1234 */
1235 Header headerRegenSigHeader(const Header h, int noArchiveSize)
1236 /*@globals fileSystem, internalState @*/
1237 /*@modifies h, fileSystem, internalState @*/;
1238
1239 #ifdef __cplusplus
1240 }
1241 #endif
1242
1243 #endif /* H_RPMTAG */