rpm  4.5
rpmlib.h
Go to the documentation of this file.
1 #ifndef H_RPMLIB
2 #define H_RPMLIB
3 
11 #include "rpmio.h"
12 #include "rpmmessages.h"
13 #include "rpmerr.h"
14 #include "header.h"
15 #include "popt.h"
16 
17 #define RPM_FORMAT_VERSION 4
18 #define RPM_MAJOR_VERSION 5
19 #define RPM_MINOR_VERSION 0
20 
24 typedef enum rpmRC_e {
25  RPMRC_OK = 0,
27  RPMRC_FAIL = 2,
30 } rpmRC;
31 
32 /*@-redecl@*/
33 /*@checked@*/
35 
36 /*@checked@*/
37 extern struct MacroContext_s * rpmCLIMacroContext;
38 
39 /*@unchecked@*/ /*@observer@*/
40 extern const char * RPMVERSION;
41 
42 /*@unchecked@*/ /*@observer@*/
43 extern const char * rpmNAME;
44 
45 /*@unchecked@*/ /*@observer@*/
46 extern const char * rpmEVR;
47 
48 /*@unchecked@*/
49 extern int rpmFLAGS;
50 /*@=redecl@*/
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
62 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmts_s * rpmts;
63 
66 typedef struct Spec_s * Spec;
67 
71 typedef /*@abstract@*/ void * alKey;
72 #define RPMAL_NOMATCH ((alKey)-1L)
73 
77 /*@-mutrep@*/
78 typedef /*@abstract@*/ int alNum;
79 /*@=mutrep@*/
80 
84 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmds_s * rpmds;
85 
89 typedef struct rpmPRCO_s * rpmPRCO;
90 
94 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi;
95 
99 typedef /*@abstract@*/ struct rpmte_s * rpmte;
100 
104 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb;
105 
109 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
110 
114 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
115 
122 void headerMergeLegacySigs(Header h, const Header sigh)
123  /*@modifies h, sigh @*/;
124 
132 Header headerRegenSigHeader(const Header h, int noArchiveSize)
133  /*@modifies h @*/;
134 
138 /*@-redecl@*/
139 /*@observer@*/ /*@unchecked@*/
140 extern const struct headerTagTableEntry_s * rpmTagTable;
141 /*@=redecl@*/
142 
146 /*@-redecl@*/
147 /*@unchecked@*/
148 extern const int rpmTagTableSize;
149 /*@=redecl@*/
150 
151 /*@unchecked@*/
153 
158 /*@-redecl@*/
159 /*@unchecked@*/
160 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
161 /*@=redecl@*/
162 
166 #define RPMDBI_PACKAGES 0 /* Installed package headers. */
167 #define RPMDBI_DEPENDS 1 /* Dependency resolution cache. */
168 #define RPMDBI_LABEL 2 /* Fingerprint search marker. */
169 #define RPMDBI_ADDED 3 /* Added package headers. */
170 #define RPMDBI_REMOVED 4 /* Removed package headers. */
171 #define RPMDBI_AVAILABLE 5 /* Available package headers. */
172 #define RPMDBI_HDLIST 6 /* (rpmgi) Header list. */
173 #define RPMDBI_ARGLIST 7 /* (rpmgi) Argument list. */
174 #define RPMDBI_FTSWALK 8 /* (rpmgi) File tree walk. */
175 
181 typedef enum rpmTag_e {
182 
186 /*@-enummemuse@*/
190 /*@=enummemuse@*/
191 
192 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
193 /* the md5 sum was broken *twice* on big endian machines */
194 /* XXX 2nd underscore prevents tagTable generation */
197  RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2, /* internal - obsolete */
199  RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4, /* x internal - obsolete */
201 #define RPMTAG_PKGID RPMTAG_SIGMD5 /* x */
203  RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7, /* internal - obsolete */
204 
205  RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8, /* internal - obsolete */
206  RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9, /* internal - obsolete */
211 #define RPMTAG_HDRID RPMTAG_SHA1HEADER /* s */
212 
213  RPMTAG_NAME = 1000, /* s */
214 #define RPMTAG_N RPMTAG_NAME /* s */
215  RPMTAG_VERSION = 1001, /* s */
216 #define RPMTAG_V RPMTAG_VERSION /* s */
217  RPMTAG_RELEASE = 1002, /* s */
218 #define RPMTAG_R RPMTAG_RELEASE /* s */
219  RPMTAG_EPOCH = 1003, /* i */
220 #define RPMTAG_E RPMTAG_EPOCH /* i */
221  RPMTAG_SUMMARY = 1004, /* s{} */
222  RPMTAG_DESCRIPTION = 1005, /* s{} */
223  RPMTAG_BUILDTIME = 1006, /* i */
224  RPMTAG_BUILDHOST = 1007, /* s */
225  RPMTAG_INSTALLTIME = 1008, /* i */
226  RPMTAG_SIZE = 1009, /* i */
227  RPMTAG_DISTRIBUTION = 1010, /* s */
228  RPMTAG_VENDOR = 1011, /* s */
229  RPMTAG_GIF = 1012, /* x */
230  RPMTAG_XPM = 1013, /* x */
231  RPMTAG_LICENSE = 1014, /* s */
232  RPMTAG_PACKAGER = 1015, /* s */
233  RPMTAG_GROUP = 1016, /* s{} */
234 /*@-enummemuse@*/
235  RPMTAG_CHANGELOG = 1017, /* s[] internal */
236 /*@=enummemuse@*/
237  RPMTAG_SOURCE = 1018, /* s[] */
238  RPMTAG_PATCH = 1019, /* s[] */
239  RPMTAG_URL = 1020, /* s */
240  RPMTAG_OS = 1021, /* s legacy used int */
241  RPMTAG_ARCH = 1022, /* s legacy used int */
242  RPMTAG_PREIN = 1023, /* s */
243  RPMTAG_POSTIN = 1024, /* s */
244  RPMTAG_PREUN = 1025, /* s */
245  RPMTAG_POSTUN = 1026, /* s */
246  RPMTAG_OLDFILENAMES = 1027, /* s[] obsolete */
247  RPMTAG_FILESIZES = 1028, /* i[] */
248  RPMTAG_FILESTATES = 1029, /* c[] */
249  RPMTAG_FILEMODES = 1030, /* h[] */
250  RPMTAG_FILEUIDS = 1031, /* i[] internal */
251  RPMTAG_FILEGIDS = 1032, /* i[] internal */
252  RPMTAG_FILERDEVS = 1033, /* h[] */
253  RPMTAG_FILEMTIMES = 1034, /* i[] */
254  RPMTAG_FILEDIGESTS = 1035, /* s[] */
255 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
256  RPMTAG_FILELINKTOS = 1036, /* s[] */
257  RPMTAG_FILEFLAGS = 1037, /* i[] */
258 /*@-enummemuse@*/
259  RPMTAG_ROOT = 1038, /* internal - obsolete */
260 /*@=enummemuse@*/
261  RPMTAG_FILEUSERNAME = 1039, /* s[] */
262  RPMTAG_FILEGROUPNAME = 1040, /* s[] */
263 /*@-enummemuse@*/
264  RPMTAG_EXCLUDE = 1041, /* internal - obsolete */
265  RPMTAG_EXCLUSIVE = 1042, /* internal - obsolete */
266 /*@=enummemuse@*/
267  RPMTAG_ICON = 1043, /* x */
268  RPMTAG_SOURCERPM = 1044, /* s */
269  RPMTAG_FILEVERIFYFLAGS = 1045, /* i[] */
270  RPMTAG_ARCHIVESIZE = 1046, /* i */
271  RPMTAG_PROVIDENAME = 1047, /* s[] */
272 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME /* s[] */
273 #define RPMTAG_P RPMTAG_PROVIDENAME /* s[] */
274  RPMTAG_REQUIREFLAGS = 1048, /* i[] */
275  RPMTAG_REQUIRENAME = 1049, /* s[] */
276 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME /* s[] */
277  RPMTAG_REQUIREVERSION = 1050, /* s[] */
278  RPMTAG_NOSOURCE = 1051, /* i internal */
279  RPMTAG_NOPATCH = 1052, /* i internal */
280  RPMTAG_CONFLICTFLAGS = 1053, /* i[] */
281  RPMTAG_CONFLICTNAME = 1054, /* s[] */
282 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME /* s[] */
283 #define RPMTAG_C RPMTAG_CONFLICTNAME /* s[] */
284  RPMTAG_CONFLICTVERSION = 1055, /* s[] */
285  RPMTAG_DEFAULTPREFIX = 1056, /* s internal - deprecated */
286  RPMTAG_BUILDROOT = 1057, /* s internal */
287  RPMTAG_INSTALLPREFIX = 1058, /* s internal - deprecated */
288  RPMTAG_EXCLUDEARCH = 1059, /* s[] */
289  RPMTAG_EXCLUDEOS = 1060, /* s[] */
290  RPMTAG_EXCLUSIVEARCH = 1061, /* s[] */
291  RPMTAG_EXCLUSIVEOS = 1062, /* s[] */
292  RPMTAG_AUTOREQPROV = 1063, /* s internal */
293  RPMTAG_RPMVERSION = 1064, /* s */
294  RPMTAG_TRIGGERSCRIPTS = 1065, /* s[] */
295  RPMTAG_TRIGGERNAME = 1066, /* s[] */
296  RPMTAG_TRIGGERVERSION = 1067, /* s[] */
297  RPMTAG_TRIGGERFLAGS = 1068, /* i[] */
298  RPMTAG_TRIGGERINDEX = 1069, /* i[] */
299  RPMTAG_VERIFYSCRIPT = 1079, /* s */
300  RPMTAG_CHANGELOGTIME = 1080, /* i[] */
301  RPMTAG_CHANGELOGNAME = 1081, /* s[] */
302  RPMTAG_CHANGELOGTEXT = 1082, /* s[] */
303 /*@-enummemuse@*/
304  RPMTAG_BROKENMD5 = 1083, /* internal - obsolete */
305 /*@=enummemuse@*/
306  RPMTAG_PREREQ = 1084, /* internal */
307  RPMTAG_PREINPROG = 1085, /* s */
308  RPMTAG_POSTINPROG = 1086, /* s */
309  RPMTAG_PREUNPROG = 1087, /* s */
310  RPMTAG_POSTUNPROG = 1088, /* s */
311  RPMTAG_BUILDARCHS = 1089, /* s[] */
312  RPMTAG_OBSOLETENAME = 1090, /* s[] */
313 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME /* s[] */
314 #define RPMTAG_O RPMTAG_OBSOLETENAME /* s[] */
315  RPMTAG_VERIFYSCRIPTPROG = 1091, /* s */
316  RPMTAG_TRIGGERSCRIPTPROG = 1092, /* s[] */
317  RPMTAG_DOCDIR = 1093, /* internal */
318  RPMTAG_COOKIE = 1094, /* s */
319  RPMTAG_FILEDEVICES = 1095, /* i[] */
320  RPMTAG_FILEINODES = 1096, /* i[] */
321  RPMTAG_FILELANGS = 1097, /* s[] */
322  RPMTAG_PREFIXES = 1098, /* s[] */
323  RPMTAG_INSTPREFIXES = 1099, /* s[] */
324  RPMTAG_TRIGGERIN = 1100, /* internal */
325  RPMTAG_TRIGGERUN = 1101, /* internal */
326  RPMTAG_TRIGGERPOSTUN = 1102, /* internal */
327  RPMTAG_AUTOREQ = 1103, /* internal */
328  RPMTAG_AUTOPROV = 1104, /* internal */
329 /*@-enummemuse@*/
330  RPMTAG_CAPABILITY = 1105, /* i legacy - obsolete */
331 /*@=enummemuse@*/
332  RPMTAG_SOURCEPACKAGE = 1106, /* i legacy - obsolete */
333 /*@-enummemuse@*/
334  RPMTAG_OLDORIGFILENAMES = 1107, /* internal - obsolete */
335 /*@=enummemuse@*/
336  RPMTAG_BUILDPREREQ = 1108, /* internal */
337  RPMTAG_BUILDREQUIRES = 1109, /* internal */
338  RPMTAG_BUILDCONFLICTS = 1110, /* internal */
339 /*@-enummemuse@*/
340  RPMTAG_BUILDMACROS = 1111, /* internal - unused */
341 /*@=enummemuse@*/
342  RPMTAG_PROVIDEFLAGS = 1112, /* i[] */
343  RPMTAG_PROVIDEVERSION = 1113, /* s[] */
344  RPMTAG_OBSOLETEFLAGS = 1114, /* i[] */
345  RPMTAG_OBSOLETEVERSION = 1115, /* s[] */
346  RPMTAG_DIRINDEXES = 1116, /* i[] */
347  RPMTAG_BASENAMES = 1117, /* s[] */
348  RPMTAG_DIRNAMES = 1118, /* s[] */
349  RPMTAG_ORIGDIRINDEXES = 1119, /* i[] relocation */
350  RPMTAG_ORIGBASENAMES = 1120, /* s[] relocation */
351  RPMTAG_ORIGDIRNAMES = 1121, /* s[] relocation */
352  RPMTAG_OPTFLAGS = 1122, /* s */
353  RPMTAG_DISTURL = 1123, /* s */
354  RPMTAG_PAYLOADFORMAT = 1124, /* s */
355  RPMTAG_PAYLOADCOMPRESSOR = 1125, /* s */
356  RPMTAG_PAYLOADFLAGS = 1126, /* s */
357  RPMTAG_INSTALLCOLOR = 1127, /* i transaction color when installed */
358  RPMTAG_INSTALLTID = 1128, /* i */
359  RPMTAG_REMOVETID = 1129, /* i */
360 /*@-enummemuse@*/
361  RPMTAG_SHA1RHN = 1130, /* internal - obsolete */
362 /*@=enummemuse@*/
363  RPMTAG_RHNPLATFORM = 1131, /* s deprecated */
364  RPMTAG_PLATFORM = 1132, /* s */
365  RPMTAG_PATCHESNAME = 1133, /* s[] deprecated placeholder (SuSE) */
366  RPMTAG_PATCHESFLAGS = 1134, /* i[] deprecated placeholder (SuSE) */
367  RPMTAG_PATCHESVERSION = 1135, /* s[] deprecated placeholder (SuSE) */
368  RPMTAG_CACHECTIME = 1136, /* i */
369  RPMTAG_CACHEPKGPATH = 1137, /* s */
370  RPMTAG_CACHEPKGSIZE = 1138, /* i */
371  RPMTAG_CACHEPKGMTIME = 1139, /* i */
372  RPMTAG_FILECOLORS = 1140, /* i[] */
373  RPMTAG_FILECLASS = 1141, /* i[] */
374  RPMTAG_CLASSDICT = 1142, /* s[] */
375  RPMTAG_FILEDEPENDSX = 1143, /* i[] */
376  RPMTAG_FILEDEPENDSN = 1144, /* i[] */
377  RPMTAG_DEPENDSDICT = 1145, /* i[] */
378  RPMTAG_SOURCEPKGID = 1146, /* x */
379  RPMTAG_FILECONTEXTS = 1147, /* s[] */
380  RPMTAG_FSCONTEXTS = 1148, /* s[] extension */
381  RPMTAG_RECONTEXTS = 1149, /* s[] extension */
382  RPMTAG_POLICIES = 1150, /* s[] selinux *.te policy file. */
383  RPMTAG_PRETRANS = 1151, /* s */
384  RPMTAG_POSTTRANS = 1152, /* s */
385  RPMTAG_PRETRANSPROG = 1153, /* s */
386  RPMTAG_POSTTRANSPROG = 1154, /* s */
387  RPMTAG_DISTTAG = 1155, /* s */
388  RPMTAG_SUGGESTSNAME = 1156, /* s[] extension */
389 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] */
390  RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension */
391  RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension */
392  RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder */
393 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] */
394  RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder */
395  RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder */
396  RPMTAG_PRIORITY = 1162, /* i[] extension placeholder */
397  RPMTAG_CVSID = 1163, /* s */
398 #define RPMTAG_SVNID RPMTAG_CVSID /* s */
399  RPMTAG_BLINKPKGID = 1164, /* s[] */
400  RPMTAG_BLINKHDRID = 1165, /* s[] */
401  RPMTAG_BLINKNEVRA = 1166, /* s[] */
402  RPMTAG_FLINKPKGID = 1167, /* s[] */
403  RPMTAG_FLINKHDRID = 1168, /* s[] */
404  RPMTAG_FLINKNEVRA = 1169, /* s[] */
405  RPMTAG_PACKAGEORIGIN = 1170, /* s */
406  RPMTAG_TRIGGERPREIN = 1171, /* internal */
407  RPMTAG_BUILDSUGGESTS = 1172, /* internal */
408  RPMTAG_BUILDENHANCES = 1173, /* internal */
409  RPMTAG_SCRIPTSTATES = 1174, /* i[] scriptlet exit codes */
410  RPMTAG_SCRIPTMETRICS = 1175, /* i[] scriptlet execution times */
411  RPMTAG_BUILDCPUCLOCK = 1176, /* i */
412  RPMTAG_FILEDIGESTALGOS = 1177, /* i[] */
413  RPMTAG_VARIANTS = 1178, /* s[] */
414  RPMTAG_XMAJOR = 1179, /* i */
415  RPMTAG_XMINOR = 1180, /* i */
416  RPMTAG_REPOTAG = 1181, /* s */
417  RPMTAG_KEYWORDS = 1182, /* s[] */
418  RPMTAG_BUILDPLATFORMS = 1183, /* s[] */
419  RPMTAG_PACKAGECOLOR = 1184, /* i */
420  RPMTAG_PACKAGEPREFCOLOR = 1185, /* i (unimplemented) */
421  RPMTAG_XATTRSDICT = 1186, /* s[] (unimplemented) */
422  RPMTAG_FILEXATTRSX = 1187, /* i[] (unimplemented) */
423  RPMTAG_DEPATTRSDICT = 1188, /* s[] (unimplemented) */
424  RPMTAG_CONFLICTATTRSX = 1189, /* i[] (unimplemented) */
425  RPMTAG_OBSOLETEATTRSX = 1190, /* i[] (unimplemented) */
426  RPMTAG_PROVIDEATTRSX = 1191, /* i[] (unimplemented) */
427  RPMTAG_REQUIREATTRSX = 1192, /* i[] (unimplemented) */
428  RPMTAG_BUILDPROVIDES = 1193, /* internal */
429  RPMTAG_BUILDOBSOLETES = 1194, /* internal */
430  RPMTAG_DBINSTANCE = 1195, /* i */
431  RPMTAG_NVRA = 1196, /* s internal (unimplemented) */
432  RPMTAG_FILEPATHS = 1197, /* s[] internal (unimplemented) */
433  RPMTAG_ORIGPATHS = 1198, /* s[] internal (unimplemented) */
434  RPMTAG_RPMLIBVERSION = 1199, /* i internal (unimplemented) */
435  RPMTAG_RPMLIBTIMESTAMP = 1200, /* i internal (unimplemented) */
436  RPMTAG_RPMLIBVENDOR = 1201, /* i internal (unimplemented) */
437  RPMTAG_CLASS = 1202, /* s internal (unimplemented) */
438  RPMTAG_TRACK = 1203, /* s internal arbitrary */
439  RPMTAG_TRACKPROG = 1204, /* s internal arbitrary */
440  RPMTAG_SANITYCHECK = 1205, /* s internal (unimplemented) */
441  RPMTAG_SANITYCHECKPROG = 1206, /* s internal (unimplemented) */
442  RPMTAG_FILESTAT = 1207, /* s[] internal (unimplemented) */
443  RPMTAG_STAT = 1208, /* s[] internal (unimplemented) */
444  RPMTAG_ORIGINTID = 1209, /* i[] internal (unimplemented) */
445  RPMTAG_ORIGINTIME = 1210, /* i[] internal (unimplemented) */
446  RPMTAG_HEADERSTARTOFF = 1211, /* l */
447  RPMTAG_HEADERENDOFF = 1212, /* l */
448  RPMTAG_PACKAGETIME = 1213, /* l */
449  RPMTAG_PACKAGESIZE = 1214, /* l */
450  RPMTAG_PACKAGEDIGEST = 1215, /* s */
451  RPMTAG_PACKAGESTAT = 1216, /* x */
452  RPMTAG_PACKAGEBASEURL = 1217, /* s */
453 
454 /*@-enummemuse@*/
456 /*@=enummemuse@*/
457 
458  /* XXX retrofit arbitrary tags */
459 #define RPMTAG_Buildbuild 0x5bae1a5a /* s internal arbitrary */
460 #define RPMTAG_Buildbuildprog 0x6fb46014 /* s internal arbitrary */
461 #define RPMTAG_Buildcheck 0x7f3b97b5 /* s internal arbitrary */
462 #define RPMTAG_Buildcheckprog 0x488a60ce /* s internal arbitrary */
463 #define RPMTAG_Buildclean 0x566042bf /* s internal arbitrary */
464 #define RPMTAG_Buildcleanprog 0x42c93d41 /* s internal arbitrary */
465 #define RPMTAG_Buildinstall 0x567f5983 /* s internal arbitrary */
466 #define RPMTAG_Buildinstallprog 0x70d4ab6f /* s internal arbitrary */
467 #define RPMTAG_Buildprep 0x799c0b4d /* s internal arbitrary */
468 #define RPMTAG_Buildprepprog 0x4ba37c9e /* s internal arbitrary */
469 #define RPMTAG_Buildtimeuuid 0x782eeb68 /* s internal arbitrary */
470 #define RPMTAG_Conflictsqlentry 0x7efaed0d /* s internal arbitrary */
471 #define RPMTAG_Conflictxmlentry 0x61333865 /* s internal arbitrary */
472 #define RPMTAG_Filenames 0x54aafb71 /* s internal arbitrary */
473 #define RPMTAG_Filessqlentry1 0x4493df20 /* s internal arbitrary */
474 #define RPMTAG_Filessqlentry2 0x515aae25 /* s internal arbitrary */
475 #define RPMTAG_Filesxmlentry1 0x42974275 /* s internal arbitrary */
476 #define RPMTAG_Filesxmlentry2 0x7f69e738 /* s internal arbitrary */
477 #define RPMTAG_Hdruuid 0x42cba9cf /* s internal arbitrary */
478 #define RPMTAG_Installprefix 0x67b450ec /* s internal arbitrary */
479 #define RPMTAG_Installtiduuid 0x59784ccd /* s internal arbitrary */
480 #define RPMTAG_Installtimeuuid 0x51b2ff6a /* s internal arbitrary */
481 #define RPMTAG_Obsoletesqlentry 0x4e0e61b0 /* s internal arbitrary */
482 #define RPMTAG_Obsoletexmlentry 0x5a7ce878 /* s internal arbitrary */
483 #define RPMTAG_Origintiduuid 0x5fde8cfd /* s internal arbitrary */
484 #define RPMTAG_Origintimeuuid 0x66bb891b /* s internal arbitrary */
485 #define RPMTAG_Pkguuid 0x44703c2c /* s internal arbitrary */
486 #define RPMTAG_Providesqlentry 0x599f1b4a /* s internal arbitrary */
487 #define RPMTAG_Providexmlentry 0x6569bce6 /* s internal arbitrary */
488 #define RPMTAG_Removetiduuid 0x6a884e83 /* s internal arbitrary */
489 #define RPMTAG_Requiresqlentry 0x723158aa /* s internal arbitrary */
490 #define RPMTAG_Requirexmlentry 0x54b25cd7 /* s internal arbitrary */
491 #define RPMTAG_Sourcepkguuid 0x4eedc6f9 /* s internal arbitrary */
492 #define RPMTAG_Trackprog 0x46c39442 /* s internal arbitrary */
493 #define RPMTAG_Triggerconds 0x46ced1cc /* s internal arbitrary */
494 #define RPMTAG_Triggertype 0x562d6086 /* s internal arbitrary */
495 
496 } rpmTag;
497 
498 #define RPMTAG_EXTERNAL_TAG 1000000
499 
503 typedef enum rpmScriptID_e {
515  /* 11-15 unused */
518 } rpmScriptID;
519 
523 typedef enum rpmScriptState_e {
525  /* 0-15 reserved for waitpid return. */
526  RPMSCRIPT_STATE_EXEC = (1 << 16),
528  /* 18-23 unused */
531  RPMSCRIPT_STATE_LUA = (1 << 26)
533 
537 typedef enum rpmfileState_e {
543 } rpmfileState;
544 #define RPMFILE_STATE_MISSING -1 /* XXX used for unavailable data */
545 
549 typedef enum rpmfileAttrs_e {
550 /*@-enummemuse@*/
552 /*@=enummemuse@*/
553  RPMFILE_CONFIG = (1 << 0),
554  RPMFILE_DOC = (1 << 1),
555  RPMFILE_ICON = (1 << 2),
556  RPMFILE_MISSINGOK = (1 << 3),
557  RPMFILE_NOREPLACE = (1 << 4),
558  RPMFILE_SPECFILE = (1 << 5),
559  RPMFILE_GHOST = (1 << 6),
560  RPMFILE_LICENSE = (1 << 7),
561  RPMFILE_README = (1 << 8),
562  RPMFILE_EXCLUDE = (1 << 9),
563  RPMFILE_UNPATCHED = (1 << 10),
564  RPMFILE_PUBKEY = (1 << 11),
565  RPMFILE_POLICY = (1 << 12),
566  RPMFILE_EXISTS = (1 << 13),
567  RPMFILE_SPARSE = (1 << 14),
568  RPMFILE_TYPED = (1 << 15),
569  RPMFILE_SOURCE = (1 << 16),
570  RPMFILE_PATCH = (1 << 17)
571 } rpmfileAttrs;
572 
573 #define RPMFILE_SPOOK (RPMFILE_GHOST|RPMFILE_TYPED)
574 #define RPMFILE_ALL ~(RPMFILE_NONE)
575 
576 /* ==================================================================== */
579 
589 };
590 #define RPM_MACHTABLE_COUNT 4
596 /*@observer@*/ /*@checked@*/
597 extern const char *rpmRcfiles;
598 
605 int rpmReadConfigFiles(/*@null@*/ const char * file,
606  /*@null@*/ const char * target)
607  /*@globals rpmRcfiles,
608  rpmGlobalMacroContext, rpmCLIMacroContext, h_errno,
609  fileSystem, internalState @*/
610  /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
611  fileSystem, internalState @*/;
612 
620 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
621  /*@null@*/ /*@out@*/ int * num)
622  /*@modifies *name, *num @*/;
623 
631 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
632  /*@null@*/ /*@out@*/ int * num)
633  /*@modifies *name, *num @*/;
634 
648 int rpmMachineScore(int type, const char * name)
649  /*@*/;
650 
651 /*@only@*/ /*@null@*/ /*@unchecked@*/
652 extern void * platpat;
653 /*@unchecked@*/
654 extern int nplatpat;
655 
667 int rpmPlatformScore(const char * platform, /*@null@*/ void * mi_re, int mi_nre)
668  /*@modifies mi_re @*/;
669 
675 int rpmShowRC(FILE * fp)
676  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
677  /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState @*/;
678 
686 void rpmSetTables(int archTable, int osTable)
687  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
688  /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
689 
700 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
701  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
702  /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
703 
708 void rpmFreeRpmrc(void)
709  /*@globals platpat, nplatpat, internalState @*/
710  /*@modifies platpat, nplatpat, internalState @*/;
711 
713 /* ==================================================================== */
716 
720 typedef enum rpmprobFilterFlags_e {
732 
737 #if !defined(SWIG)
739 /*@only@*/ /*@null@*/
740  const char * oldPath;
741 /*@only@*/ /*@null@*/
742  const char * newPath;
743 };
744 #endif
745 
753 int rpmVersionCompare(Header first, Header second)
754  /*@*/;
755 
759 typedef enum fileAction_e {
772 } fileAction;
773 
774 #define XFA_SKIPPING(_a) \
775  ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
776 
784 typedef enum fileTypes_e {
785  PIPE = 1,
786  CDEV = 2,
787  XDIR = 4,
788  BDEV = 6,
789  REG = 8,
790  LINK = 10,
791  SOCK = 12
792 } fileTypes;
793 
797 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
798 
802 typedef /*@abstract@*/ struct fsm_s * FSM_t;
803 
807 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
808 
818 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
819  /*@modifies *iv @*/;
820 
834 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
835  /*@out@*/ /*@null@*/ const char ** msg)
836  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
837  /*@modifies ts, *msg, rpmGlobalMacroContext,
838  fileSystem, internalState @*/;
839 
848 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
849  /*@out@*/ /*@null@*/ const char ** msg)
850  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
851  /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
852  fileSystem, internalState @*/;
853 
863  const char * fn, /*@null@*/ /*@out@*/ Header * hdrp)
864  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
865  /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext,
866  fileSystem, internalState @*/;
867 
877  /*@null@*/ /*@out@*/ const char ** specFilePtr,
878  /*@null@*/ /*@out@*/ const char ** cookie)
879  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
880  /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext,
881  fileSystem, internalState @*/;
882 
887 typedef enum rpmdepFlags_e {
899 } rpmdepFlags;
900 
905 typedef enum rpmtransFlags_e {
907  RPMTRANS_FLAG_TEST = (1 << 0),
910  RPMTRANS_FLAG_JUSTDB = (1 << 3),
912  RPMTRANS_FLAG_NODOCS = (1 << 5),
914 /*@-enummemuse@*/
916 /*@=enummemuse@*/
922 /*@-enummemuse@*/
924 /*@=enummemuse@*/
925  RPMTRANS_FLAG_COMMIT = (1 << 13),
926 /*@-enummemuse@*/
927  RPMTRANS_FLAG_UNDO = (1 << 14),
928 /*@=enummemuse@*/
929  /* 15 unused */
930 
932  RPMTRANS_FLAG_NOPRE = (1 << 17),
933  RPMTRANS_FLAG_NOPOST = (1 << 18),
936  RPMTRANS_FLAG_NOPREUN = (1 << 21),
939 /*@-enummemuse@*/
941 /*@=enummemuse@*/
943 
944  /* 26 unused */
946  /* 28-29 unused */
948  /* 31 unused */
949 } rpmtransFlags;
950 
951 #define _noTransScripts \
952  ( RPMTRANS_FLAG_NOPRE | \
953  RPMTRANS_FLAG_NOPOST | \
954  RPMTRANS_FLAG_NOPREUN | \
955  RPMTRANS_FLAG_NOPOSTUN \
956  )
957 
958 #define _noTransTriggers \
959  ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
960  RPMTRANS_FLAG_NOTRIGGERIN | \
961  RPMTRANS_FLAG_NOTRIGGERUN | \
962  RPMTRANS_FLAG_NOTRIGGERPOSTUN \
963  )
964 
967 #if !defined(SWIG)
968 
973 /*@-redecl@*/
974 /*@unused@*/ static inline /*@observer@*/
975 const char * tagName(int tag)
976  /*@*/
977 {
978 /*@-type@*/
979  return ((*rpmTags->tagName)(tag));
980 /*@=type@*/
981 }
982 /*@=redecl@*/
983 
989 /*@unused@*/ static inline
990 int tagType(int tag)
991  /*@*/
992 {
993 /*@-type@*/
994  return ((*rpmTags->tagType)(tag));
995 /*@=type@*/
996 }
997 
1003 /*@unused@*/ static inline
1004 int tagValue(const char * tagstr)
1005  /*@*/
1006 {
1007 /*@-type@*/
1008  return ((*rpmTags->tagValue)(tagstr));
1009 /*@=type@*/
1010 }
1011 #endif
1012 
1013 #define RPMLEAD_BINARY 0
1014 #define RPMLEAD_SOURCE 1
1015 
1016 #define RPMLEAD_MAGIC0 0xed
1017 #define RPMLEAD_MAGIC1 0xab
1018 #define RPMLEAD_MAGIC2 0xee
1019 #define RPMLEAD_MAGIC3 0xdb
1020 
1021 #define RPMLEAD_SIZE 96
1029 struct rpmlead {
1030  unsigned char magic[4];
1031  unsigned char major;
1032  unsigned char minor;
1033  short type;
1034  short archnum;
1035  char name[66];
1036  short osnum;
1038 /*@unused@*/ char reserved[16];
1039 } ;
1040 
1041 /* ==================================================================== */
1044 
1051  RPMSIGTAG_PGP = 1002,
1053  RPMSIGTAG_MD5 = 1004,
1054  RPMSIGTAG_GPG = 1005,
1062  RPMSIGTAG_PADDING = 0x3fffffff
1063 };
1064 
1078 rpmRC rpmVerifySignature(const rpmts ts,
1079  /*@out@*/ char * result)
1080  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
1081  /*@modifies ts, *result, rpmGlobalMacroContext,
1082  fileSystem, internalState @*/;
1083 
1089 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header sigh)
1090  /*@modifies sigh @*/;
1091 
1094 #ifdef __cplusplus
1095 }
1096 #endif
1097 
1098 #endif /* H_RPMLIB */