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
00033
00034 extern struct MacroContext_s * rpmGlobalMacroContext;
00035
00036
00037 extern struct MacroContext_s * rpmCLIMacroContext;
00038
00039
00040 extern const char * RPMVERSION;
00041
00042
00043 extern const char * rpmNAME;
00044
00045
00046 extern const char * rpmEVR;
00047
00048
00049 extern int rpmFLAGS;
00050
00051
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055
00062 typedef struct rpmts_s * rpmts;
00063
00066 typedef struct Spec_s * Spec;
00067
00071 typedef void * alKey;
00072 #define RPMAL_NOMATCH ((alKey)-1L)
00073
00077
00078 typedef int alNum;
00079
00080
00084 typedef struct rpmds_s * rpmds;
00085
00089 typedef struct rpmPRCO_s * rpmPRCO;
00090
00094 typedef struct rpmfi_s * rpmfi;
00095
00099 typedef struct rpmte_s * rpmte;
00100
00104 typedef struct rpmdb_s * rpmdb;
00105
00109 typedef struct _rpmdbMatchIterator * rpmdbMatchIterator;
00110
00114 typedef struct rpmgi_s * rpmgi;
00115
00122 void headerMergeLegacySigs(Header h, const Header sigh)
00123 ;
00124
00132 Header headerRegenSigHeader(const Header h, int noArchiveSize)
00133 ;
00134
00138
00139
00140 extern const struct headerTagTableEntry_s * rpmTagTable;
00141
00142
00146
00147
00148 extern const int rpmTagTableSize;
00149
00150
00151
00152 extern headerTagIndices rpmTags;
00153
00158
00159
00160 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00161
00162
00166 #define RPMDBI_PACKAGES 0
00167 #define RPMDBI_DEPENDS 1
00168 #define RPMDBI_LABEL 2
00169 #define RPMDBI_ADDED 3
00170 #define RPMDBI_REMOVED 4
00171 #define RPMDBI_AVAILABLE 5
00172 #define RPMDBI_HDLIST 6
00173 #define RPMDBI_ARGLIST 7
00174 #define RPMDBI_FTSWALK 8
00175
00181 typedef enum rpmTag_e {
00182
00183 RPMTAG_HEADERIMAGE = HEADER_IMAGE,
00184 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES,
00185 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE,
00186
00187 RPMTAG_HEADERREGIONS = HEADER_REGIONS,
00189 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE,
00190
00191
00192
00193
00194
00195 RPMTAG_SIG_BASE = HEADER_SIGBASE,
00196 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1,
00197 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2,
00198 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3,
00199 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4,
00200 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5,
00201 #define RPMTAG_PKGID RPMTAG_SIGMD5
00202 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6,
00203 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7,
00204
00205 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8,
00206 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9,
00207 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10,
00208 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11,
00209 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12,
00210 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13,
00211 #define RPMTAG_HDRID RPMTAG_SHA1HEADER
00212
00213 RPMTAG_NAME = 1000,
00214 #define RPMTAG_N RPMTAG_NAME
00215 RPMTAG_VERSION = 1001,
00216 #define RPMTAG_V RPMTAG_VERSION
00217 RPMTAG_RELEASE = 1002,
00218 #define RPMTAG_R RPMTAG_RELEASE
00219 RPMTAG_EPOCH = 1003,
00220 #define RPMTAG_E RPMTAG_EPOCH
00221 RPMTAG_SUMMARY = 1004,
00222 RPMTAG_DESCRIPTION = 1005,
00223 RPMTAG_BUILDTIME = 1006,
00224 RPMTAG_BUILDHOST = 1007,
00225 RPMTAG_INSTALLTIME = 1008,
00226 RPMTAG_SIZE = 1009,
00227 RPMTAG_DISTRIBUTION = 1010,
00228 RPMTAG_VENDOR = 1011,
00229 RPMTAG_GIF = 1012,
00230 RPMTAG_XPM = 1013,
00231 RPMTAG_LICENSE = 1014,
00232 RPMTAG_PACKAGER = 1015,
00233 RPMTAG_GROUP = 1016,
00234
00235 RPMTAG_CHANGELOG = 1017,
00236
00237 RPMTAG_SOURCE = 1018,
00238 RPMTAG_PATCH = 1019,
00239 RPMTAG_URL = 1020,
00240 RPMTAG_OS = 1021,
00241 RPMTAG_ARCH = 1022,
00242 RPMTAG_PREIN = 1023,
00243 RPMTAG_POSTIN = 1024,
00244 RPMTAG_PREUN = 1025,
00245 RPMTAG_POSTUN = 1026,
00246 RPMTAG_OLDFILENAMES = 1027,
00247 RPMTAG_FILESIZES = 1028,
00248 RPMTAG_FILESTATES = 1029,
00249 RPMTAG_FILEMODES = 1030,
00250 RPMTAG_FILEUIDS = 1031,
00251 RPMTAG_FILEGIDS = 1032,
00252 RPMTAG_FILERDEVS = 1033,
00253 RPMTAG_FILEMTIMES = 1034,
00254 RPMTAG_FILEDIGESTS = 1035,
00255 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS
00256 RPMTAG_FILELINKTOS = 1036,
00257 RPMTAG_FILEFLAGS = 1037,
00258
00259 RPMTAG_ROOT = 1038,
00260
00261 RPMTAG_FILEUSERNAME = 1039,
00262 RPMTAG_FILEGROUPNAME = 1040,
00263
00264 RPMTAG_EXCLUDE = 1041,
00265 RPMTAG_EXCLUSIVE = 1042,
00266
00267 RPMTAG_ICON = 1043,
00268 RPMTAG_SOURCERPM = 1044,
00269 RPMTAG_FILEVERIFYFLAGS = 1045,
00270 RPMTAG_ARCHIVESIZE = 1046,
00271 RPMTAG_PROVIDENAME = 1047,
00272 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
00273 #define RPMTAG_P RPMTAG_PROVIDENAME
00274 RPMTAG_REQUIREFLAGS = 1048,
00275 RPMTAG_REQUIRENAME = 1049,
00276 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME
00277 RPMTAG_REQUIREVERSION = 1050,
00278 RPMTAG_NOSOURCE = 1051,
00279 RPMTAG_NOPATCH = 1052,
00280 RPMTAG_CONFLICTFLAGS = 1053,
00281 RPMTAG_CONFLICTNAME = 1054,
00282 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME
00283 #define RPMTAG_C RPMTAG_CONFLICTNAME
00284 RPMTAG_CONFLICTVERSION = 1055,
00285 RPMTAG_DEFAULTPREFIX = 1056,
00286 RPMTAG_BUILDROOT = 1057,
00287 RPMTAG_INSTALLPREFIX = 1058,
00288 RPMTAG_EXCLUDEARCH = 1059,
00289 RPMTAG_EXCLUDEOS = 1060,
00290 RPMTAG_EXCLUSIVEARCH = 1061,
00291 RPMTAG_EXCLUSIVEOS = 1062,
00292 RPMTAG_AUTOREQPROV = 1063,
00293 RPMTAG_RPMVERSION = 1064,
00294 RPMTAG_TRIGGERSCRIPTS = 1065,
00295 RPMTAG_TRIGGERNAME = 1066,
00296 RPMTAG_TRIGGERVERSION = 1067,
00297 RPMTAG_TRIGGERFLAGS = 1068,
00298 RPMTAG_TRIGGERINDEX = 1069,
00299 RPMTAG_VERIFYSCRIPT = 1079,
00300 RPMTAG_CHANGELOGTIME = 1080,
00301 RPMTAG_CHANGELOGNAME = 1081,
00302 RPMTAG_CHANGELOGTEXT = 1082,
00303
00304 RPMTAG_BROKENMD5 = 1083,
00305
00306 RPMTAG_PREREQ = 1084,
00307 RPMTAG_PREINPROG = 1085,
00308 RPMTAG_POSTINPROG = 1086,
00309 RPMTAG_PREUNPROG = 1087,
00310 RPMTAG_POSTUNPROG = 1088,
00311 RPMTAG_BUILDARCHS = 1089,
00312 RPMTAG_OBSOLETENAME = 1090,
00313 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
00314 #define RPMTAG_O RPMTAG_OBSOLETENAME
00315 RPMTAG_VERIFYSCRIPTPROG = 1091,
00316 RPMTAG_TRIGGERSCRIPTPROG = 1092,
00317 RPMTAG_DOCDIR = 1093,
00318 RPMTAG_COOKIE = 1094,
00319 RPMTAG_FILEDEVICES = 1095,
00320 RPMTAG_FILEINODES = 1096,
00321 RPMTAG_FILELANGS = 1097,
00322 RPMTAG_PREFIXES = 1098,
00323 RPMTAG_INSTPREFIXES = 1099,
00324 RPMTAG_TRIGGERIN = 1100,
00325 RPMTAG_TRIGGERUN = 1101,
00326 RPMTAG_TRIGGERPOSTUN = 1102,
00327 RPMTAG_AUTOREQ = 1103,
00328 RPMTAG_AUTOPROV = 1104,
00329
00330 RPMTAG_CAPABILITY = 1105,
00331
00332 RPMTAG_SOURCEPACKAGE = 1106,
00333
00334 RPMTAG_OLDORIGFILENAMES = 1107,
00335
00336 RPMTAG_BUILDPREREQ = 1108,
00337 RPMTAG_BUILDREQUIRES = 1109,
00338 RPMTAG_BUILDCONFLICTS = 1110,
00339
00340 RPMTAG_BUILDMACROS = 1111,
00341
00342 RPMTAG_PROVIDEFLAGS = 1112,
00343 RPMTAG_PROVIDEVERSION = 1113,
00344 RPMTAG_OBSOLETEFLAGS = 1114,
00345 RPMTAG_OBSOLETEVERSION = 1115,
00346 RPMTAG_DIRINDEXES = 1116,
00347 RPMTAG_BASENAMES = 1117,
00348 RPMTAG_DIRNAMES = 1118,
00349 RPMTAG_ORIGDIRINDEXES = 1119,
00350 RPMTAG_ORIGBASENAMES = 1120,
00351 RPMTAG_ORIGDIRNAMES = 1121,
00352 RPMTAG_OPTFLAGS = 1122,
00353 RPMTAG_DISTURL = 1123,
00354 RPMTAG_PAYLOADFORMAT = 1124,
00355 RPMTAG_PAYLOADCOMPRESSOR = 1125,
00356 RPMTAG_PAYLOADFLAGS = 1126,
00357 RPMTAG_INSTALLCOLOR = 1127,
00358 RPMTAG_INSTALLTID = 1128,
00359 RPMTAG_REMOVETID = 1129,
00360
00361 RPMTAG_SHA1RHN = 1130,
00362
00363 RPMTAG_RHNPLATFORM = 1131,
00364 RPMTAG_PLATFORM = 1132,
00365 RPMTAG_PATCHESNAME = 1133,
00366 RPMTAG_PATCHESFLAGS = 1134,
00367 RPMTAG_PATCHESVERSION = 1135,
00368 RPMTAG_CACHECTIME = 1136,
00369 RPMTAG_CACHEPKGPATH = 1137,
00370 RPMTAG_CACHEPKGSIZE = 1138,
00371 RPMTAG_CACHEPKGMTIME = 1139,
00372 RPMTAG_FILECOLORS = 1140,
00373 RPMTAG_FILECLASS = 1141,
00374 RPMTAG_CLASSDICT = 1142,
00375 RPMTAG_FILEDEPENDSX = 1143,
00376 RPMTAG_FILEDEPENDSN = 1144,
00377 RPMTAG_DEPENDSDICT = 1145,
00378 RPMTAG_SOURCEPKGID = 1146,
00379 RPMTAG_FILECONTEXTS = 1147,
00380 RPMTAG_FSCONTEXTS = 1148,
00381 RPMTAG_RECONTEXTS = 1149,
00382 RPMTAG_POLICIES = 1150,
00383 RPMTAG_PRETRANS = 1151,
00384 RPMTAG_POSTTRANS = 1152,
00385 RPMTAG_PRETRANSPROG = 1153,
00386 RPMTAG_POSTTRANSPROG = 1154,
00387 RPMTAG_DISTTAG = 1155,
00388 RPMTAG_SUGGESTSNAME = 1156,
00389 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME
00390 RPMTAG_SUGGESTSVERSION = 1157,
00391 RPMTAG_SUGGESTSFLAGS = 1158,
00392 RPMTAG_ENHANCESNAME = 1159,
00393 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME
00394 RPMTAG_ENHANCESVERSION = 1160,
00395 RPMTAG_ENHANCESFLAGS = 1161,
00396 RPMTAG_PRIORITY = 1162,
00397 RPMTAG_CVSID = 1163,
00398 #define RPMTAG_SVNID RPMTAG_CVSID
00399 RPMTAG_BLINKPKGID = 1164,
00400 RPMTAG_BLINKHDRID = 1165,
00401 RPMTAG_BLINKNEVRA = 1166,
00402 RPMTAG_FLINKPKGID = 1167,
00403 RPMTAG_FLINKHDRID = 1168,
00404 RPMTAG_FLINKNEVRA = 1169,
00405 RPMTAG_PACKAGEORIGIN = 1170,
00406 RPMTAG_TRIGGERPREIN = 1171,
00407 RPMTAG_BUILDSUGGESTS = 1172,
00408 RPMTAG_BUILDENHANCES = 1173,
00409 RPMTAG_SCRIPTSTATES = 1174,
00410 RPMTAG_SCRIPTMETRICS = 1175,
00411 RPMTAG_BUILDCPUCLOCK = 1176,
00412 RPMTAG_FILEDIGESTALGOS = 1177,
00413 RPMTAG_VARIANTS = 1178,
00414 RPMTAG_XMAJOR = 1179,
00415 RPMTAG_XMINOR = 1180,
00416 RPMTAG_REPOTAG = 1181,
00417 RPMTAG_KEYWORDS = 1182,
00418 RPMTAG_BUILDPLATFORMS = 1183,
00419 RPMTAG_PACKAGECOLOR = 1184,
00420 RPMTAG_PACKAGEPREFCOLOR = 1185,
00421 RPMTAG_XATTRSDICT = 1186,
00422 RPMTAG_FILEXATTRSX = 1187,
00423 RPMTAG_DEPATTRSDICT = 1188,
00424 RPMTAG_CONFLICTATTRSX = 1189,
00425 RPMTAG_OBSOLETEATTRSX = 1190,
00426 RPMTAG_PROVIDEATTRSX = 1191,
00427 RPMTAG_REQUIREATTRSX = 1192,
00428 RPMTAG_BUILDPROVIDES = 1193,
00429 RPMTAG_BUILDOBSOLETES = 1194,
00430 RPMTAG_DBINSTANCE = 1195,
00431 RPMTAG_NVRA = 1196,
00432 RPMTAG_FILEPATHS = 1197,
00433 RPMTAG_ORIGPATHS = 1198,
00434 RPMTAG_RPMLIBVERSION = 1199,
00435 RPMTAG_RPMLIBTIMESTAMP = 1200,
00436 RPMTAG_RPMLIBVENDOR = 1201,
00437 RPMTAG_CLASS = 1202,
00438 RPMTAG_TRACK = 1203,
00439 RPMTAG_TRACKPROG = 1204,
00440 RPMTAG_SANITYCHECK = 1205,
00441 RPMTAG_SANITYCHECKPROG = 1206,
00442 RPMTAG_FILESTAT = 1207,
00443 RPMTAG_STAT = 1208,
00444 RPMTAG_ORIGINTID = 1209,
00445 RPMTAG_ORIGINTIME = 1210,
00446 RPMTAG_HEADERSTARTOFF = 1211,
00447 RPMTAG_HEADERENDOFF = 1212,
00448 RPMTAG_PACKAGETIME = 1213,
00449 RPMTAG_PACKAGESIZE = 1214,
00450 RPMTAG_PACKAGEDIGEST = 1215,
00451 RPMTAG_PACKAGESTAT = 1216,
00452 RPMTAG_PACKAGEBASEURL = 1217,
00453
00454
00455 RPMTAG_FIRSTFREE_TAG,
00456
00457
00458
00459 #define RPMTAG_Buildbuild 0x5bae1a5a
00460 #define RPMTAG_Buildbuildprog 0x6fb46014
00461 #define RPMTAG_Buildcheck 0x7f3b97b5
00462 #define RPMTAG_Buildcheckprog 0x488a60ce
00463 #define RPMTAG_Buildclean 0x566042bf
00464 #define RPMTAG_Buildcleanprog 0x42c93d41
00465 #define RPMTAG_Buildinstall 0x567f5983
00466 #define RPMTAG_Buildinstallprog 0x70d4ab6f
00467 #define RPMTAG_Buildprep 0x799c0b4d
00468 #define RPMTAG_Buildprepprog 0x4ba37c9e
00469 #define RPMTAG_Buildtimeuuid 0x782eeb68
00470 #define RPMTAG_Conflictsqlentry 0x7efaed0d
00471 #define RPMTAG_Conflictxmlentry 0x61333865
00472 #define RPMTAG_Filenames 0x54aafb71
00473 #define RPMTAG_Filessqlentry1 0x4493df20
00474 #define RPMTAG_Filessqlentry2 0x515aae25
00475 #define RPMTAG_Filesxmlentry1 0x42974275
00476 #define RPMTAG_Filesxmlentry2 0x7f69e738
00477 #define RPMTAG_Hdruuid 0x42cba9cf
00478 #define RPMTAG_Installprefix 0x67b450ec
00479 #define RPMTAG_Installtiduuid 0x59784ccd
00480 #define RPMTAG_Installtimeuuid 0x51b2ff6a
00481 #define RPMTAG_Obsoletesqlentry 0x4e0e61b0
00482 #define RPMTAG_Obsoletexmlentry 0x5a7ce878
00483 #define RPMTAG_Origintiduuid 0x5fde8cfd
00484 #define RPMTAG_Origintimeuuid 0x66bb891b
00485 #define RPMTAG_Pkguuid 0x44703c2c
00486 #define RPMTAG_Providesqlentry 0x599f1b4a
00487 #define RPMTAG_Providexmlentry 0x6569bce6
00488 #define RPMTAG_Removetiduuid 0x6a884e83
00489 #define RPMTAG_Requiresqlentry 0x723158aa
00490 #define RPMTAG_Requirexmlentry 0x54b25cd7
00491 #define RPMTAG_Sourcepkguuid 0x4eedc6f9
00492 #define RPMTAG_Trackprog 0x46c39442
00493 #define RPMTAG_Triggerconds 0x46ced1cc
00494 #define RPMTAG_Triggertype 0x562d6086
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
00516 RPMSCRIPT_VERIFY = 16,
00517 RPMSCRIPT_MAX = 32
00518 } rpmScriptID;
00519
00523 typedef enum rpmScriptState_e {
00524 RPMSCRIPT_STATE_UNKNOWN = 0,
00525
00526 RPMSCRIPT_STATE_EXEC = (1 << 16),
00527 RPMSCRIPT_STATE_REAPED = (1 << 17),
00528
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
00545
00549 typedef enum rpmfileAttrs_e {
00550
00551 RPMFILE_NONE = 0,
00552
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
00597 extern const char *rpmRcfiles;
00598
00605 int rpmReadConfigFiles( const char * file,
00606 const char * target)
00607
00608
00609
00610
00611 ;
00612
00620 void rpmGetArchInfo( const char ** name,
00621 int * num)
00622 ;
00623
00631 void rpmGetOsInfo( const char ** name,
00632 int * num)
00633 ;
00634
00648 int rpmMachineScore(int type, const char * name)
00649 ;
00650
00651
00652 extern void * platpat;
00653
00654 extern int nplatpat;
00655
00667 int rpmPlatformScore(const char * platform, void * mi_re, int mi_nre)
00668 ;
00669
00675 int rpmShowRC(FILE * fp)
00676
00677 ;
00678
00686 void rpmSetTables(int archTable, int osTable)
00687
00688 ;
00689
00700 void rpmSetMachine( const char * arch, const char * os)
00701
00702 ;
00703
00708 void rpmFreeRpmrc(void)
00709
00710 ;
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
00740 const char * oldPath;
00741
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 struct fsmIterator_s * FSMI_t;
00798
00802 typedef struct fsm_s * FSM_t;
00803
00807 typedef struct rpmpsm_s * rpmpsm;
00808
00818 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
00819 ;
00820
00834 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
00835 const char ** msg)
00836
00837
00838 ;
00839
00848 rpmRC rpmReadHeader(rpmts ts, FD_t fd, Header *hdrp,
00849 const char ** msg)
00850
00851
00852 ;
00853
00862 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd,
00863 const char * fn, Header * hdrp)
00864
00865
00866 ;
00867
00876 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd,
00877 const char ** specFilePtr,
00878 const char ** cookie)
00879
00880
00881 ;
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
00915 RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7),
00916
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
00923 RPMTRANS_FLAG_PKGUNDO = (1 << 12),
00924
00925 RPMTRANS_FLAG_COMMIT = (1 << 13),
00926
00927 RPMTRANS_FLAG_UNDO = (1 << 14),
00928
00929
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
00940 RPMTRANS_FLAG_NOPAYLOAD = (1 << 24),
00941
00942 RPMTRANS_FLAG_APPLYONLY = (1 << 25),
00943
00944
00945 RPMTRANS_FLAG_NOFDIGESTS = (1 << 27),
00946 RPMTRANS_FLAG_NOPRETRANS = (1 << 28),
00947 RPMTRANS_FLAG_NOPOSTTRANS = (1 << 29),
00948 RPMTRANS_FLAG_NOCONFIGS = (1 << 30),
00949
00950 } rpmtransFlags;
00951
00952 #define _noTransScripts \
00953 ( RPMTRANS_FLAG_NOPRE | \
00954 RPMTRANS_FLAG_NOPOST | \
00955 RPMTRANS_FLAG_NOPREUN | \
00956 RPMTRANS_FLAG_NOPOSTUN \
00957 )
00958
00959 #define _noTransTriggers \
00960 ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
00961 RPMTRANS_FLAG_NOTRIGGERIN | \
00962 RPMTRANS_FLAG_NOTRIGGERUN | \
00963 RPMTRANS_FLAG_NOTRIGGERPOSTUN \
00964 )
00965
00968 #if !defined(SWIG)
00969
00974
00975 static inline
00976 const char * tagName(int tag)
00977
00978 {
00979
00980 return ((*rpmTags->tagName)(tag));
00981
00982 }
00983
00984
00990 static inline
00991 int tagType(int tag)
00992
00993 {
00994
00995 return ((*rpmTags->tagType)(tag));
00996
00997 }
00998
01004 static inline
01005 int tagValue(const char * tagstr)
01006
01007 {
01008
01009 return ((*rpmTags->tagValue)(tagstr));
01010
01011 }
01012 #endif
01013
01014 #define RPMLEAD_BINARY 0
01015 #define RPMLEAD_SOURCE 1
01016
01017 #define RPMLEAD_MAGIC0 0xed
01018 #define RPMLEAD_MAGIC1 0xab
01019 #define RPMLEAD_MAGIC2 0xee
01020 #define RPMLEAD_MAGIC3 0xdb
01021
01022 #define RPMLEAD_SIZE 96
01030 struct rpmlead {
01031 unsigned char magic[4];
01032 unsigned char major;
01033 unsigned char minor;
01034 short type;
01035 short archnum;
01036 char name[66];
01037 short osnum;
01038 short signature_type;
01039 char reserved[16];
01040 } ;
01041
01042
01045
01049 enum rpmtagSignature {
01050 RPMSIGTAG_SIZE = 1000,
01051 RPMSIGTAG_LEMD5_1 = 1001,
01052 RPMSIGTAG_PGP = 1002,
01053 RPMSIGTAG_LEMD5_2 = 1003,
01054 RPMSIGTAG_MD5 = 1004,
01055 RPMSIGTAG_GPG = 1005,
01056 RPMSIGTAG_PGP5 = 1006,
01057 RPMSIGTAG_PAYLOADSIZE = 1007,
01058 RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,
01059 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,
01060 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER,
01061 RPMSIGTAG_DSA = RPMTAG_DSAHEADER,
01062 RPMSIGTAG_RSA = RPMTAG_RSAHEADER,
01063 RPMSIGTAG_PADDING = 0x3fffffff
01064 };
01065
01079 rpmRC rpmVerifySignature(const rpmts ts,
01080 char * result)
01081
01082
01083 ;
01084
01090 Header rpmFreeSignature( Header sigh)
01091 ;
01092
01095 #ifdef __cplusplus
01096 }
01097 #endif
01098
01099 #endif