rpm
4.5
|
00001 #ifndef H_RPMLIB 00002 #define H_RPMLIB 00003 00011 #include "rpmio.h" 00012 #include "rpmmessages.h" 00013 #include "rpmerr.h" 00014 #include "header.h" 00015 #include "popt.h" 00016 00017 #define RPM_FORMAT_VERSION 4 00018 #define RPM_MAJOR_VERSION 5 00019 #define RPM_MINOR_VERSION 0 00020 00024 typedef enum rpmRC_e { 00025 RPMRC_OK = 0, 00026 RPMRC_NOTFOUND = 1, 00027 RPMRC_FAIL = 2, 00028 RPMRC_NOTTRUSTED = 3, 00029 RPMRC_NOKEY = 4 00030 } rpmRC; 00031 00032 /*@-redecl@*/ 00033 /*@checked@*/ 00034 extern struct MacroContext_s * rpmGlobalMacroContext; 00035 00036 /*@checked@*/ 00037 extern struct MacroContext_s * rpmCLIMacroContext; 00038 00039 /*@unchecked@*/ /*@observer@*/ 00040 extern const char * RPMVERSION; 00041 00042 /*@unchecked@*/ /*@observer@*/ 00043 extern const char * rpmNAME; 00044 00045 /*@unchecked@*/ /*@observer@*/ 00046 extern const char * rpmEVR; 00047 00048 /*@unchecked@*/ 00049 extern int rpmFLAGS; 00050 /*@=redecl@*/ 00051 00052 #ifdef __cplusplus 00053 extern "C" { 00054 #endif 00055 00062 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmts_s * rpmts; 00063 00066 typedef struct Spec_s * Spec; 00067 00071 typedef /*@abstract@*/ void * alKey; 00072 #define RPMAL_NOMATCH ((alKey)-1L) 00073 00077 /*@-mutrep@*/ 00078 typedef /*@abstract@*/ int alNum; 00079 /*@=mutrep@*/ 00080 00084 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmds_s * rpmds; 00085 00089 typedef struct rpmPRCO_s * rpmPRCO; 00090 00094 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi; 00095 00099 typedef /*@abstract@*/ struct rpmte_s * rpmte; 00100 00104 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb; 00105 00109 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator; 00110 00114 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi; 00115 00122 void headerMergeLegacySigs(Header h, const Header sigh) 00123 /*@modifies h, sigh @*/; 00124 00132 Header headerRegenSigHeader(const Header h, int noArchiveSize) 00133 /*@modifies h @*/; 00134 00138 /*@-redecl@*/ 00139 /*@observer@*/ /*@unchecked@*/ 00140 extern const struct headerTagTableEntry_s * rpmTagTable; 00141 /*@=redecl@*/ 00142 00146 /*@-redecl@*/ 00147 /*@unchecked@*/ 00148 extern const int rpmTagTableSize; 00149 /*@=redecl@*/ 00150 00151 /*@unchecked@*/ 00152 extern headerTagIndices rpmTags; 00153 00158 /*@-redecl@*/ 00159 /*@unchecked@*/ 00160 extern const struct headerSprintfExtension_s rpmHeaderFormats[]; 00161 /*@=redecl@*/ 00162 00166 #define RPMDBI_PACKAGES 0 /* Installed package headers. */ 00167 #define RPMDBI_DEPENDS 1 /* Dependency resolution cache. */ 00168 #define RPMDBI_LABEL 2 /* Fingerprint search marker. */ 00169 #define RPMDBI_ADDED 3 /* Added package headers. */ 00170 #define RPMDBI_REMOVED 4 /* Removed package headers. */ 00171 #define RPMDBI_AVAILABLE 5 /* Available package headers. */ 00172 #define RPMDBI_HDLIST 6 /* (rpmgi) Header list. */ 00173 #define RPMDBI_ARGLIST 7 /* (rpmgi) Argument list. */ 00174 #define RPMDBI_FTSWALK 8 /* (rpmgi) File tree walk. */ 00175 00181 typedef enum rpmTag_e { 00182 00183 RPMTAG_HEADERIMAGE = HEADER_IMAGE, 00184 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES, 00185 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE, 00186 /*@-enummemuse@*/ 00187 RPMTAG_HEADERREGIONS = HEADER_REGIONS, 00189 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE, 00190 /*@=enummemuse@*/ 00191 00192 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */ 00193 /* the md5 sum was broken *twice* on big endian machines */ 00194 /* XXX 2nd underscore prevents tagTable generation */ 00195 RPMTAG_SIG_BASE = HEADER_SIGBASE, 00196 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1, /* i */ 00197 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2, /* internal - obsolete */ 00198 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3, /* x */ 00199 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4, /* x internal - obsolete */ 00200 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5, /* x */ 00201 #define RPMTAG_PKGID RPMTAG_SIGMD5 /* x */ 00202 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6, /* x */ 00203 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7, /* internal - obsolete */ 00204 00205 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8, /* internal - obsolete */ 00206 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9, /* internal - obsolete */ 00207 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10, /* s[] */ 00208 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11, /* x */ 00209 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12, /* x */ 00210 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13, /* s */ 00211 #define RPMTAG_HDRID RPMTAG_SHA1HEADER /* s */ 00212 00213 RPMTAG_NAME = 1000, /* s */ 00214 #define RPMTAG_N RPMTAG_NAME /* s */ 00215 RPMTAG_VERSION = 1001, /* s */ 00216 #define RPMTAG_V RPMTAG_VERSION /* s */ 00217 RPMTAG_RELEASE = 1002, /* s */ 00218 #define RPMTAG_R RPMTAG_RELEASE /* s */ 00219 RPMTAG_EPOCH = 1003, /* i */ 00220 #define RPMTAG_E RPMTAG_EPOCH /* i */ 00221 RPMTAG_SUMMARY = 1004, /* s{} */ 00222 RPMTAG_DESCRIPTION = 1005, /* s{} */ 00223 RPMTAG_BUILDTIME = 1006, /* i */ 00224 RPMTAG_BUILDHOST = 1007, /* s */ 00225 RPMTAG_INSTALLTIME = 1008, /* i */ 00226 RPMTAG_SIZE = 1009, /* i */ 00227 RPMTAG_DISTRIBUTION = 1010, /* s */ 00228 RPMTAG_VENDOR = 1011, /* s */ 00229 RPMTAG_GIF = 1012, /* x */ 00230 RPMTAG_XPM = 1013, /* x */ 00231 RPMTAG_LICENSE = 1014, /* s */ 00232 RPMTAG_PACKAGER = 1015, /* s */ 00233 RPMTAG_GROUP = 1016, /* s{} */ 00234 /*@-enummemuse@*/ 00235 RPMTAG_CHANGELOG = 1017, /* s[] internal */ 00236 /*@=enummemuse@*/ 00237 RPMTAG_SOURCE = 1018, /* s[] */ 00238 RPMTAG_PATCH = 1019, /* s[] */ 00239 RPMTAG_URL = 1020, /* s */ 00240 RPMTAG_OS = 1021, /* s legacy used int */ 00241 RPMTAG_ARCH = 1022, /* s legacy used int */ 00242 RPMTAG_PREIN = 1023, /* s */ 00243 RPMTAG_POSTIN = 1024, /* s */ 00244 RPMTAG_PREUN = 1025, /* s */ 00245 RPMTAG_POSTUN = 1026, /* s */ 00246 RPMTAG_OLDFILENAMES = 1027, /* s[] obsolete */ 00247 RPMTAG_FILESIZES = 1028, /* i[] */ 00248 RPMTAG_FILESTATES = 1029, /* c[] */ 00249 RPMTAG_FILEMODES = 1030, /* h[] */ 00250 RPMTAG_FILEUIDS = 1031, /* i[] internal */ 00251 RPMTAG_FILEGIDS = 1032, /* i[] internal */ 00252 RPMTAG_FILERDEVS = 1033, /* h[] */ 00253 RPMTAG_FILEMTIMES = 1034, /* i[] */ 00254 RPMTAG_FILEDIGESTS = 1035, /* s[] */ 00255 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */ 00256 RPMTAG_FILELINKTOS = 1036, /* s[] */ 00257 RPMTAG_FILEFLAGS = 1037, /* i[] */ 00258 /*@-enummemuse@*/ 00259 RPMTAG_ROOT = 1038, /* internal - obsolete */ 00260 /*@=enummemuse@*/ 00261 RPMTAG_FILEUSERNAME = 1039, /* s[] */ 00262 RPMTAG_FILEGROUPNAME = 1040, /* s[] */ 00263 /*@-enummemuse@*/ 00264 RPMTAG_EXCLUDE = 1041, /* internal - obsolete */ 00265 RPMTAG_EXCLUSIVE = 1042, /* internal - obsolete */ 00266 /*@=enummemuse@*/ 00267 RPMTAG_ICON = 1043, /* x */ 00268 RPMTAG_SOURCERPM = 1044, /* s */ 00269 RPMTAG_FILEVERIFYFLAGS = 1045, /* i[] */ 00270 RPMTAG_ARCHIVESIZE = 1046, /* i */ 00271 RPMTAG_PROVIDENAME = 1047, /* s[] */ 00272 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME /* s[] */ 00273 #define RPMTAG_P RPMTAG_PROVIDENAME /* s[] */ 00274 RPMTAG_REQUIREFLAGS = 1048, /* i[] */ 00275 RPMTAG_REQUIRENAME = 1049, /* s[] */ 00276 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME /* s[] */ 00277 RPMTAG_REQUIREVERSION = 1050, /* s[] */ 00278 RPMTAG_NOSOURCE = 1051, /* i internal */ 00279 RPMTAG_NOPATCH = 1052, /* i internal */ 00280 RPMTAG_CONFLICTFLAGS = 1053, /* i[] */ 00281 RPMTAG_CONFLICTNAME = 1054, /* s[] */ 00282 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME /* s[] */ 00283 #define RPMTAG_C RPMTAG_CONFLICTNAME /* s[] */ 00284 RPMTAG_CONFLICTVERSION = 1055, /* s[] */ 00285 RPMTAG_DEFAULTPREFIX = 1056, /* s internal - deprecated */ 00286 RPMTAG_BUILDROOT = 1057, /* s internal */ 00287 RPMTAG_INSTALLPREFIX = 1058, /* s internal - deprecated */ 00288 RPMTAG_EXCLUDEARCH = 1059, /* s[] */ 00289 RPMTAG_EXCLUDEOS = 1060, /* s[] */ 00290 RPMTAG_EXCLUSIVEARCH = 1061, /* s[] */ 00291 RPMTAG_EXCLUSIVEOS = 1062, /* s[] */ 00292 RPMTAG_AUTOREQPROV = 1063, /* s internal */ 00293 RPMTAG_RPMVERSION = 1064, /* s */ 00294 RPMTAG_TRIGGERSCRIPTS = 1065, /* s[] */ 00295 RPMTAG_TRIGGERNAME = 1066, /* s[] */ 00296 RPMTAG_TRIGGERVERSION = 1067, /* s[] */ 00297 RPMTAG_TRIGGERFLAGS = 1068, /* i[] */ 00298 RPMTAG_TRIGGERINDEX = 1069, /* i[] */ 00299 RPMTAG_VERIFYSCRIPT = 1079, /* s */ 00300 RPMTAG_CHANGELOGTIME = 1080, /* i[] */ 00301 RPMTAG_CHANGELOGNAME = 1081, /* s[] */ 00302 RPMTAG_CHANGELOGTEXT = 1082, /* s[] */ 00303 /*@-enummemuse@*/ 00304 RPMTAG_BROKENMD5 = 1083, /* internal - obsolete */ 00305 /*@=enummemuse@*/ 00306 RPMTAG_PREREQ = 1084, /* internal */ 00307 RPMTAG_PREINPROG = 1085, /* s */ 00308 RPMTAG_POSTINPROG = 1086, /* s */ 00309 RPMTAG_PREUNPROG = 1087, /* s */ 00310 RPMTAG_POSTUNPROG = 1088, /* s */ 00311 RPMTAG_BUILDARCHS = 1089, /* s[] */ 00312 RPMTAG_OBSOLETENAME = 1090, /* s[] */ 00313 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME /* s[] */ 00314 #define RPMTAG_O RPMTAG_OBSOLETENAME /* s[] */ 00315 RPMTAG_VERIFYSCRIPTPROG = 1091, /* s */ 00316 RPMTAG_TRIGGERSCRIPTPROG = 1092, /* s[] */ 00317 RPMTAG_DOCDIR = 1093, /* internal */ 00318 RPMTAG_COOKIE = 1094, /* s */ 00319 RPMTAG_FILEDEVICES = 1095, /* i[] */ 00320 RPMTAG_FILEINODES = 1096, /* i[] */ 00321 RPMTAG_FILELANGS = 1097, /* s[] */ 00322 RPMTAG_PREFIXES = 1098, /* s[] */ 00323 RPMTAG_INSTPREFIXES = 1099, /* s[] */ 00324 RPMTAG_TRIGGERIN = 1100, /* internal */ 00325 RPMTAG_TRIGGERUN = 1101, /* internal */ 00326 RPMTAG_TRIGGERPOSTUN = 1102, /* internal */ 00327 RPMTAG_AUTOREQ = 1103, /* internal */ 00328 RPMTAG_AUTOPROV = 1104, /* internal */ 00329 /*@-enummemuse@*/ 00330 RPMTAG_CAPABILITY = 1105, /* i legacy - obsolete */ 00331 /*@=enummemuse@*/ 00332 RPMTAG_SOURCEPACKAGE = 1106, /* i legacy - obsolete */ 00333 /*@-enummemuse@*/ 00334 RPMTAG_OLDORIGFILENAMES = 1107, /* internal - obsolete */ 00335 /*@=enummemuse@*/ 00336 RPMTAG_BUILDPREREQ = 1108, /* internal */ 00337 RPMTAG_BUILDREQUIRES = 1109, /* internal */ 00338 RPMTAG_BUILDCONFLICTS = 1110, /* internal */ 00339 /*@-enummemuse@*/ 00340 RPMTAG_BUILDMACROS = 1111, /* internal - unused */ 00341 /*@=enummemuse@*/ 00342 RPMTAG_PROVIDEFLAGS = 1112, /* i[] */ 00343 RPMTAG_PROVIDEVERSION = 1113, /* s[] */ 00344 RPMTAG_OBSOLETEFLAGS = 1114, /* i[] */ 00345 RPMTAG_OBSOLETEVERSION = 1115, /* s[] */ 00346 RPMTAG_DIRINDEXES = 1116, /* i[] */ 00347 RPMTAG_BASENAMES = 1117, /* s[] */ 00348 RPMTAG_DIRNAMES = 1118, /* s[] */ 00349 RPMTAG_ORIGDIRINDEXES = 1119, /* i[] relocation */ 00350 RPMTAG_ORIGBASENAMES = 1120, /* s[] relocation */ 00351 RPMTAG_ORIGDIRNAMES = 1121, /* s[] relocation */ 00352 RPMTAG_OPTFLAGS = 1122, /* s */ 00353 RPMTAG_DISTURL = 1123, /* s */ 00354 RPMTAG_PAYLOADFORMAT = 1124, /* s */ 00355 RPMTAG_PAYLOADCOMPRESSOR = 1125, /* s */ 00356 RPMTAG_PAYLOADFLAGS = 1126, /* s */ 00357 RPMTAG_INSTALLCOLOR = 1127, /* i transaction color when installed */ 00358 RPMTAG_INSTALLTID = 1128, /* i */ 00359 RPMTAG_REMOVETID = 1129, /* i */ 00360 /*@-enummemuse@*/ 00361 RPMTAG_SHA1RHN = 1130, /* internal - obsolete */ 00362 /*@=enummemuse@*/ 00363 RPMTAG_RHNPLATFORM = 1131, /* s deprecated */ 00364 RPMTAG_PLATFORM = 1132, /* s */ 00365 RPMTAG_PATCHESNAME = 1133, /* s[] deprecated placeholder (SuSE) */ 00366 RPMTAG_PATCHESFLAGS = 1134, /* i[] deprecated placeholder (SuSE) */ 00367 RPMTAG_PATCHESVERSION = 1135, /* s[] deprecated placeholder (SuSE) */ 00368 RPMTAG_CACHECTIME = 1136, /* i */ 00369 RPMTAG_CACHEPKGPATH = 1137, /* s */ 00370 RPMTAG_CACHEPKGSIZE = 1138, /* i */ 00371 RPMTAG_CACHEPKGMTIME = 1139, /* i */ 00372 RPMTAG_FILECOLORS = 1140, /* i[] */ 00373 RPMTAG_FILECLASS = 1141, /* i[] */ 00374 RPMTAG_CLASSDICT = 1142, /* s[] */ 00375 RPMTAG_FILEDEPENDSX = 1143, /* i[] */ 00376 RPMTAG_FILEDEPENDSN = 1144, /* i[] */ 00377 RPMTAG_DEPENDSDICT = 1145, /* i[] */ 00378 RPMTAG_SOURCEPKGID = 1146, /* x */ 00379 RPMTAG_FILECONTEXTS = 1147, /* s[] */ 00380 RPMTAG_FSCONTEXTS = 1148, /* s[] extension */ 00381 RPMTAG_RECONTEXTS = 1149, /* s[] extension */ 00382 RPMTAG_POLICIES = 1150, /* s[] selinux *.te policy file. */ 00383 RPMTAG_PRETRANS = 1151, /* s */ 00384 RPMTAG_POSTTRANS = 1152, /* s */ 00385 RPMTAG_PRETRANSPROG = 1153, /* s */ 00386 RPMTAG_POSTTRANSPROG = 1154, /* s */ 00387 RPMTAG_DISTTAG = 1155, /* s */ 00388 RPMTAG_SUGGESTSNAME = 1156, /* s[] extension */ 00389 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] */ 00390 RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension */ 00391 RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension */ 00392 RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder */ 00393 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] */ 00394 RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder */ 00395 RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder */ 00396 RPMTAG_PRIORITY = 1162, /* i[] extension placeholder */ 00397 RPMTAG_CVSID = 1163, /* s */ 00398 #define RPMTAG_SVNID RPMTAG_CVSID /* s */ 00399 RPMTAG_BLINKPKGID = 1164, /* s[] */ 00400 RPMTAG_BLINKHDRID = 1165, /* s[] */ 00401 RPMTAG_BLINKNEVRA = 1166, /* s[] */ 00402 RPMTAG_FLINKPKGID = 1167, /* s[] */ 00403 RPMTAG_FLINKHDRID = 1168, /* s[] */ 00404 RPMTAG_FLINKNEVRA = 1169, /* s[] */ 00405 RPMTAG_PACKAGEORIGIN = 1170, /* s */ 00406 RPMTAG_TRIGGERPREIN = 1171, /* internal */ 00407 RPMTAG_BUILDSUGGESTS = 1172, /* internal */ 00408 RPMTAG_BUILDENHANCES = 1173, /* internal */ 00409 RPMTAG_SCRIPTSTATES = 1174, /* i[] scriptlet exit codes */ 00410 RPMTAG_SCRIPTMETRICS = 1175, /* i[] scriptlet execution times */ 00411 RPMTAG_BUILDCPUCLOCK = 1176, /* i */ 00412 RPMTAG_FILEDIGESTALGOS = 1177, /* i[] */ 00413 RPMTAG_VARIANTS = 1178, /* s[] */ 00414 RPMTAG_XMAJOR = 1179, /* i */ 00415 RPMTAG_XMINOR = 1180, /* i */ 00416 RPMTAG_REPOTAG = 1181, /* s */ 00417 RPMTAG_KEYWORDS = 1182, /* s[] */ 00418 RPMTAG_BUILDPLATFORMS = 1183, /* s[] */ 00419 RPMTAG_PACKAGECOLOR = 1184, /* i */ 00420 RPMTAG_PACKAGEPREFCOLOR = 1185, /* i (unimplemented) */ 00421 RPMTAG_XATTRSDICT = 1186, /* s[] (unimplemented) */ 00422 RPMTAG_FILEXATTRSX = 1187, /* i[] (unimplemented) */ 00423 RPMTAG_DEPATTRSDICT = 1188, /* s[] (unimplemented) */ 00424 RPMTAG_CONFLICTATTRSX = 1189, /* i[] (unimplemented) */ 00425 RPMTAG_OBSOLETEATTRSX = 1190, /* i[] (unimplemented) */ 00426 RPMTAG_PROVIDEATTRSX = 1191, /* i[] (unimplemented) */ 00427 RPMTAG_REQUIREATTRSX = 1192, /* i[] (unimplemented) */ 00428 RPMTAG_BUILDPROVIDES = 1193, /* internal */ 00429 RPMTAG_BUILDOBSOLETES = 1194, /* internal */ 00430 RPMTAG_DBINSTANCE = 1195, /* i */ 00431 RPMTAG_NVRA = 1196, /* s internal (unimplemented) */ 00432 RPMTAG_FILEPATHS = 1197, /* s[] internal (unimplemented) */ 00433 RPMTAG_ORIGPATHS = 1198, /* s[] internal (unimplemented) */ 00434 RPMTAG_RPMLIBVERSION = 1199, /* i internal (unimplemented) */ 00435 RPMTAG_RPMLIBTIMESTAMP = 1200, /* i internal (unimplemented) */ 00436 RPMTAG_RPMLIBVENDOR = 1201, /* i internal (unimplemented) */ 00437 RPMTAG_CLASS = 1202, /* s internal (unimplemented) */ 00438 RPMTAG_TRACK = 1203, /* s internal arbitrary */ 00439 RPMTAG_TRACKPROG = 1204, /* s internal arbitrary */ 00440 RPMTAG_SANITYCHECK = 1205, /* s internal (unimplemented) */ 00441 RPMTAG_SANITYCHECKPROG = 1206, /* s internal (unimplemented) */ 00442 RPMTAG_FILESTAT = 1207, /* s[] internal (unimplemented) */ 00443 RPMTAG_STAT = 1208, /* s[] internal (unimplemented) */ 00444 RPMTAG_ORIGINTID = 1209, /* i[] internal (unimplemented) */ 00445 RPMTAG_ORIGINTIME = 1210, /* i[] internal (unimplemented) */ 00446 RPMTAG_HEADERSTARTOFF = 1211, /* l */ 00447 RPMTAG_HEADERENDOFF = 1212, /* l */ 00448 RPMTAG_PACKAGETIME = 1213, /* l */ 00449 RPMTAG_PACKAGESIZE = 1214, /* l */ 00450 RPMTAG_PACKAGEDIGEST = 1215, /* s */ 00451 RPMTAG_PACKAGESTAT = 1216, /* x */ 00452 RPMTAG_PACKAGEBASEURL = 1217, /* s */ 00453 00454 /*@-enummemuse@*/ 00455 RPMTAG_FIRSTFREE_TAG, 00456 /*@=enummemuse@*/ 00457 00458 /* XXX retrofit arbitrary tags */ 00459 #define RPMTAG_Buildbuild 0x5bae1a5a /* s internal arbitrary */ 00460 #define RPMTAG_Buildbuildprog 0x6fb46014 /* s internal arbitrary */ 00461 #define RPMTAG_Buildcheck 0x7f3b97b5 /* s internal arbitrary */ 00462 #define RPMTAG_Buildcheckprog 0x488a60ce /* s internal arbitrary */ 00463 #define RPMTAG_Buildclean 0x566042bf /* s internal arbitrary */ 00464 #define RPMTAG_Buildcleanprog 0x42c93d41 /* s internal arbitrary */ 00465 #define RPMTAG_Buildinstall 0x567f5983 /* s internal arbitrary */ 00466 #define RPMTAG_Buildinstallprog 0x70d4ab6f /* s internal arbitrary */ 00467 #define RPMTAG_Buildprep 0x799c0b4d /* s internal arbitrary */ 00468 #define RPMTAG_Buildprepprog 0x4ba37c9e /* s internal arbitrary */ 00469 #define RPMTAG_Buildtimeuuid 0x782eeb68 /* s internal arbitrary */ 00470 #define RPMTAG_Conflictsqlentry 0x7efaed0d /* s internal arbitrary */ 00471 #define RPMTAG_Conflictxmlentry 0x61333865 /* s internal arbitrary */ 00472 #define RPMTAG_Filenames 0x54aafb71 /* s internal arbitrary */ 00473 #define RPMTAG_Filessqlentry1 0x4493df20 /* s internal arbitrary */ 00474 #define RPMTAG_Filessqlentry2 0x515aae25 /* s internal arbitrary */ 00475 #define RPMTAG_Filesxmlentry1 0x42974275 /* s internal arbitrary */ 00476 #define RPMTAG_Filesxmlentry2 0x7f69e738 /* s internal arbitrary */ 00477 #define RPMTAG_Hdruuid 0x42cba9cf /* s internal arbitrary */ 00478 #define RPMTAG_Installprefix 0x67b450ec /* s internal arbitrary */ 00479 #define RPMTAG_Installtiduuid 0x59784ccd /* s internal arbitrary */ 00480 #define RPMTAG_Installtimeuuid 0x51b2ff6a /* s internal arbitrary */ 00481 #define RPMTAG_Obsoletesqlentry 0x4e0e61b0 /* s internal arbitrary */ 00482 #define RPMTAG_Obsoletexmlentry 0x5a7ce878 /* s internal arbitrary */ 00483 #define RPMTAG_Origintiduuid 0x5fde8cfd /* s internal arbitrary */ 00484 #define RPMTAG_Origintimeuuid 0x66bb891b /* s internal arbitrary */ 00485 #define RPMTAG_Pkguuid 0x44703c2c /* s internal arbitrary */ 00486 #define RPMTAG_Providesqlentry 0x599f1b4a /* s internal arbitrary */ 00487 #define RPMTAG_Providexmlentry 0x6569bce6 /* s internal arbitrary */ 00488 #define RPMTAG_Removetiduuid 0x6a884e83 /* s internal arbitrary */ 00489 #define RPMTAG_Requiresqlentry 0x723158aa /* s internal arbitrary */ 00490 #define RPMTAG_Requirexmlentry 0x54b25cd7 /* s internal arbitrary */ 00491 #define RPMTAG_Sourcepkguuid 0x4eedc6f9 /* s internal arbitrary */ 00492 #define RPMTAG_Trackprog 0x46c39442 /* s internal arbitrary */ 00493 #define RPMTAG_Triggerconds 0x46ced1cc /* s internal arbitrary */ 00494 #define RPMTAG_Triggertype 0x562d6086 /* s internal arbitrary */ 00495 00496 } rpmTag; 00497 00498 #define RPMTAG_EXTERNAL_TAG 1000000 00499 00503 typedef enum rpmScriptID_e { 00504 RPMSCRIPT_UNKNOWN = 0, 00505 RPMSCRIPT_PRETRANS = 1, 00506 RPMSCRIPT_TRIGGERPREIN = 2, 00507 RPMSCRIPT_PREIN = 3, 00508 RPMSCRIPT_POSTIN = 4, 00509 RPMSCRIPT_TRIGGERIN = 5, 00510 RPMSCRIPT_TRIGGERUN = 6, 00511 RPMSCRIPT_PREUN = 7, 00512 RPMSCRIPT_POSTUN = 8, 00513 RPMSCRIPT_TRIGGERPOSTUN = 9, 00514 RPMSCRIPT_POSTTRANS = 10, 00515 /* 11-15 unused */ 00516 RPMSCRIPT_VERIFY = 16, 00517 RPMSCRIPT_MAX = 32 00518 } rpmScriptID; 00519 00523 typedef enum rpmScriptState_e { 00524 RPMSCRIPT_STATE_UNKNOWN = 0, 00525 /* 0-15 reserved for waitpid return. */ 00526 RPMSCRIPT_STATE_EXEC = (1 << 16), 00527 RPMSCRIPT_STATE_REAPED = (1 << 17), 00528 /* 18-23 unused */ 00529 RPMSCRIPT_STATE_SELINUX = (1 << 24), 00530 RPMSCRIPT_STATE_EMULATOR = (1 << 25), 00531 RPMSCRIPT_STATE_LUA = (1 << 26) 00532 } rpmScriptState; 00533 00537 typedef enum rpmfileState_e { 00538 RPMFILE_STATE_NORMAL = 0, 00539 RPMFILE_STATE_REPLACED = 1, 00540 RPMFILE_STATE_NOTINSTALLED = 2, 00541 RPMFILE_STATE_NETSHARED = 3, 00542 RPMFILE_STATE_WRONGCOLOR = 4 00543 } rpmfileState; 00544 #define RPMFILE_STATE_MISSING -1 /* XXX used for unavailable data */ 00545 00549 typedef enum rpmfileAttrs_e { 00550 /*@-enummemuse@*/ 00551 RPMFILE_NONE = 0, 00552 /*@=enummemuse@*/ 00553 RPMFILE_CONFIG = (1 << 0), 00554 RPMFILE_DOC = (1 << 1), 00555 RPMFILE_ICON = (1 << 2), 00556 RPMFILE_MISSINGOK = (1 << 3), 00557 RPMFILE_NOREPLACE = (1 << 4), 00558 RPMFILE_SPECFILE = (1 << 5), 00559 RPMFILE_GHOST = (1 << 6), 00560 RPMFILE_LICENSE = (1 << 7), 00561 RPMFILE_README = (1 << 8), 00562 RPMFILE_EXCLUDE = (1 << 9), 00563 RPMFILE_UNPATCHED = (1 << 10), 00564 RPMFILE_PUBKEY = (1 << 11), 00565 RPMFILE_POLICY = (1 << 12), 00566 RPMFILE_EXISTS = (1 << 13), 00567 RPMFILE_SPARSE = (1 << 14), 00568 RPMFILE_TYPED = (1 << 15), 00569 RPMFILE_SOURCE = (1 << 16), 00570 RPMFILE_PATCH = (1 << 17) 00571 } rpmfileAttrs; 00572 00573 #define RPMFILE_SPOOK (RPMFILE_GHOST|RPMFILE_TYPED) 00574 #define RPMFILE_ALL ~(RPMFILE_NONE) 00575 00576 /* ==================================================================== */ 00579 00584 enum rpm_machtable_e { 00585 RPM_MACHTABLE_INSTARCH = 0, 00586 RPM_MACHTABLE_INSTOS = 1, 00587 RPM_MACHTABLE_BUILDARCH = 2, 00588 RPM_MACHTABLE_BUILDOS = 3 00589 }; 00590 #define RPM_MACHTABLE_COUNT 4 00596 /*@observer@*/ /*@checked@*/ 00597 extern const char *rpmRcfiles; 00598 00605 int rpmReadConfigFiles(/*@null@*/ const char * file, 00606 /*@null@*/ const char * target) 00607 /*@globals rpmRcfiles, 00608 rpmGlobalMacroContext, rpmCLIMacroContext, h_errno, 00609 fileSystem, internalState @*/ 00610 /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext, 00611 fileSystem, internalState @*/; 00612 00620 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name, 00621 /*@null@*/ /*@out@*/ int * num) 00622 /*@modifies *name, *num @*/; 00623 00631 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name, 00632 /*@null@*/ /*@out@*/ int * num) 00633 /*@modifies *name, *num @*/; 00634 00648 int rpmMachineScore(int type, const char * name) 00649 /*@*/; 00650 00651 /*@only@*/ /*@null@*/ /*@unchecked@*/ 00652 extern void * platpat; 00653 /*@unchecked@*/ 00654 extern int nplatpat; 00655 00667 int rpmPlatformScore(const char * platform, /*@null@*/ void * mi_re, int mi_nre) 00668 /*@modifies mi_re @*/; 00669 00675 int rpmShowRC(FILE * fp) 00676 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00677 /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState @*/; 00678 00686 void rpmSetTables(int archTable, int osTable) 00687 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00688 /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/; 00689 00700 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os) 00701 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00702 /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/; 00703 00708 void rpmFreeRpmrc(void) 00709 /*@globals platpat, nplatpat, internalState @*/ 00710 /*@modifies platpat, nplatpat, internalState @*/; 00711 00713 /* ==================================================================== */ 00716 00720 typedef enum rpmprobFilterFlags_e { 00721 RPMPROB_FILTER_NONE = 0, 00722 RPMPROB_FILTER_IGNOREOS = (1 << 0), 00723 RPMPROB_FILTER_IGNOREARCH = (1 << 1), 00724 RPMPROB_FILTER_REPLACEPKG = (1 << 2), 00725 RPMPROB_FILTER_FORCERELOCATE= (1 << 3), 00726 RPMPROB_FILTER_REPLACENEWFILES= (1 << 4), 00727 RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5), 00728 RPMPROB_FILTER_OLDPACKAGE = (1 << 6), 00729 RPMPROB_FILTER_DISKSPACE = (1 << 7), 00730 RPMPROB_FILTER_DISKNODES = (1 << 8) 00731 } rpmprobFilterFlags; 00732 00736 typedef struct rpmRelocation_s * rpmRelocation; 00737 #if !defined(SWIG) 00738 struct rpmRelocation_s { 00739 /*@only@*/ /*@null@*/ 00740 const char * oldPath; 00741 /*@only@*/ /*@null@*/ 00742 const char * newPath; 00743 }; 00744 #endif 00745 00753 int rpmVersionCompare(Header first, Header second) 00754 /*@*/; 00755 00759 typedef enum fileAction_e { 00760 FA_UNKNOWN = 0, 00761 FA_CREATE, 00762 FA_COPYIN, 00763 FA_COPYOUT, 00764 FA_BACKUP, 00765 FA_SAVE, 00766 FA_SKIP, 00767 FA_ALTNAME, 00768 FA_ERASE, 00769 FA_SKIPNSTATE, 00770 FA_SKIPNETSHARED, 00771 FA_SKIPCOLOR 00772 } fileAction; 00773 00774 #define XFA_SKIPPING(_a) \ 00775 ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR) 00776 00784 typedef enum fileTypes_e { 00785 PIPE = 1, 00786 CDEV = 2, 00787 XDIR = 4, 00788 BDEV = 6, 00789 REG = 8, 00790 LINK = 10, 00791 SOCK = 12 00792 } fileTypes; 00793 00797 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t; 00798 00802 typedef /*@abstract@*/ struct fsm_s * FSM_t; 00803 00807 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm; 00808 00818 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate) 00819 /*@modifies *iv @*/; 00820 00834 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, 00835 /*@out@*/ /*@null@*/ const char ** msg) 00836 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00837 /*@modifies ts, *msg, rpmGlobalMacroContext, 00838 fileSystem, internalState @*/; 00839 00848 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp, 00849 /*@out@*/ /*@null@*/ const char ** msg) 00850 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00851 /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext, 00852 fileSystem, internalState @*/; 00853 00862 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd, 00863 const char * fn, /*@null@*/ /*@out@*/ Header * hdrp) 00864 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00865 /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext, 00866 fileSystem, internalState @*/; 00867 00876 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd, 00877 /*@null@*/ /*@out@*/ const char ** specFilePtr, 00878 /*@null@*/ /*@out@*/ const char ** cookie) 00879 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00880 /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext, 00881 fileSystem, internalState @*/; 00882 00887 typedef enum rpmdepFlags_e { 00888 RPMDEPS_FLAG_NONE = 0, 00889 RPMDEPS_FLAG_NOUPGRADE = (1 << 0), 00890 RPMDEPS_FLAG_NOREQUIRES = (1 << 1), 00891 RPMDEPS_FLAG_NOCONFLICTS = (1 << 2), 00892 RPMDEPS_FLAG_NOOBSOLETES = (1 << 3), 00893 RPMDEPS_FLAG_NOPARENTDIRS = (1 << 4), 00894 RPMDEPS_FLAG_NOLINKTOS = (1 << 5), 00895 RPMDEPS_FLAG_ANACONDA = (1 << 6), 00896 RPMDEPS_FLAG_NOSUGGEST = (1 << 7), 00897 RPMDEPS_FLAG_ADDINDEPS = (1 << 8), 00898 RPMDEPS_FLAG_DEPLOOPS = (1 << 9) 00899 } rpmdepFlags; 00900 00905 typedef enum rpmtransFlags_e { 00906 RPMTRANS_FLAG_NONE = 0, 00907 RPMTRANS_FLAG_TEST = (1 << 0), 00908 RPMTRANS_FLAG_BUILD_PROBS = (1 << 1), 00909 RPMTRANS_FLAG_NOSCRIPTS = (1 << 2), 00910 RPMTRANS_FLAG_JUSTDB = (1 << 3), 00911 RPMTRANS_FLAG_NOTRIGGERS = (1 << 4), 00912 RPMTRANS_FLAG_NODOCS = (1 << 5), 00913 RPMTRANS_FLAG_ALLFILES = (1 << 6), 00914 /*@-enummemuse@*/ 00915 RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7), 00916 /*@=enummemuse@*/ 00917 RPMTRANS_FLAG_NOCONTEXTS = (1 << 8), 00918 RPMTRANS_FLAG_DIRSTASH = (1 << 9), 00919 RPMTRANS_FLAG_REPACKAGE = (1 << 10), 00921 RPMTRANS_FLAG_PKGCOMMIT = (1 << 11), 00922 /*@-enummemuse@*/ 00923 RPMTRANS_FLAG_PKGUNDO = (1 << 12), 00924 /*@=enummemuse@*/ 00925 RPMTRANS_FLAG_COMMIT = (1 << 13), 00926 /*@-enummemuse@*/ 00927 RPMTRANS_FLAG_UNDO = (1 << 14), 00928 /*@=enummemuse@*/ 00929 /* 15 unused */ 00930 00931 RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16), 00932 RPMTRANS_FLAG_NOPRE = (1 << 17), 00933 RPMTRANS_FLAG_NOPOST = (1 << 18), 00934 RPMTRANS_FLAG_NOTRIGGERIN = (1 << 19), 00935 RPMTRANS_FLAG_NOTRIGGERUN = (1 << 20), 00936 RPMTRANS_FLAG_NOPREUN = (1 << 21), 00937 RPMTRANS_FLAG_NOPOSTUN = (1 << 22), 00938 RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), 00939 /*@-enummemuse@*/ 00940 RPMTRANS_FLAG_NOPAYLOAD = (1 << 24), 00941 /*@=enummemuse@*/ 00942 RPMTRANS_FLAG_APPLYONLY = (1 << 25), 00943 00944 /* 26 unused */ 00945 RPMTRANS_FLAG_NOFDIGESTS = (1 << 27), 00946 /* 28-29 unused */ 00947 RPMTRANS_FLAG_NOCONFIGS = (1 << 30), 00948 /* 31 unused */ 00949 } rpmtransFlags; 00950 00951 #define _noTransScripts \ 00952 ( RPMTRANS_FLAG_NOPRE | \ 00953 RPMTRANS_FLAG_NOPOST | \ 00954 RPMTRANS_FLAG_NOPREUN | \ 00955 RPMTRANS_FLAG_NOPOSTUN \ 00956 ) 00957 00958 #define _noTransTriggers \ 00959 ( RPMTRANS_FLAG_NOTRIGGERPREIN | \ 00960 RPMTRANS_FLAG_NOTRIGGERIN | \ 00961 RPMTRANS_FLAG_NOTRIGGERUN | \ 00962 RPMTRANS_FLAG_NOTRIGGERPOSTUN \ 00963 ) 00964 00967 #if !defined(SWIG) 00968 00973 /*@-redecl@*/ 00974 /*@unused@*/ static inline /*@observer@*/ 00975 const char * tagName(int tag) 00976 /*@*/ 00977 { 00978 /*@-type@*/ 00979 return ((*rpmTags->tagName)(tag)); 00980 /*@=type@*/ 00981 } 00982 /*@=redecl@*/ 00983 00989 /*@unused@*/ static inline 00990 int tagType(int tag) 00991 /*@*/ 00992 { 00993 /*@-type@*/ 00994 return ((*rpmTags->tagType)(tag)); 00995 /*@=type@*/ 00996 } 00997 01003 /*@unused@*/ static inline 01004 int tagValue(const char * tagstr) 01005 /*@*/ 01006 { 01007 /*@-type@*/ 01008 return ((*rpmTags->tagValue)(tagstr)); 01009 /*@=type@*/ 01010 } 01011 #endif 01012 01013 #define RPMLEAD_BINARY 0 01014 #define RPMLEAD_SOURCE 1 01015 01016 #define RPMLEAD_MAGIC0 0xed 01017 #define RPMLEAD_MAGIC1 0xab 01018 #define RPMLEAD_MAGIC2 0xee 01019 #define RPMLEAD_MAGIC3 0xdb 01020 01021 #define RPMLEAD_SIZE 96 01029 struct rpmlead { 01030 unsigned char magic[4]; 01031 unsigned char major; 01032 unsigned char minor; 01033 short type; 01034 short archnum; 01035 char name[66]; 01036 short osnum; 01037 short signature_type; 01038 /*@unused@*/ char reserved[16]; 01039 } ; 01040 01041 /* ==================================================================== */ 01044 01048 enum rpmtagSignature { 01049 RPMSIGTAG_SIZE = 1000, 01050 RPMSIGTAG_LEMD5_1 = 1001, 01051 RPMSIGTAG_PGP = 1002, 01052 RPMSIGTAG_LEMD5_2 = 1003, 01053 RPMSIGTAG_MD5 = 1004, 01054 RPMSIGTAG_GPG = 1005, 01055 RPMSIGTAG_PGP5 = 1006, 01056 RPMSIGTAG_PAYLOADSIZE = 1007, 01057 RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1, 01058 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, 01059 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, 01060 RPMSIGTAG_DSA = RPMTAG_DSAHEADER, 01061 RPMSIGTAG_RSA = RPMTAG_RSAHEADER, 01062 RPMSIGTAG_PADDING = 0x3fffffff 01063 }; 01064 01078 rpmRC rpmVerifySignature(const rpmts ts, 01079 /*@out@*/ char * result) 01080 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 01081 /*@modifies ts, *result, rpmGlobalMacroContext, 01082 fileSystem, internalState @*/; 01083 01089 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header sigh) 01090 /*@modifies sigh @*/; 01091 01094 #ifdef __cplusplus 01095 } 01096 #endif 01097 01098 #endif /* H_RPMLIB */