00001 #ifndef H_RPMLIB
00002 #define H_RPMLIB
00003
00009
00010
00011
00012
00013 #include "rpmio.h"
00014 #include "rpmmessages.h"
00015 #include "rpmerr.h"
00016 #include "header.h"
00017 #include "popt.h"
00018
00022 typedef enum rpmRC_e {
00023 RPMRC_OK = 0,
00024 RPMRC_BADMAGIC = 1,
00025 RPMRC_FAIL = 2,
00026 RPMRC_BADSIZE = 3,
00027 RPMRC_SHORTREAD = 4,
00028 } rpmRC;
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00039 static inline void *
00040 _free( const void * p)
00041
00042 {
00043 if (p != NULL) free((void *)p);
00044 return NULL;
00045 }
00046
00056 rpmRC rpmReadPackageInfo(FD_t fd, Header * sigp,
00057 Header * hdrp)
00058 ;
00059
00069 rpmRC rpmReadPackageHeader(FD_t fd, Header * hdrp,
00070 int * isSource,
00071 int * major,
00072 int * minor)
00073 ;
00074
00083 int headerNVR(Header h,
00084 const char ** np,
00085 const char ** vp,
00086 const char ** rp)
00087 ;
00088
00094 void headerMergeLegacySigs(Header h, const Header sig)
00095 ;
00096
00102 Header headerRegenSigHeader(const Header h)
00103 ;
00104
00118 void rpmBuildFileList(Header h, const char *** fileListPtr,
00119 int * fileCountPtr)
00120 ;
00121
00135 int rpmHeaderGetEntry(Header h, int_32 tag, int_32 *type,
00136 void **p, int_32 *c)
00137 ;
00138
00154
00155 int rpmPackageGetEntry(void *leadp, Header sigs, Header h,
00156 int_32 tag, int_32 *type, void **p, int_32 *c)
00157 ;
00158
00162
00163 extern const struct headerTagTableEntry_s rpmTagTable[];
00164
00165
00169
00170 extern const int rpmTagTableSize;
00171
00172
00177
00178 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00179
00180
00184 #define RPMDBI_PACKAGES 0
00185 #define RPMDBI_DEPENDS 1
00186 #define RPMDBI_LABEL 2
00187 #define RPMDBI_ADDED 3
00188 #define RPMDBI_REMOVED 4
00189 #define RPMDBI_AVAILABLE 5
00195 typedef enum rpmTag_e {
00196
00197 RPMTAG_HEADERIMAGE = HEADER_IMAGE,
00198 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES,
00199 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE,
00200
00201 RPMTAG_HEADERREGIONS = HEADER_REGIONS,
00203 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE,
00204
00205
00206
00207
00208
00209 RPMTAG_SIG_BASE = HEADER_SIGBASE,
00210 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1,
00211 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2,
00212 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3,
00213 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4,
00214 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5,
00215 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6,
00216 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7,
00218 RPMTAG_BADSHA1HEADER = RPMTAG_SIG_BASE+8,
00219 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+9,
00220
00221 RPMTAG_NAME = 1000,
00222 RPMTAG_VERSION = 1001,
00223 RPMTAG_RELEASE = 1002,
00224 RPMTAG_EPOCH = 1003,
00225 #define RPMTAG_SERIAL RPMTAG_EPOCH
00226 RPMTAG_SUMMARY = 1004,
00227 RPMTAG_DESCRIPTION = 1005,
00228 RPMTAG_BUILDTIME = 1006,
00229 RPMTAG_BUILDHOST = 1007,
00230 RPMTAG_INSTALLTIME = 1008,
00231 RPMTAG_SIZE = 1009,
00232 RPMTAG_DISTRIBUTION = 1010,
00233 RPMTAG_VENDOR = 1011,
00234 RPMTAG_GIF = 1012,
00235 RPMTAG_XPM = 1013,
00236 RPMTAG_LICENSE = 1014,
00237 #define RPMTAG_COPYRIGHT RPMTAG_LICENSE
00238 RPMTAG_PACKAGER = 1015,
00239 RPMTAG_GROUP = 1016,
00240
00241 RPMTAG_CHANGELOG = 1017,
00242
00243 RPMTAG_SOURCE = 1018,
00244 RPMTAG_PATCH = 1019,
00245 RPMTAG_URL = 1020,
00246 RPMTAG_OS = 1021,
00247 RPMTAG_ARCH = 1022,
00248 RPMTAG_PREIN = 1023,
00249 RPMTAG_POSTIN = 1024,
00250 RPMTAG_PREUN = 1025,
00251 RPMTAG_POSTUN = 1026,
00252 RPMTAG_OLDFILENAMES = 1027,
00253 RPMTAG_FILESIZES = 1028,
00254 RPMTAG_FILESTATES = 1029,
00255 RPMTAG_FILEMODES = 1030,
00256 RPMTAG_FILEUIDS = 1031,
00257 RPMTAG_FILEGIDS = 1032,
00258 RPMTAG_FILERDEVS = 1033,
00259 RPMTAG_FILEMTIMES = 1034,
00260 RPMTAG_FILEMD5S = 1035,
00261 RPMTAG_FILELINKTOS = 1036,
00262 RPMTAG_FILEFLAGS = 1037,
00263
00264 RPMTAG_ROOT = 1038,
00265
00266 RPMTAG_FILEUSERNAME = 1039,
00267 RPMTAG_FILEGROUPNAME = 1040,
00268
00269 RPMTAG_EXCLUDE = 1041,
00270 RPMTAG_EXCLUSIVE = 1042,
00271
00272 RPMTAG_ICON = 1043,
00273 RPMTAG_SOURCERPM = 1044,
00274 RPMTAG_FILEVERIFYFLAGS = 1045,
00275 RPMTAG_ARCHIVESIZE = 1046,
00276 RPMTAG_PROVIDENAME = 1047,
00277 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
00278 RPMTAG_REQUIREFLAGS = 1048,
00279 RPMTAG_REQUIRENAME = 1049,
00280 RPMTAG_REQUIREVERSION = 1050,
00281 RPMTAG_NOSOURCE = 1051,
00282 RPMTAG_NOPATCH = 1052,
00283 RPMTAG_CONFLICTFLAGS = 1053,
00284 RPMTAG_CONFLICTNAME = 1054,
00285 RPMTAG_CONFLICTVERSION = 1055,
00286 RPMTAG_DEFAULTPREFIX = 1056,
00287 RPMTAG_BUILDROOT = 1057,
00288 RPMTAG_INSTALLPREFIX = 1058,
00289 RPMTAG_EXCLUDEARCH = 1059,
00290 RPMTAG_EXCLUDEOS = 1060,
00291 RPMTAG_EXCLUSIVEARCH = 1061,
00292 RPMTAG_EXCLUSIVEOS = 1062,
00293 RPMTAG_AUTOREQPROV = 1063,
00294 RPMTAG_RPMVERSION = 1064,
00295 RPMTAG_TRIGGERSCRIPTS = 1065,
00296 RPMTAG_TRIGGERNAME = 1066,
00297 RPMTAG_TRIGGERVERSION = 1067,
00298 RPMTAG_TRIGGERFLAGS = 1068,
00299 RPMTAG_TRIGGERINDEX = 1069,
00300 RPMTAG_VERIFYSCRIPT = 1079,
00301 RPMTAG_CHANGELOGTIME = 1080,
00302 RPMTAG_CHANGELOGNAME = 1081,
00303 RPMTAG_CHANGELOGTEXT = 1082,
00304 RPMTAG_BROKENMD5 = 1083,
00305 RPMTAG_PREREQ = 1084,
00306 RPMTAG_PREINPROG = 1085,
00307 RPMTAG_POSTINPROG = 1086,
00308 RPMTAG_PREUNPROG = 1087,
00309 RPMTAG_POSTUNPROG = 1088,
00310 RPMTAG_BUILDARCHS = 1089,
00311 RPMTAG_OBSOLETENAME = 1090,
00312 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
00313 RPMTAG_VERIFYSCRIPTPROG = 1091,
00314 RPMTAG_TRIGGERSCRIPTPROG = 1092,
00315 RPMTAG_DOCDIR = 1093,
00316 RPMTAG_COOKIE = 1094,
00317 RPMTAG_FILEDEVICES = 1095,
00318 RPMTAG_FILEINODES = 1096,
00319 RPMTAG_FILELANGS = 1097,
00320 RPMTAG_PREFIXES = 1098,
00321 RPMTAG_INSTPREFIXES = 1099,
00322 RPMTAG_TRIGGERIN = 1100,
00323 RPMTAG_TRIGGERUN = 1101,
00324 RPMTAG_TRIGGERPOSTUN = 1102,
00325 RPMTAG_AUTOREQ = 1103,
00326 RPMTAG_AUTOPROV = 1104,
00327
00328 RPMTAG_CAPABILITY = 1105,
00329
00330 RPMTAG_SOURCEPACKAGE = 1106,
00331
00332 RPMTAG_OLDORIGFILENAMES = 1107,
00333
00334 RPMTAG_BUILDPREREQ = 1108,
00335 RPMTAG_BUILDREQUIRES = 1109,
00336 RPMTAG_BUILDCONFLICTS = 1110,
00337
00338 RPMTAG_BUILDMACROS = 1111,
00339
00340 RPMTAG_PROVIDEFLAGS = 1112,
00341 RPMTAG_PROVIDEVERSION = 1113,
00342 RPMTAG_OBSOLETEFLAGS = 1114,
00343 RPMTAG_OBSOLETEVERSION = 1115,
00344 RPMTAG_DIRINDEXES = 1116,
00345 RPMTAG_BASENAMES = 1117,
00346 RPMTAG_DIRNAMES = 1118,
00347 RPMTAG_ORIGDIRINDEXES = 1119,
00348 RPMTAG_ORIGBASENAMES = 1120,
00349 RPMTAG_ORIGDIRNAMES = 1121,
00350 RPMTAG_OPTFLAGS = 1122,
00351 RPMTAG_DISTURL = 1123,
00352 RPMTAG_PAYLOADFORMAT = 1124,
00353 RPMTAG_PAYLOADCOMPRESSOR = 1125,
00354 RPMTAG_PAYLOADFLAGS = 1126,
00355 RPMTAG_MULTILIBS = 1127,
00356 RPMTAG_INSTALLTID = 1128,
00357 RPMTAG_REMOVETID = 1129,
00358 RPMTAG_SHA1RHN = 1130,
00359 RPMTAG_RHNPLATFORM = 1131,
00360 RPMTAG_PLATFORM = 1132,
00361
00362 RPMTAG_FIRSTFREE_TAG
00363
00364 } rpmTag;
00365
00366 #define RPMTAG_EXTERNAL_TAG 1000000
00367
00371 typedef enum rpmfileState_e {
00372 RPMFILE_STATE_NORMAL = 0,
00373 RPMFILE_STATE_REPLACED = 1,
00374 RPMFILE_STATE_NOTINSTALLED = 2,
00375 RPMFILE_STATE_NETSHARED = 3
00376 } rpmfileState;
00377
00381 typedef enum rpmfileAttrs_e {
00382
00383 RPMFILE_NONE = 0,
00384
00385 RPMFILE_CONFIG = (1 << 0),
00386 RPMFILE_DOC = (1 << 1),
00387
00388 RPMFILE_DONOTUSE = (1 << 2),
00389
00390 RPMFILE_MISSINGOK = (1 << 3),
00391 RPMFILE_NOREPLACE = (1 << 4),
00392 RPMFILE_SPECFILE = (1 << 5),
00393 RPMFILE_GHOST = (1 << 6),
00394 RPMFILE_LICENSE = (1 << 7),
00395 RPMFILE_README = (1 << 8),
00396 RPMFILE_EXCLUDE = (1 << 9)
00397 } rpmfileAttrs;
00398 #define RPMFILE_MULTILIB_SHIFT 9
00399 #define RPMFILE_MULTILIB(N) ((N) << RPMFILE_MULTILIB_SHIFT)
00400 #define RPMFILE_MULTILIB_MASK RPMFILE_MULTILIB(7)
00401
00402 #define RPMFILE_ALL ~(RPMFILE_NONE)
00403
00404
00405 #define isFileMULTILIB(_fflags) ((_fflags) & RPMFILE_MULTILIB_MASK)
00406
00410 typedef enum rpmsenseFlags_e {
00411 RPMSENSE_ANY = 0,
00412
00413 RPMSENSE_SERIAL = (1 << 0),
00414
00415 RPMSENSE_LESS = (1 << 1),
00416 RPMSENSE_GREATER = (1 << 2),
00417 RPMSENSE_EQUAL = (1 << 3),
00418 RPMSENSE_PROVIDES = (1 << 4),
00419 RPMSENSE_CONFLICTS = (1 << 5),
00420 RPMSENSE_PREREQ = (1 << 6),
00421 RPMSENSE_OBSOLETES = (1 << 7),
00422 RPMSENSE_INTERP = (1 << 8),
00423 RPMSENSE_SCRIPT_PRE = ((1 << 9)|RPMSENSE_PREREQ),
00424 RPMSENSE_SCRIPT_POST = ((1 << 10)|RPMSENSE_PREREQ),
00425 RPMSENSE_SCRIPT_PREUN = ((1 << 11)|RPMSENSE_PREREQ),
00426 RPMSENSE_SCRIPT_POSTUN = ((1 << 12)|RPMSENSE_PREREQ),
00427 RPMSENSE_SCRIPT_VERIFY = (1 << 13),
00428 RPMSENSE_FIND_REQUIRES = (1 << 14),
00429 RPMSENSE_FIND_PROVIDES = (1 << 15),
00431 RPMSENSE_TRIGGERIN = (1 << 16),
00432 RPMSENSE_TRIGGERUN = (1 << 17),
00433 RPMSENSE_TRIGGERPOSTUN = (1 << 18),
00434 RPMSENSE_MULTILIB = (1 << 19),
00435 RPMSENSE_SCRIPT_PREP = (1 << 20),
00436 RPMSENSE_SCRIPT_BUILD = (1 << 21),
00437 RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00438 RPMSENSE_SCRIPT_CLEAN = (1 << 23),
00439 RPMSENSE_RPMLIB = ((1 << 24) | RPMSENSE_PREREQ),
00440
00441 RPMSENSE_TRIGGERPREIN = (1 << 25)
00442
00443
00444 } rpmsenseFlags;
00445
00446 #define RPMSENSE_SENSEMASK 15
00447
00448
00449 #define RPMSENSE_TRIGGER \
00450 (RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00451
00452 #define isDependsMULTILIB(_dflags) ((_dflags) & RPMSENSE_MULTILIB)
00453
00454 #define _ALL_REQUIRES_MASK (\
00455 RPMSENSE_INTERP | \
00456 RPMSENSE_SCRIPT_PRE | \
00457 RPMSENSE_SCRIPT_POST | \
00458 RPMSENSE_SCRIPT_PREUN | \
00459 RPMSENSE_SCRIPT_POSTUN | \
00460 RPMSENSE_SCRIPT_VERIFY | \
00461 RPMSENSE_FIND_REQUIRES | \
00462 RPMSENSE_SCRIPT_PREP | \
00463 RPMSENSE_SCRIPT_BUILD | \
00464 RPMSENSE_SCRIPT_INSTALL | \
00465 RPMSENSE_SCRIPT_CLEAN | \
00466 RPMSENSE_RPMLIB )
00467
00468 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
00469 #define _INSTALL_ONLY_MASK \
00470 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB)
00471 #define _ERASE_ONLY_MASK \
00472 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00473
00474 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00475 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
00476 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
00477
00478
00481
00482
00483 #define RPMVAR_OPTFLAGS 3
00484 #define RPMVAR_PROVIDES 38
00485 #define RPMVAR_INCLUDE 43
00486 #define RPMVAR_MACROFILES 49
00487
00488 #define RPMVAR_NUM 55
00489
00495
00496 extern const char * rpmGetVar(int var)
00497 ;
00498
00499
00505 void rpmSetVar(int var, const char * val)
00506 ;
00507
00513
00514 extern const char * macrofiles;
00515
00516
00521 enum rpm_machtable_e {
00522 RPM_MACHTABLE_INSTARCH = 0,
00523 RPM_MACHTABLE_INSTOS = 1,
00524 RPM_MACHTABLE_BUILDARCH = 2,
00525 RPM_MACHTABLE_BUILDOS = 3
00526 };
00527 #define RPM_MACHTABLE_COUNT 4
00535 int rpmReadConfigFiles( const char * file,
00536 const char * target)
00537 ;
00538
00544 int rpmReadRC( const char * rcfiles)
00545 ;
00546
00553 void rpmGetArchInfo( const char ** name,
00554 int * num)
00555 ;
00556
00563 void rpmGetOsInfo( const char ** name,
00564 int * num)
00565 ;
00566
00580 int rpmMachineScore(int type, const char * name)
00581 ;
00582
00588 int rpmShowRC(FILE * fp)
00589 ;
00590
00598 void rpmSetTables(int archTable, int osTable)
00599 ;
00600
00611 void rpmSetMachine( const char * arch, const char * os)
00612 ;
00613
00622
00623 void rpmGetMachine( const char **arch,
00624 const char **os)
00625 ;
00626
00631 void rpmFreeRpmrc(void)
00632 ;
00633
00635
00638
00641 typedef struct rpmdb_s * rpmdb;
00642
00645 typedef struct _dbiIndexSet * dbiIndexSet;
00646
00650 extern int * dbiTags;
00651 extern int dbiTagsMax;
00652
00661 int rpmdbOpen ( const char * root, rpmdb * dbp,
00662 int mode, int perms)
00663 ;
00664
00671 int rpmdbInit( const char * root, int perms)
00672 ;
00673
00679 int rpmdbVerify( const char * root)
00680 ;
00681
00687 int rpmdbClose ( rpmdb rpmdb)
00688 ;
00689
00695 int rpmdbSync ( rpmdb rpmdb)
00696 ;
00697
00703 int rpmdbOpenAll ( rpmdb db)
00704 ;
00705
00712 int rpmdbCountPackages( rpmdb db, const char * name)
00713 ;
00714
00717 typedef struct _rpmdbMatchIterator * rpmdbMatchIterator;
00718
00724 rpmdbMatchIterator rpmdbFreeIterator(
00725 rpmdbMatchIterator mi)
00726 ;
00727
00733 rpmdb rpmdbGetIteratorRpmDB(
00734 rpmdbMatchIterator mi)
00735 ;
00736
00742 unsigned int rpmdbGetIteratorOffset( rpmdbMatchIterator mi)
00743 ;
00744
00750 int rpmdbGetIteratorCount( rpmdbMatchIterator mi)
00751 ;
00752
00760 int rpmdbAppendIterator( rpmdbMatchIterator mi,
00761 const int * hdrNums, int nHdrNums)
00762 ;
00763
00773 int rpmdbPruneIterator( rpmdbMatchIterator mi,
00774 int * hdrNums, int nHdrNums, int sorted)
00775 ;
00776
00780 typedef enum rpmMireMode_e {
00781 RPMMIRE_DEFAULT = 0,
00782 RPMMIRE_STRCMP = 1,
00783 RPMMIRE_REGEX = 2,
00784 RPMMIRE_GLOB = 3
00785 } rpmMireMode;
00786
00795 int rpmdbSetIteratorRE( rpmdbMatchIterator mi, rpmTag tag,
00796 rpmMireMode mode, const char * pattern)
00797 ;
00798
00809
00810 int rpmdbSetIteratorVersion( rpmdbMatchIterator mi,
00811 const char * version)
00812 ;
00813
00824
00825 int rpmdbSetIteratorRelease( rpmdbMatchIterator mi,
00826 const char * release)
00827 ;
00828
00836 int rpmdbSetIteratorRewrite( rpmdbMatchIterator mi, int rewrite)
00837 ;
00838
00845 int rpmdbSetIteratorModified( rpmdbMatchIterator mi, int modified)
00846 ;
00847
00853 Header rpmdbNextIterator( rpmdbMatchIterator mi)
00854 ;
00855
00857
00858 Header XrpmdbNextIterator(rpmdbMatchIterator mi,
00859 const char * f, unsigned int l)
00860 ;
00861
00870 rpmdbMatchIterator rpmdbInitIterator(
00871 rpmdb db, int rpmtag,
00872 const void * key, size_t keylen)
00873 ;
00874
00882 int rpmdbAdd( rpmdb db, int iid, Header h)
00883 ;
00884
00892 int rpmdbRemove( rpmdb db, int rid, unsigned int offset)
00893 ;
00894
00899 int rpmdbRebuild( const char * root)
00900 ;
00901
00903
00906
00910 typedef enum rpmProblemType_e {
00911 RPMPROB_BADARCH,
00912 RPMPROB_BADOS,
00913 RPMPROB_PKG_INSTALLED,
00914 RPMPROB_BADRELOCATE,
00915 RPMPROB_REQUIRES,
00916 RPMPROB_CONFLICT,
00917 RPMPROB_NEW_FILE_CONFLICT,
00918 RPMPROB_FILE_CONFLICT,
00919 RPMPROB_OLDPACKAGE,
00920 RPMPROB_DISKSPACE,
00921 RPMPROB_DISKNODES,
00922 RPMPROB_BADPRETRANS
00923 } rpmProblemType;
00924
00927 typedef struct rpmProblem_s {
00928 const char * pkgNEVR;
00929 const char * altNEVR;
00930 const void * key;
00931 Header h;
00932 rpmProblemType type;
00933 int ignoreProblem;
00934 const char * str1;
00935 unsigned long ulong1;
00936 } * rpmProblem;
00937
00940 typedef struct rpmProblemSet_s {
00941 int numProblems;
00942 int numProblemsAlloced;
00943 rpmProblem probs;
00944 } * rpmProblemSet;
00945
00948 void printDepFlags(FILE *fp, const char *version, int flags)
00949 ;
00950
00954 typedef struct rpmDependencyConflict_s {
00955 const char * byName;
00956 const char * byVersion;
00957 const char * byRelease;
00958 Header byHeader;
00959
00960
00961
00962
00963 const char * needsName;
00964 const char * needsVersion;
00965 int needsFlags;
00966 const void ** suggestedPackages;
00967 enum {
00968 RPMDEP_SENSE_REQUIRES,
00969 RPMDEP_SENSE_CONFLICTS
00970 } sense;
00971 } * rpmDependencyConflict;
00972
00979 void printDepProblems(FILE * fp, const rpmDependencyConflict conflicts,
00980 int numConflicts)
00981 ;
00982
00989
00990 extern const char * rpmProblemString(const rpmProblem prob)
00991 ;
00992
00993
01000 void rpmProblemPrint(FILE *fp, rpmProblem prob)
01001 ;
01002
01008 void rpmProblemSetPrint(FILE *fp, rpmProblemSet probs)
01009 ;
01010
01015 void rpmProblemSetFree( rpmProblemSet probs)
01016 ;
01017
01019
01028 typedef
01029 void * (*HFD_t) ( const void * data, rpmTagType type)
01030 ;
01031
01045 typedef int (*HGE_t) (Header h, rpmTag tag,
01046 rpmTagType * type,
01047 void ** p,
01048 int_32 * c)
01049 ;
01050
01065 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
01066 const void * p, int_32 c)
01067 ;
01068
01079 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
01080 const void * p, int_32 c)
01081 ;
01082
01093 typedef int (*HRE_t) (Header h, int_32 tag)
01094 ;
01095
01099 typedef struct rpmRelocation_s {
01100 const char * oldPath;
01102 const char * newPath;
01104 } rpmRelocation;
01105
01116 rpmRC rpmInstallSourcePackage( const char * rootDir, FD_t fd,
01117 const char ** specFilePtr,
01118 rpmCallbackFunction notify,
01119 rpmCallbackData notifyData,
01120 char ** cookie)
01121 ;
01122
01129 int rpmVersionCompare(Header first, Header second)
01130 ;
01131
01135 typedef enum fileAction_e {
01136 FA_UNKNOWN = 0,
01137 FA_CREATE,
01138 FA_COPYIN,
01139 FA_COPYOUT,
01140 FA_BACKUP,
01141 FA_SAVE,
01142 FA_SKIP,
01143 FA_ALTNAME,
01144 FA_ERASE,
01145 FA_SKIPNSTATE,
01146 FA_SKIPNETSHARED,
01147 FA_SKIPMULTILIB,
01148 } fileAction;
01149
01150 #define XFA_SKIPPING(_a) \
01151 ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPMULTILIB)
01152
01160 typedef enum fileTypes_e {
01161 PIPE = 1,
01162 CDEV = 2,
01163 XDIR = 4,
01164 BDEV = 6,
01165 REG = 8,
01166 LINK = 10,
01167 SOCK = 12,
01168 } fileTypes;
01169
01173 typedef struct fsmIterator_s * FSMI_t;
01174
01178 typedef struct fsm_s * FSM_t;
01179
01183 typedef struct psm_s * PSM_t;
01184
01187 typedef struct transactionFileInfo_s * TFI_t;
01188
01195 typedef struct rpmTransactionSet_s * rpmTransactionSet;
01196
01203 rpmTransactionSet rpmtransCreateSet(
01204 rpmdb rpmdb,
01205 const char * rootDir)
01206 ;
01207
01224 int rpmtransAddPackage(rpmTransactionSet ts, Header h, FD_t fd,
01225 const void * key, int upgrade,
01226 rpmRelocation * relocs)
01227 ;
01228
01235
01236 void rpmtransAvailablePackage(rpmTransactionSet ts, Header h,
01237 const void * key)
01238 ;
01239
01246 int rpmtransRemovePackage(rpmTransactionSet ts, int dboffset)
01247 ;
01248
01254 rpmTransactionSet
01255 rpmtransFree( rpmTransactionSet ts)
01256 ;
01257
01263
01264 void rpmtransSetScriptFd(rpmTransactionSet ts, FD_t fd)
01265 ;
01266
01275
01276 int rpmtransGetKeys(const rpmTransactionSet ts,
01277 const void *** ep,
01278 int * nep)
01279 ;
01280
01288 int rpmdepCheck(rpmTransactionSet ts,
01289 rpmDependencyConflict * conflicts,
01290 int * numConflicts)
01291 ;
01292
01312 int rpmdepOrder(rpmTransactionSet ts)
01313 ;
01314
01321 rpmDependencyConflict rpmdepFreeConflicts(
01322 rpmDependencyConflict conflicts,
01323 int numConflicts)
01324 ;
01325
01329 typedef enum rpmtransFlags_e {
01330 RPMTRANS_FLAG_NONE = 0,
01331 RPMTRANS_FLAG_TEST = (1 << 0),
01332 RPMTRANS_FLAG_BUILD_PROBS = (1 << 1),
01333 RPMTRANS_FLAG_NOSCRIPTS = (1 << 2),
01334 RPMTRANS_FLAG_JUSTDB = (1 << 3),
01335 RPMTRANS_FLAG_NOTRIGGERS = (1 << 4),
01336 RPMTRANS_FLAG_NODOCS = (1 << 5),
01337 RPMTRANS_FLAG_ALLFILES = (1 << 6),
01338
01339 RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7),
01340
01341 RPMTRANS_FLAG_MULTILIB = (1 << 8),
01342 RPMTRANS_FLAG_DIRSTASH = (1 << 9),
01343 RPMTRANS_FLAG_REPACKAGE = (1 << 10),
01345 RPMTRANS_FLAG_PKGCOMMIT = (1 << 11),
01346
01347 RPMTRANS_FLAG_PKGUNDO = (1 << 12),
01348
01349 RPMTRANS_FLAG_COMMIT = (1 << 13),
01350
01351 RPMTRANS_FLAG_UNDO = (1 << 14),
01352
01353 RPMTRANS_FLAG_REVERSE = (1 << 15),
01354
01355 RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),
01356 RPMTRANS_FLAG_NOPRE = (1 << 17),
01357 RPMTRANS_FLAG_NOPOST = (1 << 18),
01358 RPMTRANS_FLAG_NOTRIGGERIN = (1 << 19),
01359 RPMTRANS_FLAG_NOTRIGGERUN = (1 << 20),
01360 RPMTRANS_FLAG_NOPREUN = (1 << 21),
01361 RPMTRANS_FLAG_NOPOSTUN = (1 << 22),
01362 RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),
01363
01364 RPMTRANS_FLAG_NOPAYLOAD = (1 << 24),
01365
01366 RPMTRANS_FLAG_APPLYONLY = (1 << 25),
01367
01368 RPMTRANS_FLAG_CHAINSAW = (1 << 26),
01369 } rpmtransFlags;
01370
01371 #define _noTransScripts \
01372 ( RPMTRANS_FLAG_NOPRE | \
01373 RPMTRANS_FLAG_NOPOST | \
01374 RPMTRANS_FLAG_NOPREUN | \
01375 RPMTRANS_FLAG_NOPOSTUN \
01376 )
01377
01378 #define _noTransTriggers \
01379 ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
01380 RPMTRANS_FLAG_NOTRIGGERIN | \
01381 RPMTRANS_FLAG_NOTRIGGERUN | \
01382 RPMTRANS_FLAG_NOTRIGGERPOSTUN \
01383 )
01384
01392
01393 int rpmGetRpmlibProvides( const char *** provNames,
01394 int ** provFlags,
01395 const char *** provVersions)
01396 ;
01397
01405 int rpmvercmp(const char * a, const char * b)
01406 ;
01407
01418 int rpmRangesOverlap(const char * AName, const char * AEVR, int AFlags,
01419 const char * BName, const char * BEVR, int BFlags)
01420 ;
01421
01429 int rpmCheckRpmlibProvides(const char * keyName, const char * keyEVR,
01430 int keyFlags) ;
01431
01436 void rpmShowRpmlibProvides(FILE * fp)
01437 ;
01438
01442 typedef enum rpmprobFilterFlags_e {
01443 RPMPROB_FILTER_NONE = 0,
01444 RPMPROB_FILTER_IGNOREOS = (1 << 0),
01445 RPMPROB_FILTER_IGNOREARCH = (1 << 1),
01446 RPMPROB_FILTER_REPLACEPKG = (1 << 2),
01447 RPMPROB_FILTER_FORCERELOCATE= (1 << 3),
01448 RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),
01449 RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),
01450 RPMPROB_FILTER_OLDPACKAGE = (1 << 6),
01451 RPMPROB_FILTER_DISKSPACE = (1 << 7),
01452 RPMPROB_FILTER_DISKNODES = (1 << 8)
01453 } rpmprobFilterFlags;
01454
01466 int rpmRunTransactions(rpmTransactionSet ts,
01467 rpmCallbackFunction notify,
01468 rpmCallbackData notifyData,
01469 rpmProblemSet okProbs,
01470 rpmProblemSet * newProbs,
01471 rpmtransFlags transFlags,
01472 rpmprobFilterFlags ignoreSet)
01473 ;
01474
01482
01483 extern const char *const tagName(int tag)
01484 ;
01485
01486
01492 int tagValue(const char *tagstr)
01493 ;
01494
01495 #define RPMLEAD_BINARY 0
01496 #define RPMLEAD_SOURCE 1
01497
01498 #define RPMLEAD_MAGIC0 0xed
01499 #define RPMLEAD_MAGIC1 0xab
01500 #define RPMLEAD_MAGIC2 0xee
01501 #define RPMLEAD_MAGIC3 0xdb
01502
01503 #define RPMLEAD_SIZE 96
01511 struct rpmlead {
01512 unsigned char magic[4];
01513 unsigned char major, minor;
01514 short type;
01515 short archnum;
01516 char name[66];
01517 short osnum;
01518 short signature_type;
01519 char reserved[16];
01520 } ;
01521
01525 void freeFilesystems(void)
01526 ;
01527
01534 int rpmGetFilesystemList( const char *** listptr,
01535 int * num)
01536 ;
01537
01547 int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes,
01548 int numFiles, uint_32 ** usagesPtr,
01549 int flags)
01550 ;
01551
01552
01555
01558 typedef struct rpmQVArguments_s * QVA_t;
01559
01564 typedef enum rpmQVSources_e {
01565 RPMQV_PACKAGE = 0,
01566 RPMQV_PATH,
01567 RPMQV_ALL,
01568 RPMQV_RPM,
01569 RPMQV_GROUP,
01570 RPMQV_WHATPROVIDES,
01571 RPMQV_WHATREQUIRES,
01572 RPMQV_TRIGGEREDBY,
01573 RPMQV_DBOFFSET,
01574 RPMQV_SPECFILE
01575 } rpmQVSources;
01576
01581 typedef enum rpmVerifyAttrs_e {
01582 RPMVERIFY_NONE = 0,
01583 RPMVERIFY_MD5 = (1 << 0),
01584 RPMVERIFY_FILESIZE = (1 << 1),
01585 RPMVERIFY_LINKTO = (1 << 2),
01586 RPMVERIFY_USER = (1 << 3),
01587 RPMVERIFY_GROUP = (1 << 4),
01588 RPMVERIFY_MTIME = (1 << 5),
01589 RPMVERIFY_MODE = (1 << 6),
01590 RPMVERIFY_RDEV = (1 << 7),
01591
01592
01593
01594
01595 RPMVERIFY_READLINKFAIL= (1 << 28),
01596 RPMVERIFY_READFAIL = (1 << 29),
01597 RPMVERIFY_LSTATFAIL = (1 << 30)
01598
01599 } rpmVerifyAttrs;
01600 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
01601
01612 int rpmVerifyFile(const char * root, Header h, int filenum,
01613 rpmVerifyAttrs * result, rpmVerifyAttrs omitMask)
01614 ;
01615
01624 int rpmVerifyScript(const char * rootDir, Header h, FD_t scriptFd)
01625 ;
01626
01628
01631
01632
01637 typedef enum rpmInstallInterfaceFlags_e {
01638 INSTALL_NONE = 0,
01639 INSTALL_PERCENT = (1 << 0),
01640 INSTALL_HASH = (1 << 1),
01641 INSTALL_NODEPS = (1 << 2),
01642 INSTALL_NOORDER = (1 << 3),
01643 INSTALL_LABEL = (1 << 4),
01644 INSTALL_UPGRADE = (1 << 5),
01645 INSTALL_FRESHEN = (1 << 6),
01646 INSTALL_INSTALL = (1 << 7),
01647 INSTALL_ERASE = (1 << 8)
01648 } rpmInstallInterfaceFlags;
01649
01653 typedef enum rpmEraseInterfaceFlags_e {
01654 UNINSTALL_NONE = 0,
01655 UNINSTALL_NODEPS = (1 << 0),
01656 UNINSTALL_ALLMATCHES= (1 << 1)
01657 } rpmEraseInterfaceFlags;
01658
01660
01663
01667
01668 enum rpmtagSignature {
01669 RPMSIGTAG_SIZE = 1000,
01670
01671 RPMSIGTAG_LEMD5_1 = 1001,
01672 RPMSIGTAG_PGP = 1002,
01673 RPMSIGTAG_LEMD5_2 = 1003,
01674 RPMSIGTAG_MD5 = 1004,
01675 RPMSIGTAG_GPG = 1005,
01676 RPMSIGTAG_PGP5 = 1006,
01678
01679
01680 RPMTAG_PK_BASE = 512,
01681 RPMTAG_PK_RSA_ES = RPMTAG_PK_BASE+1,
01682 RPMTAG_PK_RSA_E = RPMTAG_PK_BASE+2,
01683 RPMTAG_PK_RSA_S = RPMTAG_PK_BASE+3,
01684 RPMTAG_PK_ELGAMAL_E = RPMTAG_PK_BASE+16,
01685 RPMTAG_PK_DSA = RPMTAG_PK_BASE+17,
01686 RPMTAG_PK_ELLIPTIC = RPMTAG_PK_BASE+18,
01687 RPMTAG_PK_ECDSA = RPMTAG_PK_BASE+19,
01688 RPMTAG_PK_ELGAMAL_ES= RPMTAG_PK_BASE+20,
01689 RPMTAG_PK_DH = RPMTAG_PK_BASE+21,
01691 RPMTAG_HASH_BASE = 512+64,
01692 RPMTAG_HASH_MD5 = RPMTAG_HASH_BASE+1,
01693 RPMTAG_HASH_SHA1 = RPMTAG_HASH_BASE+2,
01694 RPMTAG_HASH_RIPEMD160= RPMTAG_HASH_BASE+3,
01695 RPMTAG_HASH_MD2 = RPMTAG_HASH_BASE+5,
01696 RPMTAG_HASH_TIGER192= RPMTAG_HASH_BASE+6,
01697 RPMTAG_HASH_HAVAL_5_160= RPMTAG_HASH_BASE+7
01698 };
01699
01700
01704 typedef enum rpmVerifySignatureReturn_e {
01705 RPMSIG_OK = 0,
01706 RPMSIG_UNKNOWN = 1,
01707 RPMSIG_BAD = 2,
01708 RPMSIG_NOKEY = 3,
01709 RPMSIG_NOTTRUSTED = 4
01710 } rpmVerifySignatureReturn;
01711
01721 rpmVerifySignatureReturn rpmVerifySignature(const char *file,
01722 int_32 sigTag, const void * sig, int count,
01723 char * result)
01724 ;
01725
01731 Header rpmFreeSignature( Header h)
01732 ;
01733
01736 #ifdef __cplusplus
01737 }
01738 #endif
01739
01740 #endif