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
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00030 int rpmReadPackageInfo(FD_t fd, Header * signatures,
00031 Header * hdr) ;
00032
00042 int rpmReadPackageHeader(FD_t fd, Header * hdr,
00043 int * isSource, int * major,
00044 int * minor)
00045 ;
00046
00055 int headerNVR(Header h, const char **np, const char **vp,
00056 const char **rp) ;
00057
00063 void headerMergeLegacySigs(Header h, const Header sig)
00064 ;
00065
00079 void rpmBuildFileList(Header h, const char *** fileListPtr,
00080 int * fileCountPtr)
00081 ;
00082
00096 int rpmHeaderGetEntry(Header h, int_32 tag, int_32 *type,
00097 void **p, int_32 *c)
00098 ;
00099
00115 int rpmPackageGetEntry(void *leadp, Header sigs, Header h,
00116 int_32 tag, int_32 *type, void **p, int_32 *c)
00117 ;
00118
00122 extern const struct headerTagTableEntry rpmTagTable[];
00123
00127 extern const int rpmTagTableSize;
00128
00133 extern const struct headerSprintfExtension rpmHeaderFormats[];
00134
00138 #define RPMDBI_PACKAGES 0
00139 #define RPMDBI_DEPENDS 1
00140 #define RPMDBI_LABEL 2
00141 #define RPMDBI_ADDED 3
00142 #define RPMDBI_REMOVED 4
00143 #define RPMDBI_AVAILABLE 5
00149 typedef enum rpmTag_e {
00150
00151 RPMTAG_HEADERIMAGE = HEADER_IMAGE,
00152 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES,
00153 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE,
00154 RPMTAG_HEADERREGIONS = HEADER_REGIONS,
00156 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE,
00158
00159
00160
00161 RPMTAG_SIG_BASE = HEADER_SIGBASE,
00162 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1,
00163 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2,
00164 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3,
00165 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4,
00166 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5,
00167 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6,
00168 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7,
00170 RPMTAG_NAME = 1000,
00171 RPMTAG_VERSION = 1001,
00172 RPMTAG_RELEASE = 1002,
00173 RPMTAG_EPOCH = 1003,
00174 #define RPMTAG_SERIAL RPMTAG_EPOCH
00175 RPMTAG_SUMMARY = 1004,
00176 RPMTAG_DESCRIPTION = 1005,
00177 RPMTAG_BUILDTIME = 1006,
00178 RPMTAG_BUILDHOST = 1007,
00179 RPMTAG_INSTALLTIME = 1008,
00180 RPMTAG_SIZE = 1009,
00181 RPMTAG_DISTRIBUTION = 1010,
00182 RPMTAG_VENDOR = 1011,
00183 RPMTAG_GIF = 1012,
00184 RPMTAG_XPM = 1013,
00185 RPMTAG_LICENSE = 1014,
00186 #define RPMTAG_COPYRIGHT RPMTAG_LICENSE
00187 RPMTAG_PACKAGER = 1015,
00188 RPMTAG_GROUP = 1016,
00189 RPMTAG_CHANGELOG = 1017,
00190 RPMTAG_SOURCE = 1018,
00191 RPMTAG_PATCH = 1019,
00192 RPMTAG_URL = 1020,
00193 RPMTAG_OS = 1021,
00194 RPMTAG_ARCH = 1022,
00195 RPMTAG_PREIN = 1023,
00196 RPMTAG_POSTIN = 1024,
00197 RPMTAG_PREUN = 1025,
00198 RPMTAG_POSTUN = 1026,
00199 RPMTAG_OLDFILENAMES = 1027,
00200 RPMTAG_FILESIZES = 1028,
00201 RPMTAG_FILESTATES = 1029,
00202 RPMTAG_FILEMODES = 1030,
00203 RPMTAG_FILEUIDS = 1031,
00204 RPMTAG_FILEGIDS = 1032,
00205 RPMTAG_FILERDEVS = 1033,
00206 RPMTAG_FILEMTIMES = 1034,
00207 RPMTAG_FILEMD5S = 1035,
00208 RPMTAG_FILELINKTOS = 1036,
00209 RPMTAG_FILEFLAGS = 1037,
00210 RPMTAG_ROOT = 1038,
00211 RPMTAG_FILEUSERNAME = 1039,
00212 RPMTAG_FILEGROUPNAME = 1040,
00213 RPMTAG_EXCLUDE = 1041,
00214 RPMTAG_EXCLUSIVE = 1042,
00215 RPMTAG_ICON = 1043,
00216 RPMTAG_SOURCERPM = 1044,
00217 RPMTAG_FILEVERIFYFLAGS = 1045,
00218 RPMTAG_ARCHIVESIZE = 1046,
00219 RPMTAG_PROVIDENAME = 1047,
00220 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
00221 RPMTAG_REQUIREFLAGS = 1048,
00222 RPMTAG_REQUIRENAME = 1049,
00223 RPMTAG_REQUIREVERSION = 1050,
00224 RPMTAG_NOSOURCE = 1051,
00225 RPMTAG_NOPATCH = 1052,
00226 RPMTAG_CONFLICTFLAGS = 1053,
00227 RPMTAG_CONFLICTNAME = 1054,
00228 RPMTAG_CONFLICTVERSION = 1055,
00229 RPMTAG_DEFAULTPREFIX = 1056,
00230 RPMTAG_BUILDROOT = 1057,
00231 RPMTAG_INSTALLPREFIX = 1058,
00232 RPMTAG_EXCLUDEARCH = 1059,
00233 RPMTAG_EXCLUDEOS = 1060,
00234 RPMTAG_EXCLUSIVEARCH = 1061,
00235 RPMTAG_EXCLUSIVEOS = 1062,
00236 RPMTAG_AUTOREQPROV = 1063,
00237 RPMTAG_RPMVERSION = 1064,
00238 RPMTAG_TRIGGERSCRIPTS = 1065,
00239 RPMTAG_TRIGGERNAME = 1066,
00240 RPMTAG_TRIGGERVERSION = 1067,
00241 RPMTAG_TRIGGERFLAGS = 1068,
00242 RPMTAG_TRIGGERINDEX = 1069,
00243 RPMTAG_VERIFYSCRIPT = 1079,
00244 RPMTAG_CHANGELOGTIME = 1080,
00245 RPMTAG_CHANGELOGNAME = 1081,
00246 RPMTAG_CHANGELOGTEXT = 1082,
00247 RPMTAG_BROKENMD5 = 1083,
00248 RPMTAG_PREREQ = 1084,
00249 RPMTAG_PREINPROG = 1085,
00250 RPMTAG_POSTINPROG = 1086,
00251 RPMTAG_PREUNPROG = 1087,
00252 RPMTAG_POSTUNPROG = 1088,
00253 RPMTAG_BUILDARCHS = 1089,
00254 RPMTAG_OBSOLETENAME = 1090,
00255 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
00256 RPMTAG_VERIFYSCRIPTPROG = 1091,
00257 RPMTAG_TRIGGERSCRIPTPROG = 1092,
00258 RPMTAG_DOCDIR = 1093,
00259 RPMTAG_COOKIE = 1094,
00260 RPMTAG_FILEDEVICES = 1095,
00261 RPMTAG_FILEINODES = 1096,
00262 RPMTAG_FILELANGS = 1097,
00263 RPMTAG_PREFIXES = 1098,
00264 RPMTAG_INSTPREFIXES = 1099,
00265 RPMTAG_TRIGGERIN = 1100,
00266 RPMTAG_TRIGGERUN = 1101,
00267 RPMTAG_TRIGGERPOSTUN = 1102,
00268 RPMTAG_AUTOREQ = 1103,
00269 RPMTAG_AUTOPROV = 1104,
00270 RPMTAG_CAPABILITY = 1105,
00271 RPMTAG_SOURCEPACKAGE = 1106,
00272 RPMTAG_OLDORIGFILENAMES = 1107,
00273 RPMTAG_BUILDPREREQ = 1108,
00274 RPMTAG_BUILDREQUIRES = 1109,
00275 RPMTAG_BUILDCONFLICTS = 1110,
00276 RPMTAG_BUILDMACROS = 1111,
00277 RPMTAG_PROVIDEFLAGS = 1112,
00278 RPMTAG_PROVIDEVERSION = 1113,
00279 RPMTAG_OBSOLETEFLAGS = 1114,
00280 RPMTAG_OBSOLETEVERSION = 1115,
00281 RPMTAG_DIRINDEXES = 1116,
00282 RPMTAG_BASENAMES = 1117,
00283 RPMTAG_DIRNAMES = 1118,
00284 RPMTAG_ORIGDIRINDEXES = 1119,
00285 RPMTAG_ORIGBASENAMES = 1120,
00286 RPMTAG_ORIGDIRNAMES = 1121,
00287 RPMTAG_OPTFLAGS = 1122,
00288 RPMTAG_DISTURL = 1123,
00289 RPMTAG_PAYLOADFORMAT = 1124,
00290 RPMTAG_PAYLOADCOMPRESSOR = 1125,
00291 RPMTAG_PAYLOADFLAGS = 1126,
00292 RPMTAG_MULTILIBS = 1127,
00293 RPMTAG_INSTALLTID = 1128,
00294 RPMTAG_REMOVETID = 1129,
00295 RPMTAG_FIRSTFREE_TAG
00296 } rpmTag;
00297
00298 #define RPMTAG_EXTERNAL_TAG 1000000
00299
00303 typedef enum rpmfileStates_e {
00304 RPMFILE_STATE_NORMAL = 0,
00305 RPMFILE_STATE_REPLACED = 1,
00306 RPMFILE_STATE_NOTINSTALLED = 2,
00307 RPMFILE_STATE_NETSHARED = 3
00308 } rpmfileStates;
00309
00313 typedef enum rpmfileAttrs_e {
00314 RPMFILE_CONFIG = (1 << 0),
00315 RPMFILE_DOC = (1 << 1),
00316 RPMFILE_DONOTUSE = (1 << 2),
00317 RPMFILE_MISSINGOK = (1 << 3),
00318 RPMFILE_NOREPLACE = (1 << 4),
00319 RPMFILE_SPECFILE = (1 << 5),
00320 RPMFILE_GHOST = (1 << 6),
00321 RPMFILE_LICENSE = (1 << 7),
00322 RPMFILE_README = (1 << 8)
00323 } rpmfileAttrs;
00324 #define RPMFILE_MULTILIB_SHIFT 9
00325 #define RPMFILE_MULTILIB(N) ((N) << RPMFILE_MULTILIB_SHIFT)
00326 #define RPMFILE_MULTILIB_MASK RPMFILE_MULTILIB(7)
00327
00328
00329 #define isFileMULTILIB(_fflags) ((_fflags) & RPMFILE_MULTILIB_MASK)
00330
00334 typedef enum rpmsenseFlags_e {
00335 RPMSENSE_ANY = 0,
00336 RPMSENSE_SERIAL = (1 << 0),
00337 RPMSENSE_LESS = (1 << 1),
00338 RPMSENSE_GREATER = (1 << 2),
00339 RPMSENSE_EQUAL = (1 << 3),
00340 RPMSENSE_PROVIDES = (1 << 4),
00341 RPMSENSE_CONFLICTS = (1 << 5),
00342 RPMSENSE_PREREQ = (1 << 6),
00343 RPMSENSE_OBSOLETES = (1 << 7),
00344 RPMSENSE_INTERP = (1 << 8),
00345 RPMSENSE_SCRIPT_PRE = ((1 << 9)|RPMSENSE_PREREQ),
00346 RPMSENSE_SCRIPT_POST = ((1 << 10)|RPMSENSE_PREREQ),
00347 RPMSENSE_SCRIPT_PREUN = ((1 << 11)|RPMSENSE_PREREQ),
00348 RPMSENSE_SCRIPT_POSTUN = ((1 << 12)|RPMSENSE_PREREQ),
00349 RPMSENSE_SCRIPT_VERIFY = (1 << 13),
00350 RPMSENSE_FIND_REQUIRES = (1 << 14),
00351 RPMSENSE_FIND_PROVIDES = (1 << 15),
00353 RPMSENSE_TRIGGERIN = (1 << 16),
00354 RPMSENSE_TRIGGERUN = (1 << 17),
00355 RPMSENSE_TRIGGERPOSTUN = (1 << 18),
00356 RPMSENSE_MULTILIB = (1 << 19),
00357 RPMSENSE_SCRIPT_PREP = (1 << 20),
00358 RPMSENSE_SCRIPT_BUILD = (1 << 21),
00359 RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00360 RPMSENSE_SCRIPT_CLEAN = (1 << 23),
00361 RPMSENSE_RPMLIB = ((1 << 24) | RPMSENSE_PREREQ),
00362 RPMSENSE_TRIGGERPREIN = (1 << 25)
00364 } rpmsenseFlags;
00365
00366 #define RPMSENSE_SENSEMASK 15
00367
00368
00369 #define RPMSENSE_TRIGGER \
00370 (RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00371
00372 #define isDependsMULTILIB(_dflags) ((_dflags) & RPMSENSE_MULTILIB)
00373
00374 #define _ALL_REQUIRES_MASK (\
00375 RPMSENSE_INTERP | \
00376 RPMSENSE_SCRIPT_PRE | \
00377 RPMSENSE_SCRIPT_POST | \
00378 RPMSENSE_SCRIPT_PREUN | \
00379 RPMSENSE_SCRIPT_POSTUN | \
00380 RPMSENSE_SCRIPT_VERIFY | \
00381 RPMSENSE_FIND_REQUIRES | \
00382 RPMSENSE_SCRIPT_PREP | \
00383 RPMSENSE_SCRIPT_BUILD | \
00384 RPMSENSE_SCRIPT_INSTALL | \
00385 RPMSENSE_SCRIPT_CLEAN | \
00386 RPMSENSE_RPMLIB )
00387
00388 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
00389 #define _INSTALL_ONLY_MASK \
00390 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB)
00391 #define _ERASE_ONLY_MASK \
00392 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00393
00394 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00395 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
00396 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
00397
00398
00401
00402
00403 #define RPMVAR_OPTFLAGS 3
00404 #define RPMVAR_PROVIDES 38
00405 #define RPMVAR_INCLUDE 43
00406 #define RPMVAR_MACROFILES 49
00407
00408 #define RPMVAR_NUM 55
00409
00415 const char * rpmGetVar(int var);
00416
00422 void rpmSetVar(int var, const char *val);
00423
00429 extern const char * macrofiles;
00430
00435 enum rpm_machtable_e {
00436 RPM_MACHTABLE_INSTARCH = 0,
00437 RPM_MACHTABLE_INSTOS = 1,
00438 RPM_MACHTABLE_BUILDARCH = 2,
00439 RPM_MACHTABLE_BUILDOS = 3
00440 };
00441 #define RPM_MACHTABLE_COUNT 4
00449 int rpmReadConfigFiles(const char * file, const char * target);
00450
00456 int rpmReadRC(const char * file);
00457
00464 void rpmGetArchInfo( const char ** name, int * num);
00465
00472 void rpmGetOsInfo( const char ** name, int * num);
00473
00487 int rpmMachineScore(int type, const char * name);
00488
00494 int rpmShowRC(FILE *f);
00495
00502 void rpmSetTables(int archTable, int osTable);
00503
00514 void rpmSetMachine(const char * arch, const char * os);
00515
00524 void rpmGetMachine( const char **arch, const char **os);
00525
00530 void rpmFreeRpmrc(void);
00531
00533
00538 typedef struct rpmdb_s * rpmdb;
00539
00542 typedef struct _dbiIndexSet * dbiIndexSet;
00543
00552 int rpmdbOpen (const char * root, rpmdb * dbp, int mode, int perms);
00553
00560 int rpmdbInit(const char * root, int perms);
00561
00567 int rpmdbClose ( rpmdb rpmdb);
00568
00574 int rpmdbSync (rpmdb rpmdb);
00575
00581 int rpmdbOpenAll (rpmdb rpmdb);
00582
00589 int rpmdbCountPackages(rpmdb db, const char *name);
00590
00593 typedef struct _rpmdbMatchIterator * rpmdbMatchIterator;
00594
00599 void rpmdbFreeIterator( rpmdbMatchIterator mi);
00600
00606 rpmdb rpmdbGetIteratorRpmDB(rpmdbMatchIterator mi);
00607
00613 unsigned int rpmdbGetIteratorOffset(rpmdbMatchIterator mi);
00614
00620 int rpmdbGetIteratorCount(rpmdbMatchIterator mi);
00621
00629 int rpmdbAppendIterator(rpmdbMatchIterator mi, int * hdrNums, int nHdrNums);
00630
00639 int rpmdbPruneIterator(rpmdbMatchIterator mi, int * hdrNums,
00640 int nHdrNums, int sorted);
00641
00648 void rpmdbSetIteratorVersion(rpmdbMatchIterator mi, const char * version);
00649
00656 void rpmdbSetIteratorRelease(rpmdbMatchIterator mi, const char * release);
00657
00664 int rpmdbSetIteratorModified(rpmdbMatchIterator mi, int modified);
00665
00671 Header rpmdbNextIterator(rpmdbMatchIterator mi);
00672 #define rpmdbNextIterator(_a) \
00673 XrpmdbNextIterator(_a, __FILE__, __LINE__)
00674 Header XrpmdbNextIterator(rpmdbMatchIterator mi, const char * f, unsigned int l);
00675
00684 rpmdbMatchIterator rpmdbInitIterator(
00685 rpmdb rpmdb, int rpmtag,
00686 const void * key, size_t keylen);
00687
00695 int rpmdbAdd(rpmdb rpmdb, int iid, Header h);
00696
00704 int rpmdbRemove(rpmdb db, int rid, unsigned int offset);
00705
00710 int rpmdbRebuild(const char * root);
00711
00713
00716
00720 typedef enum rpmProblemType_e {
00721 RPMPROB_BADARCH,
00722 RPMPROB_BADOS,
00723 RPMPROB_PKG_INSTALLED,
00724 RPMPROB_BADRELOCATE,
00725 RPMPROB_REQUIRES,
00726 RPMPROB_CONFLICT,
00727 RPMPROB_NEW_FILE_CONFLICT,
00728 RPMPROB_FILE_CONFLICT,
00729 RPMPROB_OLDPACKAGE,
00730 RPMPROB_DISKSPACE,
00731 RPMPROB_DISKNODES,
00732 RPMPROB_BADPRETRANS
00733 } rpmProblemType;
00734
00737 typedef struct rpmProblem_s {
00738 const char * pkgNEVR;
00739 const char * altNEVR;
00740 const void * key;
00741 Header h;
00742 rpmProblemType type;
00743 int ignoreProblem;
00744 const char * str1;
00745 unsigned long ulong1;
00746 } * rpmProblem;
00747
00750 typedef struct rpmProblemSet_s {
00751 int numProblems;
00752 int numProblemsAlloced;
00753 rpmProblem probs;
00754 } * rpmProblemSet;
00755
00758 void printDepFlags(FILE *fp, const char *version, int flags)
00759 ;
00760
00763 struct rpmDependencyConflict {
00764 const char * byName;
00765 const char * byVersion;
00766 const char * byRelease;
00767 Header byHeader;
00768
00769
00770 const char * needsName;
00771 const char * needsVersion;
00772 int needsFlags;
00773 const void * suggestedPackage;
00774 enum {
00775 RPMDEP_SENSE_REQUIRES,
00776 RPMDEP_SENSE_CONFLICTS
00777 } sense;
00778 } ;
00779
00782 void printDepProblems(FILE *fp, struct rpmDependencyConflict *conflicts,
00783 int numConflicts) ;
00784
00791 const char * rpmProblemString(rpmProblem prob) ;
00792
00799 void rpmProblemPrint(FILE *fp, rpmProblem prob) ;
00800
00806 void rpmProblemSetPrint(FILE *fp, rpmProblemSet probs)
00807 ;
00808
00813 void rpmProblemSetFree( rpmProblemSet probs);
00814
00816
00819
00820 typedef struct rpmRelocation_s {
00821 const char * oldPath;
00822 const char * newPath;
00823 } rpmRelocation;
00824
00835 int rpmInstallSourcePackage(const char * root, FD_t fd,
00836 const char ** specFile,
00837 rpmCallbackFunction notify, rpmCallbackData notifyData,
00838 char ** cookie);
00839
00846 int rpmVersionCompare(Header first, Header second);
00847
00854 typedef struct rpmTransactionSet_s * rpmTransactionSet;
00855
00862 rpmTransactionSet rpmtransCreateSet(rpmdb rpmdb,
00863 const char * rootdir);
00864
00881 int rpmtransAddPackage(rpmTransactionSet ts, Header h, FD_t fd,
00882 const void * key, int update,
00883 rpmRelocation * relocs);
00884
00891 void rpmtransAvailablePackage(rpmTransactionSet ts, Header h,
00892 const void * key);
00893
00899 void rpmtransRemovePackage(rpmTransactionSet ts, int dboffset);
00900
00905 void rpmtransFree( rpmTransactionSet ts);
00906
00912 void rpmtransSetScriptFd(rpmTransactionSet ts, FD_t fd)
00913 ;
00914
00923 int rpmtransGetKeys(const rpmTransactionSet ts,
00924 const void *** ep, int * nep)
00925 ;
00926
00934 int rpmdepCheck(rpmTransactionSet ts,
00935 struct rpmDependencyConflict ** conflicts,
00936 int * numConflicts);
00937
00957 int rpmdepOrder(rpmTransactionSet ts) ;
00958
00964 void rpmdepFreeConflicts( struct rpmDependencyConflict * conflicts,
00965 int numConflicts);
00966
00970 typedef enum rpmtransFlags_e {
00971 RPMTRANS_FLAG_TEST = (1 << 0),
00972 RPMTRANS_FLAG_BUILD_PROBS = (1 << 1),
00973 RPMTRANS_FLAG_NOSCRIPTS = (1 << 2),
00974 RPMTRANS_FLAG_JUSTDB = (1 << 3),
00975 RPMTRANS_FLAG_NOTRIGGERS = (1 << 4),
00976 RPMTRANS_FLAG_NODOCS = (1 << 5),
00977 RPMTRANS_FLAG_ALLFILES = (1 << 6),
00978 RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7),
00979 RPMTRANS_FLAG_MULTILIB = (1 << 8),
00980 } rpmtransFlags;
00981
00989 int rpmGetRpmlibProvides( const char *** provNames,
00990 int ** provFlags, const char *** provVersions)
00991 ;
00992
01003 int rpmRangesOverlap(const char *AName, const char *AEVR, int AFlags,
01004 const char *BName, const char *BEVR, int BFlags) ;
01005
01013 int rpmCheckRpmlibProvides(const char * keyName, const char * keyEVR,
01014 int keyFlags) ;
01015
01020 void rpmShowRpmlibProvides(FILE * fp) ;
01021
01025 typedef enum rpmprobFilterFlags_e {
01026 RPMPROB_FILTER_NONE = 0,
01027 RPMPROB_FILTER_IGNOREOS = (1 << 0),
01028 RPMPROB_FILTER_IGNOREARCH = (1 << 1),
01029 RPMPROB_FILTER_REPLACEPKG = (1 << 2),
01030 RPMPROB_FILTER_FORCERELOCATE= (1 << 3),
01031 RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),
01032 RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),
01033 RPMPROB_FILTER_OLDPACKAGE = (1 << 6),
01034 RPMPROB_FILTER_DISKSPACE = (1 << 7),
01035 RPMPROB_FILTER_DISKNODES = (1 << 8)
01036 } rpmprobFilterFlags;
01037
01049 int rpmRunTransactions(rpmTransactionSet ts,
01050 rpmCallbackFunction notify,
01051 rpmCallbackData notifyData,
01052 rpmProblemSet okProbs,
01053 rpmProblemSet * newProbs,
01054 rpmtransFlags transFlags,
01055 rpmprobFilterFlags ignoreSet);
01056
01064 const char *const tagName(int tag) ;
01065
01071 int tagValue(const char *tagstr) ;
01072
01073 #define RPMLEAD_BINARY 0
01074 #define RPMLEAD_SOURCE 1
01075
01076 #define RPMLEAD_MAGIC0 0xed
01077 #define RPMLEAD_MAGIC1 0xab
01078 #define RPMLEAD_MAGIC2 0xee
01079 #define RPMLEAD_MAGIC3 0xdb
01080
01081 #define RPMLEAD_SIZE 96
01089 struct rpmlead {
01090 unsigned char magic[4];
01091 unsigned char major, minor;
01092 short type;
01093 short archnum;
01094 char name[66];
01095 short osnum;
01096 short signature_type;
01097 char reserved[16];
01098 } ;
01099
01103 void freeFilesystems(void);
01104
01111 int rpmGetFilesystemList( const char *** listptr, int * num)
01112 ;
01113
01123 int rpmGetFilesystemUsage(const char ** filelist, int_32 * fssizes,
01124 int numFiles, uint_32 ** usagesPtr, int flags);
01125
01126
01129
01133 struct rpmBuildArguments {
01134 int buildAmount;
01135 const char *buildRootOverride;
01136 char *targets;
01137 int force;
01138 int noBuild;
01139 int noDeps;
01140 int noLang;
01141 int shortCircuit;
01142 int sign;
01143 int useCatalog;
01144 char buildMode;
01145 char buildChar;
01146 const char *rootdir;
01147 };
01150 typedef struct rpmBuildArguments BTA_t;
01151
01154 extern struct rpmBuildArguments rpmBTArgs;
01155
01158 extern struct poptOption rpmBuildPoptTable[];
01159
01161
01164
01168 typedef enum rpmVerifyAttrs_e {
01169 RPMVERIFY_NONE = 0,
01170 RPMVERIFY_MD5 = (1 << 0),
01171 RPMVERIFY_FILESIZE = (1 << 1),
01172 RPMVERIFY_LINKTO = (1 << 2),
01173 RPMVERIFY_USER = (1 << 3),
01174 RPMVERIFY_GROUP = (1 << 4),
01175 RPMVERIFY_MTIME = (1 << 5),
01176 RPMVERIFY_MODE = (1 << 6),
01177 RPMVERIFY_RDEV = (1 << 7),
01178 RPMVERIFY_READLINKFAIL= (1 << 28),
01179 RPMVERIFY_READFAIL = (1 << 29),
01180 RPMVERIFY_LSTATFAIL = (1 << 30)
01181 } rpmVerifyAttrs;
01182 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
01183
01195 int rpmVerifyFile(const char * root, Header h, int filenum,
01196 int * result, int omitMask);
01197
01206 int rpmVerifyScript(const char * rootDir, Header h, FD_t scriptFd);
01207
01211 typedef enum rpmQVSources_e {
01212 RPMQV_PACKAGE = 0,
01213 RPMQV_PATH,
01214 RPMQV_ALL,
01215 RPMQV_RPM,
01216 RPMQV_GROUP,
01217 RPMQV_WHATPROVIDES,
01218 RPMQV_WHATREQUIRES,
01219 RPMQV_TRIGGEREDBY,
01220 RPMQV_DBOFFSET,
01221 RPMQV_SPECFILE
01222 } rpmQVSources;
01223
01227 typedef enum rpmQueryFlags_e {
01228 QUERY_FOR_LIST = (1 << 1),
01229 QUERY_FOR_STATE = (1 << 2),
01230 QUERY_FOR_DOCS = (1 << 3),
01231 QUERY_FOR_CONFIG = (1 << 4),
01232 QUERY_FOR_DUMPFILES = (1 << 8)
01233 } rpmQueryFlags;
01234
01238 typedef enum rpmVerifyFlags_e {
01239 VERIFY_FILES = (1 << 9),
01240 VERIFY_DEPS = (1 << 10),
01241 VERIFY_SCRIPT = (1 << 11),
01242 VERIFY_MD5 = (1 << 12)
01243 } rpmVerifyFlags;
01244
01248 typedef struct rpmQVArguments {
01249 rpmQVSources qva_source;
01250 int qva_sourceCount;
01251 int qva_flags;
01252 int qva_verbose;
01253 const char *qva_queryFormat;
01254 const char *qva_prefix;
01255 char qva_mode;
01256 char qva_char;
01257 } QVA_t;
01258
01261 extern QVA_t rpmQVArgs;
01262
01265 extern struct poptOption rpmQVSourcePoptTable[];
01266
01272 typedef int (*QVF_t) (QVA_t *qva, rpmdb db, Header h);
01273
01281 int showMatches(QVA_t *qva, rpmdbMatchIterator mi,
01282 QVF_t showPackage);
01283
01286 extern int specedit;
01287
01290 extern struct poptOption rpmQueryPoptTable[];
01291
01296 void rpmDisplayQueryTags(FILE * f);
01297
01307 int rpmQueryVerify(QVA_t *qva, rpmQVSources source, const char * arg,
01308 rpmdb db, QVF_t showPackage);
01309
01318 int showQueryPackage(QVA_t *qva, rpmdb db, Header h);
01319
01327 int rpmQuery(QVA_t *qva, rpmQVSources source, const char * arg);
01328
01331 extern struct poptOption rpmVerifyPoptTable[];
01332
01340 int showVerifyPackage(QVA_t *qva, rpmdb db, Header h);
01341
01349 int rpmVerify(QVA_t *qva, rpmQVSources source, const char *arg);
01350
01352
01355
01356
01360 typedef enum rpmInstallInterfaceFlags_e {
01361 INSTALL_PERCENT = (1 << 0),
01362 INSTALL_HASH = (1 << 1),
01363 INSTALL_NODEPS = (1 << 2),
01364 INSTALL_NOORDER = (1 << 3),
01365 INSTALL_LABEL = (1 << 4),
01366 INSTALL_UPGRADE = (1 << 5),
01367 INSTALL_FRESHEN = (1 << 6)
01368 } rpmInstallInterfaceFlags;
01369
01380 int rpmInstall(const char * rootdir, const char ** argv,
01381 rpmtransFlags transFlags,
01382 rpmInstallInterfaceFlags interfaceFlags,
01383 rpmprobFilterFlags probFilter,
01384 rpmRelocation * relocations);
01385
01394 int rpmInstallSource(const char * prefix, const char * arg,
01395 const char ** specFile, char ** cookie);
01396
01400 typedef enum rpmEraseInterfaceFlags_e {
01401 UNINSTALL_NODEPS = (1 << 0),
01402 UNINSTALL_ALLMATCHES= (1 << 1)
01403 } rpmEraseInterfaceFlags;
01404
01413 int rpmErase(const char * rootdir, const char ** argv,
01414 rpmtransFlags transFlags,
01415 rpmEraseInterfaceFlags interfaceFlags);
01416
01418
01421
01425 enum rpmtagSignature {
01426 RPMSIGTAG_SIZE = 1000,
01427
01428 RPMSIGTAG_LEMD5_1 = 1001,
01429 RPMSIGTAG_PGP = 1002,
01430 RPMSIGTAG_LEMD5_2 = 1003,
01431 RPMSIGTAG_MD5 = 1004,
01432 RPMSIGTAG_GPG = 1005,
01433 RPMSIGTAG_PGP5 = 1006,
01435
01436
01437 RPMTAG_PK_BASE = 512,
01438 RPMTAG_PK_RSA_ES = RPMTAG_PK_BASE+1,
01439 RPMTAG_PK_RSA_E = RPMTAG_PK_BASE+2,
01440 RPMTAG_PK_RSA_S = RPMTAG_PK_BASE+3,
01441 RPMTAG_PK_ELGAMAL_E = RPMTAG_PK_BASE+16,
01442 RPMTAG_PK_DSA = RPMTAG_PK_BASE+17,
01443 RPMTAG_PK_ELLIPTIC = RPMTAG_PK_BASE+18,
01444 RPMTAG_PK_ECDSA = RPMTAG_PK_BASE+19,
01445 RPMTAG_PK_ELGAMAL_ES= RPMTAG_PK_BASE+20,
01446 RPMTAG_PK_DH = RPMTAG_PK_BASE+21,
01448 RPMTAG_HASH_BASE = 512+64,
01449 RPMTAG_HASH_MD5 = RPMTAG_HASH_BASE+1,
01450 RPMTAG_HASH_SHA1 = RPMTAG_HASH_BASE+2,
01451 RPMTAG_HASH_RIPEMD160= RPMTAG_HASH_BASE+3,
01452 RPMTAG_HASH_MD2 = RPMTAG_HASH_BASE+5,
01453 RPMTAG_HASH_TIGER192= RPMTAG_HASH_BASE+6,
01454 RPMTAG_HASH_HAVAL_5_160= RPMTAG_HASH_BASE+7
01455 };
01456
01460 typedef enum rpmVerifySignatureReturn_e {
01461 RPMSIG_OK = 0,
01462 RPMSIG_UNKNOWN = 1,
01463 RPMSIG_BAD = 2,
01464 RPMSIG_NOKEY = 3,
01465 RPMSIG_NOTTRUSTED = 4
01466 } rpmVerifySignatureReturn;
01467
01477 rpmVerifySignatureReturn rpmVerifySignature(const char *file,
01478 int_32 sigTag, const void * sig, int count, char *result);
01479
01483 void rpmFreeSignature(Header h);
01484
01485
01486
01490 typedef enum rpmCheckSigFlags_e {
01491 CHECKSIG_NONE = 0,
01492 CHECKSIG_PGP = (1 << 0),
01493 CHECKSIG_MD5 = (1 << 1),
01494 CHECKSIG_GPG = (1 << 2)
01495 } rpmCheckSigFlags;
01496
01503 int rpmCheckSig(rpmCheckSigFlags flags, const char ** argv);
01504
01508 typedef enum rpmResignFlags_e {
01509 RESIGN_NEW_SIGNATURE = 0,
01510 RESIGN_ADD_SIGNATURE
01511 } rpmResignFlags;
01512
01520 int rpmReSign(rpmResignFlags add, char *passPhrase, const char ** argv);
01521
01524 #ifdef __cplusplus
01525 }
01526 #endif
01527
01528 #endif