Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

lib/rpmlib.h

Go to the documentation of this file.
00001 #ifndef H_RPMLIB
00002 #define H_RPMLIB
00003 
00008 #include "rpmio.h"
00009 #include "rpmmessages.h"
00010 #include "rpmerr.h"
00011 #include "header.h"
00012 #include "popt.h"
00013 
00017 typedef enum rpmRC_e {
00018     RPMRC_OK            = 0,
00019     RPMRC_BADMAGIC      = 1,
00020     RPMRC_FAIL          = 2,
00021     RPMRC_BADSIZE       = 3,
00022     RPMRC_SHORTREAD     = 4
00023 } rpmRC;
00024 
00025 /*@-redecl@*/
00026 /*@checked@*/
00027 extern struct MacroContext_s * rpmGlobalMacroContext;
00028 
00029 /*@checked@*/
00030 extern struct MacroContext_s * rpmCLIMacroContext;
00031 
00032 /*@observer@*/ /*@checked@*/
00033 extern const char * RPMVERSION;
00034 
00035 /*@observer@*/ /*@checked@*/
00036 extern const char * rpmNAME;
00037 
00038 /*@observer@*/ /*@checked@*/
00039 extern const char * rpmEVR;
00040 
00041 /*@checked@*/
00042 extern int rpmFLAGS;
00043 /*@=redecl@*/
00044 
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048 
00054 /*@unused@*/ static inline /*@null@*/
00055 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00056         /*@modifies p @*/
00057 {
00058     if (p != NULL)      free((void *)p);
00059     return NULL;
00060 }
00061 
00071 rpmRC rpmReadPackageInfo(FD_t fd, /*@null@*/ /*@out@*/ Header * sigp,
00072                 /*@null@*/ /*@out@*/ Header * hdrp)
00073         /*@globals fileSystem @*/
00074         /*@modifies fd, *sigp, *hdrp, fileSystem @*/;
00075 
00085 rpmRC rpmReadPackageHeader(FD_t fd, /*@null@*/ /*@out@*/ Header * hdrp,
00086                 /*@null@*/ /*@out@*/ int * isSource,
00087                 /*@null@*/ /*@out@*/ int * major,
00088                 /*@null@*/ /*@out@*/ int * minor)
00089         /*@globals fileSystem @*/
00090         /*@modifies fd, *hdrp, *isSource, *major, *minor, fileSystem @*/;
00091 
00100 int headerNVR(Header h,
00101                 /*@null@*/ /*@out@*/ const char ** np,
00102                 /*@null@*/ /*@out@*/ const char ** vp,
00103                 /*@null@*/ /*@out@*/ const char ** rp)
00104         /*@modifies *np, *vp, *rp @*/;
00105 
00111 void headerMergeLegacySigs(Header h, const Header sig)
00112         /*@modifies h @*/;
00113 
00119 Header headerRegenSigHeader(const Header h)
00120         /*@*/;
00121 
00135 void rpmBuildFileList(Header h, /*@out@*/ const char *** fileListPtr, 
00136                 /*@out@*/ int * fileCountPtr)
00137         /*@modifies *fileListPtr, *fileCountPtr @*/;
00138 
00152 int rpmHeaderGetEntry(Header h, int_32 tag, /*@out@*/ int_32 *type,
00153                 /*@out@*/ void **p, /*@out@*/ int_32 *c)
00154         /*@modifies *type, *p, *c @*/;
00155 
00171 /*@unused@*/
00172 int rpmPackageGetEntry(void *leadp, Header sigs, Header h,
00173                 int_32 tag, int_32 *type, void **p, int_32 *c)
00174         /*@modifies h, *type, *p, *c @*/;
00175 
00179 /*@-redecl@*/
00180 /*@observer@*/ /*@unchecked@*/
00181 extern const struct headerTagTableEntry_s rpmTagTable[];
00182 /*@=redecl@*/
00183 
00187 /*@-redecl@*/
00188 /*@unchecked@*/
00189 extern const int rpmTagTableSize;
00190 /*@=redecl@*/
00191 
00196 /*@-redecl@*/
00197 /*@observer@*/ /*@unchecked@*/
00198 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00199 /*@=redecl@*/
00200 
00204 #define RPMDBI_PACKAGES         0       
00205 #define RPMDBI_DEPENDS          1       
00206 #define RPMDBI_LABEL            2       
00207 #define RPMDBI_ADDED            3       
00208 #define RPMDBI_REMOVED          4       
00209 #define RPMDBI_AVAILABLE        5       
00215 typedef enum rpmTag_e {
00216 
00217     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00218     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00219     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00220 /*@-enummemuse@*/
00221     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00223     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00224 /*@=enummemuse@*/
00225 
00226 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00227 /* the md5 sum was broken *twice* on big endian machines */
00228 /* XXX 2nd underscore prevents tagTable generation */
00229     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00230     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,
00231     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    
00232     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,
00233     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    
00234     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,
00235     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,
00236     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    
00238     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    
00239     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    
00241     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,
00242     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,
00243     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,
00244     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,
00245 
00246     RPMTAG_NAME                 = 1000,
00247     RPMTAG_VERSION              = 1001,
00248     RPMTAG_RELEASE              = 1002,
00249     RPMTAG_EPOCH                = 1003,
00250 #define RPMTAG_SERIAL   RPMTAG_EPOCH    /* backward comaptibility */
00251     RPMTAG_SUMMARY              = 1004,
00252     RPMTAG_DESCRIPTION          = 1005,
00253     RPMTAG_BUILDTIME            = 1006,
00254     RPMTAG_BUILDHOST            = 1007,
00255     RPMTAG_INSTALLTIME          = 1008,
00256     RPMTAG_SIZE                 = 1009,
00257     RPMTAG_DISTRIBUTION         = 1010,
00258     RPMTAG_VENDOR               = 1011,
00259     RPMTAG_GIF                  = 1012,
00260     RPMTAG_XPM                  = 1013,
00261     RPMTAG_LICENSE              = 1014,
00262 #define RPMTAG_COPYRIGHT RPMTAG_LICENSE /* backward comaptibility */
00263     RPMTAG_PACKAGER             = 1015,
00264     RPMTAG_GROUP                = 1016,
00265 /*@-enummemuse@*/
00266     RPMTAG_CHANGELOG            = 1017, 
00267 /*@=enummemuse@*/
00268     RPMTAG_SOURCE               = 1018,
00269     RPMTAG_PATCH                = 1019,
00270     RPMTAG_URL                  = 1020,
00271     RPMTAG_OS                   = 1021,
00272     RPMTAG_ARCH                 = 1022,
00273     RPMTAG_PREIN                = 1023,
00274     RPMTAG_POSTIN               = 1024,
00275     RPMTAG_PREUN                = 1025,
00276     RPMTAG_POSTUN               = 1026,
00277     RPMTAG_OLDFILENAMES         = 1027, /* obsolete */
00278     RPMTAG_FILESIZES            = 1028,
00279     RPMTAG_FILESTATES           = 1029,
00280     RPMTAG_FILEMODES            = 1030,
00281     RPMTAG_FILEUIDS             = 1031, 
00282     RPMTAG_FILEGIDS             = 1032, 
00283     RPMTAG_FILERDEVS            = 1033,
00284     RPMTAG_FILEMTIMES           = 1034,
00285     RPMTAG_FILEMD5S             = 1035,
00286     RPMTAG_FILELINKTOS          = 1036,
00287     RPMTAG_FILEFLAGS            = 1037,
00288 /*@-enummemuse@*/
00289     RPMTAG_ROOT                 = 1038, 
00290 /*@=enummemuse@*/
00291     RPMTAG_FILEUSERNAME         = 1039,
00292     RPMTAG_FILEGROUPNAME        = 1040,
00293 /*@-enummemuse@*/
00294     RPMTAG_EXCLUDE              = 1041, 
00295     RPMTAG_EXCLUSIVE            = 1042, 
00296 /*@=enummemuse@*/
00297     RPMTAG_ICON                 = 1043,
00298     RPMTAG_SOURCERPM            = 1044,
00299     RPMTAG_FILEVERIFYFLAGS      = 1045,
00300     RPMTAG_ARCHIVESIZE          = 1046,
00301     RPMTAG_PROVIDENAME          = 1047,
00302 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* backward comaptibility */
00303     RPMTAG_REQUIREFLAGS         = 1048,
00304     RPMTAG_REQUIRENAME          = 1049,
00305     RPMTAG_REQUIREVERSION       = 1050,
00306     RPMTAG_NOSOURCE             = 1051, 
00307     RPMTAG_NOPATCH              = 1052, 
00308     RPMTAG_CONFLICTFLAGS        = 1053,
00309     RPMTAG_CONFLICTNAME         = 1054,
00310     RPMTAG_CONFLICTVERSION      = 1055,
00311     RPMTAG_DEFAULTPREFIX        = 1056, 
00312     RPMTAG_BUILDROOT            = 1057, 
00313     RPMTAG_INSTALLPREFIX        = 1058, 
00314     RPMTAG_EXCLUDEARCH          = 1059,
00315     RPMTAG_EXCLUDEOS            = 1060,
00316     RPMTAG_EXCLUSIVEARCH        = 1061,
00317     RPMTAG_EXCLUSIVEOS          = 1062,
00318     RPMTAG_AUTOREQPROV          = 1063, 
00319     RPMTAG_RPMVERSION           = 1064,
00320     RPMTAG_TRIGGERSCRIPTS       = 1065,
00321     RPMTAG_TRIGGERNAME          = 1066,
00322     RPMTAG_TRIGGERVERSION       = 1067,
00323     RPMTAG_TRIGGERFLAGS         = 1068,
00324     RPMTAG_TRIGGERINDEX         = 1069,
00325     RPMTAG_VERIFYSCRIPT         = 1079,
00326     RPMTAG_CHANGELOGTIME        = 1080,
00327     RPMTAG_CHANGELOGNAME        = 1081,
00328     RPMTAG_CHANGELOGTEXT        = 1082,
00329 /*@-enummemuse@*/
00330     RPMTAG_BROKENMD5            = 1083, 
00331 /*@=enummemuse@*/
00332     RPMTAG_PREREQ               = 1084, 
00333     RPMTAG_PREINPROG            = 1085,
00334     RPMTAG_POSTINPROG           = 1086,
00335     RPMTAG_PREUNPROG            = 1087,
00336     RPMTAG_POSTUNPROG           = 1088,
00337     RPMTAG_BUILDARCHS           = 1089,
00338     RPMTAG_OBSOLETENAME         = 1090,
00339 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* backward comaptibility */
00340     RPMTAG_VERIFYSCRIPTPROG     = 1091,
00341     RPMTAG_TRIGGERSCRIPTPROG    = 1092,
00342     RPMTAG_DOCDIR               = 1093, 
00343     RPMTAG_COOKIE               = 1094,
00344     RPMTAG_FILEDEVICES          = 1095,
00345     RPMTAG_FILEINODES           = 1096,
00346     RPMTAG_FILELANGS            = 1097,
00347     RPMTAG_PREFIXES             = 1098,
00348     RPMTAG_INSTPREFIXES         = 1099,
00349     RPMTAG_TRIGGERIN            = 1100, 
00350     RPMTAG_TRIGGERUN            = 1101, 
00351     RPMTAG_TRIGGERPOSTUN        = 1102, 
00352     RPMTAG_AUTOREQ              = 1103, 
00353     RPMTAG_AUTOPROV             = 1104, 
00354 /*@-enummemuse@*/
00355     RPMTAG_CAPABILITY           = 1105, 
00356 /*@=enummemuse@*/
00357     RPMTAG_SOURCEPACKAGE        = 1106, 
00358 /*@-enummemuse@*/
00359     RPMTAG_OLDORIGFILENAMES     = 1107, 
00360 /*@=enummemuse@*/
00361     RPMTAG_BUILDPREREQ          = 1108, 
00362     RPMTAG_BUILDREQUIRES        = 1109, 
00363     RPMTAG_BUILDCONFLICTS       = 1110, 
00364 /*@-enummemuse@*/
00365     RPMTAG_BUILDMACROS          = 1111, 
00366 /*@=enummemuse@*/
00367     RPMTAG_PROVIDEFLAGS         = 1112,
00368     RPMTAG_PROVIDEVERSION       = 1113,
00369     RPMTAG_OBSOLETEFLAGS        = 1114,
00370     RPMTAG_OBSOLETEVERSION      = 1115,
00371     RPMTAG_DIRINDEXES           = 1116,
00372     RPMTAG_BASENAMES            = 1117,
00373     RPMTAG_DIRNAMES             = 1118,
00374     RPMTAG_ORIGDIRINDEXES       = 1119, 
00375     RPMTAG_ORIGBASENAMES        = 1120, 
00376     RPMTAG_ORIGDIRNAMES         = 1121, 
00377     RPMTAG_OPTFLAGS             = 1122,
00378     RPMTAG_DISTURL              = 1123,
00379     RPMTAG_PAYLOADFORMAT        = 1124,
00380     RPMTAG_PAYLOADCOMPRESSOR    = 1125,
00381     RPMTAG_PAYLOADFLAGS         = 1126,
00382     RPMTAG_MULTILIBS            = 1127,
00383     RPMTAG_INSTALLTID           = 1128,
00384     RPMTAG_REMOVETID            = 1129,
00385     RPMTAG_SHA1RHN              = 1130, 
00386     RPMTAG_RHNPLATFORM          = 1131,
00387     RPMTAG_PLATFORM             = 1132,
00388 /*@-enummemuse@*/
00389     RPMTAG_FIRSTFREE_TAG        
00390 /*@=enummemuse@*/
00391 } rpmTag;
00392 
00393 #define RPMTAG_EXTERNAL_TAG             1000000
00394 
00398 typedef enum rpmfileState_e {
00399     RPMFILE_STATE_NORMAL        = 0,
00400     RPMFILE_STATE_REPLACED      = 1,
00401     RPMFILE_STATE_NOTINSTALLED  = 2,
00402     RPMFILE_STATE_NETSHARED     = 3
00403 } rpmfileState;
00404 
00408 typedef enum rpmfileAttrs_e {
00409 /*@-enummemuse@*/
00410     RPMFILE_NONE        = 0,
00411 /*@=enummemuse@*/
00412     RPMFILE_CONFIG      = (1 << 0),     
00413     RPMFILE_DOC         = (1 << 1),     
00414 /*@-enummemuse@*/
00415     RPMFILE_DONOTUSE    = (1 << 2),     
00416 /*@=enummemuse@*/
00417     RPMFILE_MISSINGOK   = (1 << 3),     
00418     RPMFILE_NOREPLACE   = (1 << 4),     
00419     RPMFILE_SPECFILE    = (1 << 5),     
00420     RPMFILE_GHOST       = (1 << 6),     
00421     RPMFILE_LICENSE     = (1 << 7),     
00422     RPMFILE_README      = (1 << 8),     
00423     RPMFILE_EXCLUDE     = (1 << 9)      
00424 } rpmfileAttrs;
00425 #define RPMFILE_MULTILIB_SHIFT          9
00426 #define RPMFILE_MULTILIB(N)             ((N) << RPMFILE_MULTILIB_SHIFT)
00427 #define RPMFILE_MULTILIB_MASK           RPMFILE_MULTILIB(7)
00428 
00429 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00430 
00431 /* XXX Check file flags for multilib marker. */
00432 #define isFileMULTILIB(_fflags)         ((_fflags) & RPMFILE_MULTILIB_MASK)
00433 
00437 typedef enum rpmsenseFlags_e {
00438     RPMSENSE_ANY        = 0,
00439 /*@-enummemuse@*/
00440     RPMSENSE_SERIAL     = (1 << 0),     
00441 /*@=enummemuse@*/
00442     RPMSENSE_LESS       = (1 << 1),
00443     RPMSENSE_GREATER    = (1 << 2),
00444     RPMSENSE_EQUAL      = (1 << 3),
00445     RPMSENSE_PROVIDES   = (1 << 4), /* only used internally by builds */
00446     RPMSENSE_CONFLICTS  = (1 << 5), /* only used internally by builds */
00447     RPMSENSE_PREREQ     = (1 << 6),     
00448     RPMSENSE_OBSOLETES  = (1 << 7), /* only used internally by builds */
00449     RPMSENSE_INTERP     = (1 << 8),     
00450     RPMSENSE_SCRIPT_PRE = ((1 << 9)|RPMSENSE_PREREQ), 
00451     RPMSENSE_SCRIPT_POST = ((1 << 10)|RPMSENSE_PREREQ), 
00452     RPMSENSE_SCRIPT_PREUN = ((1 << 11)|RPMSENSE_PREREQ), 
00453     RPMSENSE_SCRIPT_POSTUN = ((1 << 12)|RPMSENSE_PREREQ), 
00454     RPMSENSE_SCRIPT_VERIFY = (1 << 13), 
00455     RPMSENSE_FIND_REQUIRES = (1 << 14), 
00456     RPMSENSE_FIND_PROVIDES = (1 << 15), 
00458     RPMSENSE_TRIGGERIN  = (1 << 16),    
00459     RPMSENSE_TRIGGERUN  = (1 << 17),    
00460     RPMSENSE_TRIGGERPOSTUN = (1 << 18), 
00461     RPMSENSE_MULTILIB   = (1 << 19),
00462     RPMSENSE_SCRIPT_PREP = (1 << 20),   
00463     RPMSENSE_SCRIPT_BUILD = (1 << 21),  
00464     RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00465     RPMSENSE_SCRIPT_CLEAN = (1 << 23),  
00466     RPMSENSE_RPMLIB     = ((1 << 24) | RPMSENSE_PREREQ), 
00467 /*@-enummemuse@*/
00468     RPMSENSE_TRIGGERPREIN = (1 << 25),  
00469 /*@=enummemuse@*/
00470 
00471 /*@-enummemuse@*/
00472     RPMSENSE_KEYRING    = (1 << 26)
00473 /*@=enummemuse@*/
00474 } rpmsenseFlags;
00475 
00476 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00477                                          /* less, greater, equal.          */
00478 
00479 #define RPMSENSE_TRIGGER        \
00480         (RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00481 
00482 #define isDependsMULTILIB(_dflags)      ((_dflags) & RPMSENSE_MULTILIB)
00483 
00484 #define _ALL_REQUIRES_MASK      (\
00485     RPMSENSE_INTERP | \
00486     RPMSENSE_SCRIPT_PRE | \
00487     RPMSENSE_SCRIPT_POST | \
00488     RPMSENSE_SCRIPT_PREUN | \
00489     RPMSENSE_SCRIPT_POSTUN | \
00490     RPMSENSE_SCRIPT_VERIFY | \
00491     RPMSENSE_FIND_REQUIRES | \
00492     RPMSENSE_SCRIPT_PREP | \
00493     RPMSENSE_SCRIPT_BUILD | \
00494     RPMSENSE_SCRIPT_INSTALL | \
00495     RPMSENSE_SCRIPT_CLEAN | \
00496     RPMSENSE_RPMLIB | \
00497     RPMSENSE_KEYRING )
00498 
00499 #define _notpre(_x)             ((_x) & ~RPMSENSE_PREREQ)
00500 #define _INSTALL_ONLY_MASK \
00501     _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
00502 #define _ERASE_ONLY_MASK  \
00503     _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00504 
00505 #define isLegacyPreReq(_x)  (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00506 #define isInstallPreReq(_x)     ((_x) & _INSTALL_ONLY_MASK)
00507 #define isErasePreReq(_x)       ((_x) & _ERASE_ONLY_MASK)
00508 
00509 /* ==================================================================== */
00512 
00513 /* Stuff for maintaining "variables" like SOURCEDIR, BUILDDIR, etc */
00514 #define RPMVAR_OPTFLAGS                 3
00515 #define RPMVAR_PROVIDES                 38
00516 #define RPMVAR_INCLUDE                  43
00517 #define RPMVAR_MACROFILES               49
00518 
00519 #define RPMVAR_NUM                      55      /* number of RPMVAR entries */
00520 
00526 /*@-redecl@*/
00527 /*@observer@*/ /*@null@*/ extern const char * rpmGetVar(int var)
00528         /*@*/;
00529 /*@=redecl@*/
00530 
00536 void rpmSetVar(int var, const char * val)
00537         /*@globals internalState @*/
00538         /*@modifies internalState @*/;
00539 
00545 /*@-redecl@*/
00546 /*@observer@*/ /*@unchecked@*/
00547 extern const char * macrofiles;
00548 /*@=redecl@*/
00549 
00554 enum rpm_machtable_e {
00555     RPM_MACHTABLE_INSTARCH      = 0,    
00556     RPM_MACHTABLE_INSTOS        = 1,    
00557     RPM_MACHTABLE_BUILDARCH     = 2,    
00558     RPM_MACHTABLE_BUILDOS       = 3     
00559 };
00560 #define RPM_MACHTABLE_COUNT     4       
00568 int rpmReadConfigFiles(/*@null@*/ const char * file,
00569                 /*@null@*/ const char * target)
00570         /*@globals rpmGlobalMacroContext, rpmCLIMacroContext,
00571                 fileSystem, internalState @*/
00572         /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
00573                 fileSystem, internalState @*/;
00574 
00581 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00582                 /*@null@*/ /*@out@*/ int * num)
00583         /*@modifies *name, *num @*/;
00584 
00591 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00592                 /*@null@*/ /*@out@*/ int * num)
00593         /*@modifies *name, *num @*/;
00594 
00608 int rpmMachineScore(int type, const char * name)
00609         /*@*/;
00610 
00616 int rpmShowRC(FILE * fp)
00617         /*@globals rpmGlobalMacroContext, fileSystem @*/
00618         /*@modifies *fp, rpmGlobalMacroContext, fileSystem @*/;
00619 
00627 void rpmSetTables(int archTable, int osTable)
00628         /*@globals internalState @*/
00629         /*@modifies internalState @*/;
00630 
00641 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00642         /*@globals internalState @*/
00643         /*@modifies internalState @*/;
00644 
00653 /*@unused@*/
00654 void rpmGetMachine( /*@null@*/ /*@out@*/ const char **arch,
00655                 /*@null@*/ /*@out@*/ const char **os)
00656         /*@modifies *arch, *os @*/;
00657 
00662 void rpmFreeRpmrc(void)
00663         /*@globals internalState @*/
00664         /*@modifies internalState @*/;
00665 
00667 /* ==================================================================== */
00670 
00673 typedef /*@abstract@*/ struct rpmdb_s * rpmdb;
00674 
00677 typedef /*@abstract@*/ struct _dbiIndexSet * dbiIndexSet;
00678 
00682 /*@unchecked@*/
00683 /*@only@*/ /*@null@*/ extern int * dbiTags;
00684 /*@unchecked@*/
00685 extern int dbiTagsMax;
00686 
00695 int rpmdbOpen (/*@null@*/ const char * prefix, /*@null@*/ /*@out@*/ rpmdb * dbp,
00696                 int mode, int perms)
00697         /*@globals fileSystem @*/
00698         /*@modifies *dbp, fileSystem @*/;
00699 
00706 int rpmdbInit(/*@null@*/ const char * prefix, int perms)
00707         /*@globals fileSystem @*/
00708         /*@modifies fileSystem @*/;
00709 
00715 int rpmdbVerify(/*@null@*/ const char * prefix)
00716         /*@globals fileSystem @*/
00717         /*@modifies fileSystem @*/;
00718 
00724 int rpmdbClose (/*@only@*/ /*@null@*/ rpmdb db)
00725         /*@globals fileSystem @*/
00726         /*@modifies fileSystem @*/;
00727 
00733 int rpmdbSync (/*@null@*/ rpmdb db)
00734         /*@globals fileSystem @*/
00735         /*@modifies fileSystem @*/;
00736 
00742 int rpmdbOpenAll (/*@null@*/ rpmdb db)
00743         /*@modifies db @*/;
00744 
00751 int rpmdbCountPackages(/*@null@*/ rpmdb db, const char * name)
00752         /*@globals fileSystem @*/
00753         /*@modifies db, fileSystem @*/;
00754 
00757 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
00758 
00764 /*@null@*/ rpmdbMatchIterator rpmdbFreeIterator(
00765                 /*@only@*//*@null@*/rpmdbMatchIterator mi)
00766         /*@globals fileSystem @*/
00767         /*@modifies mi, fileSystem @*/;
00768 
00774 /*@kept@*/ /*@null@*/ rpmdb rpmdbGetIteratorRpmDB(
00775                 /*@null@*/ rpmdbMatchIterator mi)
00776         /*@*/;
00777 
00783 unsigned int rpmdbGetIteratorOffset(/*@null@*/ rpmdbMatchIterator mi)
00784         /*@*/;
00785 
00791 int rpmdbGetIteratorCount(/*@null@*/ rpmdbMatchIterator mi)
00792         /*@*/;
00793 
00801 int rpmdbAppendIterator(/*@null@*/ rpmdbMatchIterator mi,
00802                 /*@null@*/ const int * hdrNums, int nHdrNums)
00803         /*@modifies mi @*/;
00804 
00814 int rpmdbPruneIterator(/*@null@*/ rpmdbMatchIterator mi,
00815                 /*@null@*/ int * hdrNums, int nHdrNums, int sorted)
00816         /*@modifies mi, hdrNums @*/;
00817 
00821 typedef enum rpmMireMode_e {
00822     RPMMIRE_DEFAULT     = 0,    
00823     RPMMIRE_STRCMP      = 1,    
00824     RPMMIRE_REGEX       = 2,    
00825     RPMMIRE_GLOB        = 3     
00826 } rpmMireMode;
00827 
00836 int rpmdbSetIteratorRE(/*@null@*/ rpmdbMatchIterator mi, rpmTag tag,
00837                 rpmMireMode mode, /*@null@*/ const char * pattern)
00838         /*@modifies mi @*/;
00839 
00850 /*@unused@*/
00851 int rpmdbSetIteratorVersion(/*@null@*/ rpmdbMatchIterator mi,
00852                 /*@null@*/ const char * version)
00853         /*@modifies mi @*/;
00854 
00865 /*@unused@*/
00866 int rpmdbSetIteratorRelease(/*@null@*/ rpmdbMatchIterator mi,
00867                 /*@null@*/ const char * release)
00868         /*@modifies mi @*/;
00869 
00877 int rpmdbSetIteratorRewrite(/*@null@*/ rpmdbMatchIterator mi, int rewrite)
00878         /*@modifies mi @*/;
00879 
00886 int rpmdbSetIteratorModified(/*@null@*/ rpmdbMatchIterator mi, int modified)
00887         /*@modifies mi @*/;
00888 
00894 /*@null@*/ Header rpmdbNextIterator(/*@null@*/ rpmdbMatchIterator mi)
00895         /*@globals fileSystem @*/
00896         /*@modifies mi, fileSystem @*/;
00897 
00899 /*@unused@*/
00900 /*@null@*/ Header XrpmdbNextIterator(rpmdbMatchIterator mi,
00901                 const char * f, unsigned int l)
00902         /*@globals fileSystem @*/
00903         /*@modifies mi, fileSystem @*/;
00904 
00913 /*@only@*/ /*@null@*/ rpmdbMatchIterator rpmdbInitIterator(
00914                         /*@kept@*/ /*@null@*/ rpmdb db, int rpmtag,
00915                         /*@null@*/ const void * keyp, size_t keylen)
00916         /*@globals fileSystem @*/
00917         /*@modifies db, fileSystem @*/;
00918 
00926 int rpmdbAdd(/*@null@*/ rpmdb db, int iid, Header h)
00927         /*@globals fileSystem @*/
00928         /*@modifies db, h, fileSystem @*/;
00929 
00937 int rpmdbRemove(/*@null@*/ rpmdb db, /*@unused@*/ int rid, unsigned int hdrNum)
00938         /*@globals fileSystem @*/
00939         /*@modifies db, fileSystem @*/;
00940 
00946 int rpmdbRebuild(/*@null@*/ const char * prefix)
00947         /*@globals fileSystem @*/
00948         /*@modifies fileSystem @*/;
00949 
00951 /* ==================================================================== */
00954 
00958 typedef enum rpmProblemType_e {
00959     RPMPROB_BADARCH,    
00960     RPMPROB_BADOS,      
00961     RPMPROB_PKG_INSTALLED, 
00962     RPMPROB_BADRELOCATE,
00963     RPMPROB_REQUIRES,   
00964     RPMPROB_CONFLICT,   
00965     RPMPROB_NEW_FILE_CONFLICT, 
00966     RPMPROB_FILE_CONFLICT,
00967     RPMPROB_OLDPACKAGE, 
00968     RPMPROB_DISKSPACE,  
00969     RPMPROB_DISKNODES,  
00970     RPMPROB_BADPRETRANS 
00971  } rpmProblemType;
00972 
00975 typedef /*@abstract@*/ struct rpmProblem_s {
00976 /*@only@*/ /*@null@*/ const char * pkgNEVR;
00977 /*@only@*/ /*@null@*/ const char * altNEVR;
00978 /*@kept@*/ /*@null@*/ const void * key;
00979 /*@null@*/ Header h;
00980     rpmProblemType type;
00981     int ignoreProblem;
00982 /*@only@*/ /*@null@*/ const char * str1;
00983     unsigned long ulong1;
00984 } * rpmProblem;
00985 
00988 typedef /*@abstract@*/ struct rpmProblemSet_s {
00989     int numProblems;            
00990     int numProblemsAlloced;     
00991     rpmProblem probs;           
00992 } * rpmProblemSet;
00993 
00996 void printDepFlags(FILE *fp, const char *version, int flags)
00997         /*@globals fileSystem @*/
00998         /*@modifies *fp, fileSystem @*/;
00999 
01003 typedef /*@abstract@*/ struct rpmDependencyConflict_s {
01004     const char * byName;        
01005     const char * byVersion;     
01006     const char * byRelease;     
01007     Header byHeader;            
01008     /*
01009      * These needs fields are misnamed -- they are used for the package
01010      * which isn't needed as well.
01011      */
01012     const char * needsName;     
01013     const char * needsVersion;  
01014     int needsFlags;             
01015 /*@owned@*/ /*@null@*/ const void ** suggestedPackages; /* terminated by NULL */
01016     enum {
01017         RPMDEP_SENSE_REQUIRES,          
01018         RPMDEP_SENSE_CONFLICTS          
01019     } sense;
01020 } * rpmDependencyConflict;
01021 
01028 void printDepProblems(FILE * fp, const rpmDependencyConflict conflicts,
01029                         int numConflicts)
01030         /*@globals fileSystem @*/
01031         /*@modifies *fp, fileSystem @*/;
01032 
01039 /*@-redecl@*/   /* LCL: is confused. */
01040 /*@only@*/ extern const char * rpmProblemString(const rpmProblem prob)
01041         /*@*/;
01042 /*@=redecl@*/
01043 
01050 void rpmProblemPrint(FILE *fp, rpmProblem prob)
01051         /*@globals fileSystem @*/
01052         /*@modifies prob, *fp, fileSystem @*/;
01053 
01059 void rpmProblemSetPrint(FILE *fp, rpmProblemSet probs)
01060         /*@globals fileSystem @*/
01061         /*@modifies probs, *fp, fileSystem @*/;
01062 
01067 void rpmProblemSetFree( /*@only@*/ rpmProblemSet probs)
01068         /*@modifies probs @*/;
01069 
01071 /* ==================================================================== */
01080 typedef /*@null@*/
01081     void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
01082         /*@modifies data @*/;
01083 
01097 typedef int (*HGE_t) (Header h, rpmTag tag,
01098                         /*@null@*/ /*@out@*/ rpmTagType * type,
01099                         /*@null@*/ /*@out@*/ void ** p,
01100                         /*@null@*/ /*@out@*/ int_32 * c)
01101         /*@modifies *type, *p, *c @*/;
01102 
01117 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
01118                         const void * p, int_32 c)
01119         /*@modifies h @*/;
01120 
01131 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
01132                         const void * p, int_32 c)
01133         /*@modifies h @*/;
01134 
01145 typedef int (*HRE_t) (Header h, int_32 tag)
01146         /*@modifies h @*/;
01147 
01151 typedef struct rpmRelocation_s {
01152 /*@only@*/ /*@null@*/
01153     const char * oldPath;       
01154 /*@only@*/ /*@null@*/
01155     const char * newPath;       
01156 } rpmRelocation;
01157 
01168 rpmRC rpmInstallSourcePackage(/*@null@*/ const char * rootDir, FD_t fd,
01169                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
01170                         /*@null@*/ rpmCallbackFunction notify,
01171                         /*@null@*/ rpmCallbackData notifyData,
01172                         /*@null@*/ /*@out@*/ char ** cookie)
01173         /*@modifies fd, *specFilePtr, *cookie @*/;
01174 
01181 int rpmVersionCompare(Header first, Header second)
01182         /*@*/;
01183 
01187 typedef enum fileAction_e {
01188     FA_UNKNOWN = 0,     
01189     FA_CREATE,          
01190     FA_COPYIN,          
01191     FA_COPYOUT,         
01192     FA_BACKUP,          
01193     FA_SAVE,            
01194     FA_SKIP,            
01195     FA_ALTNAME,         
01196     FA_ERASE,           
01197     FA_SKIPNSTATE,      
01198     FA_SKIPNETSHARED,   
01199     FA_SKIPMULTILIB     
01200 } fileAction;
01201 
01202 #define XFA_SKIPPING(_a)        \
01203     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPMULTILIB)
01204 
01212 typedef enum fileTypes_e {
01213     PIPE        =  1,   
01214     CDEV        =  2,   
01215     XDIR        =  4,   
01216     BDEV        =  6,   
01217     REG         =  8,   
01218     LINK        = 10,   
01219     SOCK        = 12    
01220 } fileTypes;
01221 
01225 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
01226 
01230 typedef /*@abstract@*/ struct fsm_s * FSM_t;
01231 
01235 typedef /*@abstract@*/ struct psm_s * PSM_t;
01236 
01239 typedef /*@abstract@*/ struct transactionFileInfo_s * TFI_t;
01240 
01247 typedef /*@abstract@*/ struct rpmTransactionSet_s * rpmTransactionSet;
01248 
01255 /*@only@*/ rpmTransactionSet rpmtransCreateSet(
01256                 /*@null@*/ /*@kept@*/ rpmdb rpmdb,
01257                 /*@null@*/ const char * rootDir)
01258         /*@*/;
01259 
01276 int rpmtransAddPackage(rpmTransactionSet ts, Header h, /*@null@*/ FD_t fd,
01277                 /*@null@*/ /*@owned@*/ const void * key, int upgrade,
01278                 /*@null@*/ rpmRelocation * relocs)
01279         /*@modifies fd, h, ts @*/;
01280 
01287 /*@unused@*/
01288 void rpmtransAvailablePackage(rpmTransactionSet ts, Header h,
01289                 /*@null@*/ /*@owned@*/ const void * key)
01290         /*@modifies h, ts @*/;
01291 
01298 int rpmtransRemovePackage(rpmTransactionSet ts, int dboffset)
01299         /*@modifies ts @*/;
01300 
01306 /*@null@*/ rpmTransactionSet
01307 rpmtransFree(/*@only@*//*@null@*/ rpmTransactionSet ts)
01308         /*@modifies ts @*/;
01309 
01315 /*@unused@*/
01316 void rpmtransSetScriptFd(rpmTransactionSet ts, FD_t fd)
01317         /*@modifies ts, fd @*/;
01318 
01327 /*@unused@*/
01328 int rpmtransGetKeys(const rpmTransactionSet ts,
01329                 /*@null@*/ /*@out@*/ const void *** ep,
01330                 /*@null@*/ /*@out@*/ int * nep)
01331         /*@modifies ep, nep @*/;
01332 
01340 int rpmdepCheck(rpmTransactionSet ts,
01341                 /*@exposed@*/ /*@out@*/ rpmDependencyConflict * conflicts,
01342                 /*@exposed@*/ /*@out@*/ int * numConflicts)
01343         /*@globals fileSystem, internalState @*/
01344         /*@modifies ts, *conflicts, *numConflicts,
01345                 fileSystem, internalState @*/;
01346 
01366 int rpmdepOrder(rpmTransactionSet ts)
01367         /*@globals fileSystem, internalState@*/
01368         /*@modifies ts, fileSystem, internalState @*/;
01369 
01376 /*@null@*/ rpmDependencyConflict rpmdepFreeConflicts(
01377                 /*@only@*/ /*@null@*/ rpmDependencyConflict conflicts,
01378                 int numConflicts)
01379         /*@modifies conflicts @*/;
01380 
01384 typedef enum rpmtransFlags_e {
01385     RPMTRANS_FLAG_NONE          = 0,
01386     RPMTRANS_FLAG_TEST          = (1 <<  0),    
01387     RPMTRANS_FLAG_BUILD_PROBS   = (1 <<  1),    
01388     RPMTRANS_FLAG_NOSCRIPTS     = (1 <<  2),    
01389     RPMTRANS_FLAG_JUSTDB        = (1 <<  3),    
01390     RPMTRANS_FLAG_NOTRIGGERS    = (1 <<  4),    
01391     RPMTRANS_FLAG_NODOCS        = (1 <<  5),    
01392     RPMTRANS_FLAG_ALLFILES      = (1 <<  6),    
01393 /*@-enummemuse@*/
01394     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
01395 /*@=enummemuse@*/
01396     RPMTRANS_FLAG_MULTILIB      = (1 <<  8),    
01397     RPMTRANS_FLAG_DIRSTASH      = (1 <<  9),    
01398     RPMTRANS_FLAG_REPACKAGE     = (1 << 10),    
01400     RPMTRANS_FLAG_PKGCOMMIT     = (1 << 11),
01401 /*@-enummemuse@*/
01402     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
01403 /*@=enummemuse@*/
01404     RPMTRANS_FLAG_COMMIT        = (1 << 13),
01405 /*@-enummemuse@*/
01406     RPMTRANS_FLAG_UNDO          = (1 << 14),
01407 /*@=enummemuse@*/
01408     RPMTRANS_FLAG_REVERSE       = (1 << 15),
01409 
01410     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),    
01411     RPMTRANS_FLAG_NOPRE         = (1 << 17),    
01412     RPMTRANS_FLAG_NOPOST        = (1 << 18),    
01413     RPMTRANS_FLAG_NOTRIGGERIN   = (1 << 19),    
01414     RPMTRANS_FLAG_NOTRIGGERUN   = (1 << 20),    
01415     RPMTRANS_FLAG_NOPREUN       = (1 << 21),    
01416     RPMTRANS_FLAG_NOPOSTUN      = (1 << 22),    
01417     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),  
01418 /*@-enummemuse@*/
01419     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
01420 /*@=enummemuse@*/
01421     RPMTRANS_FLAG_APPLYONLY     = (1 << 25),
01422 
01423 /*@-enummemuse@*/
01424     RPMTRANS_FLAG_CHAINSAW      = (1 << 26),
01425 /*@=enummemuse@*/
01426     RPMTRANS_FLAG_NOMD5         = (1 << 27)     
01427 } rpmtransFlags;
01428 
01429 #define _noTransScripts         \
01430   ( RPMTRANS_FLAG_NOPRE |       \
01431     RPMTRANS_FLAG_NOPOST |      \
01432     RPMTRANS_FLAG_NOPREUN |     \
01433     RPMTRANS_FLAG_NOPOSTUN      \
01434   )
01435 
01436 #define _noTransTriggers        \
01437   ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
01438     RPMTRANS_FLAG_NOTRIGGERIN | \
01439     RPMTRANS_FLAG_NOTRIGGERUN | \
01440     RPMTRANS_FLAG_NOTRIGGERPOSTUN \
01441   )
01442 
01450 /*@unused@*/
01451 int rpmGetRpmlibProvides(/*@null@*/ /*@out@*/ const char *** provNames,
01452                         /*@null@*/ /*@out@*/ int ** provFlags,
01453                         /*@null@*/ /*@out@*/ const char *** provVersions)
01454         /*@modifies *provNames, *provFlags, *provVersions @*/;
01455 
01463 int rpmvercmp(const char * a, const char * b)
01464         /*@*/;
01465 
01476 int rpmRangesOverlap(const char * AName, const char * AEVR, int AFlags,
01477                         const char * BName, const char * BEVR, int BFlags)
01478         /*@*/;
01479 
01487 int rpmCheckRpmlibProvides(const char * keyName, const char * keyEVR,
01488                 int keyFlags)
01489         /*@*/;
01490 
01495 void rpmShowRpmlibProvides(FILE * fp)
01496         /*@globals fileSystem @*/
01497         /*@modifies *fp, fileSystem @*/;
01498 
01502 typedef enum rpmprobFilterFlags_e {
01503     RPMPROB_FILTER_NONE         = 0,
01504     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
01505     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
01506     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
01507     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
01508     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
01509     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
01510     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
01511     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
01512     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
01513 } rpmprobFilterFlags;
01514 
01526 int rpmRunTransactions(rpmTransactionSet ts,
01527                         rpmCallbackFunction notify,
01528                         /*@owned@*/ rpmCallbackData notifyData,
01529                         rpmProblemSet okProbs,
01530                         /*@out@*/ rpmProblemSet * newProbs,
01531                         rpmtransFlags transFlags,
01532                         rpmprobFilterFlags ignoreSet)
01533         /*@globals rpmGlobalMacroContext,
01534                 fileSystem, internalState@*/
01535         /*@modifies ts, *newProbs, rpmGlobalMacroContext,
01536                 fileSystem, internalState @*/;
01537 
01545 /*@-redecl@*/
01546 /*@observer@*/ extern const char *const tagName(int tag)
01547         /*@*/;
01548 /*@=redecl@*/
01549 
01555 int tagValue(const char *tagstr)
01556         /*@*/;
01557 
01558 #define RPMLEAD_BINARY 0
01559 #define RPMLEAD_SOURCE 1
01560 
01561 #define RPMLEAD_MAGIC0 0xed
01562 #define RPMLEAD_MAGIC1 0xab
01563 #define RPMLEAD_MAGIC2 0xee
01564 #define RPMLEAD_MAGIC3 0xdb
01565 
01566 #define RPMLEAD_SIZE 96         
01574 struct rpmlead {
01575     unsigned char magic[4];
01576     unsigned char major, minor;
01577     short type;
01578     short archnum;
01579     char name[66];
01580     short osnum;
01581     short signature_type;       
01582 /*@unused@*/ char reserved[16]; 
01583 } ;
01584 
01588 void freeFilesystems(void)
01589         /*@globals internalState@*/
01590         /*@modifies internalState@*/;
01591 
01598 int rpmGetFilesystemList( /*@null@*/ /*@out@*/ const char *** listptr,
01599                 /*@null@*/ /*@out@*/ int * num)
01600         /*@globals fileSystem, internalState @*/
01601         /*@modifies *listptr, *num, fileSystem, internalState @*/;
01602 
01612 int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes,
01613                 int numFiles, /*@null@*/ /*@out@*/ uint_32 ** usagesPtr,
01614                 int flags)
01615         /*@globals rpmGlobalMacroContext,
01616                 fileSystem, internalState @*/
01617         /*@modifies *usagesPtr, rpmGlobalMacroContext,
01618                 fileSystem, internalState @*/;
01619 
01620 /* ==================================================================== */
01623 
01626 typedef struct rpmQVArguments_s * QVA_t;
01627 
01632 typedef enum rpmQVSources_e {
01633     RPMQV_PACKAGE = 0,  
01634     RPMQV_PATH,         
01635     RPMQV_ALL,          
01636     RPMQV_RPM,          
01637     RPMQV_GROUP,        
01638     RPMQV_WHATPROVIDES, 
01639     RPMQV_WHATREQUIRES, 
01640     RPMQV_TRIGGEREDBY,  
01641     RPMQV_DBOFFSET,     
01642     RPMQV_SPECFILE,     
01643     RPMQV_PKGID,        
01644     RPMQV_HDRID,        
01645     RPMQV_FILEID,       
01646     RPMQV_TID           
01647 } rpmQVSources;
01648 
01653 typedef enum rpmVerifyAttrs_e {
01654     RPMVERIFY_NONE      = 0,            
01655     RPMVERIFY_MD5       = (1 << 0),     
01656     RPMVERIFY_FILESIZE  = (1 << 1),     
01657     RPMVERIFY_LINKTO    = (1 << 2),     
01658     RPMVERIFY_USER      = (1 << 3),     
01659     RPMVERIFY_GROUP     = (1 << 4),     
01660     RPMVERIFY_MTIME     = (1 << 5),     
01661     RPMVERIFY_MODE      = (1 << 6),     
01662     RPMVERIFY_RDEV      = (1 << 7),     
01663         /* bits 8-15 unused, reserved for rpmVerifyAttrs */
01664         /* bits 16-19 used in rpmVerifyFlags */
01665         /* bits 20-22 unused */
01666         /* bits 23-27 used in rpmQueryFlags */
01667     RPMVERIFY_READLINKFAIL= (1 << 28),  
01668     RPMVERIFY_READFAIL  = (1 << 29),    
01669     RPMVERIFY_LSTATFAIL = (1 << 30)     
01670         /* bit 31 unused */
01671 } rpmVerifyAttrs;
01672 #define RPMVERIFY_ALL           ~(RPMVERIFY_NONE)
01673 
01684 int rpmVerifyFile(const char * root, Header h, int filenum,
01685                 /*@out@*/ rpmVerifyAttrs * result, rpmVerifyAttrs omitMask)
01686         /*@globals fileSystem @*/
01687         /*@modifies h, *result, fileSystem @*/;
01688 
01697 int rpmVerifyScript(const char * rootDir, Header h, /*@null@*/ FD_t scriptFd)
01698         /*@globals rpmGlobalMacroContext, fileSystem @*/
01699         /*@modifies h, scriptFd,
01700                 rpmGlobalMacroContext, fileSystem @*/;
01701 
01703 /* ==================================================================== */
01706 /* --- install/upgrade/erase modes */
01707 
01712 typedef enum rpmInstallInterfaceFlags_e {
01713     INSTALL_NONE        = 0,
01714     INSTALL_PERCENT     = (1 << 0),     
01715     INSTALL_HASH        = (1 << 1),     
01716     INSTALL_NODEPS      = (1 << 2),     
01717     INSTALL_NOORDER     = (1 << 3),     
01718     INSTALL_LABEL       = (1 << 4),     
01719     INSTALL_UPGRADE     = (1 << 5),     
01720     INSTALL_FRESHEN     = (1 << 6),     
01721     INSTALL_INSTALL     = (1 << 7),     
01722     INSTALL_ERASE       = (1 << 8)      
01723 } rpmInstallInterfaceFlags;
01724 
01728 typedef enum rpmEraseInterfaceFlags_e {
01729     UNINSTALL_NONE      = 0,
01730     UNINSTALL_NODEPS    = (1 << 0),     
01731     UNINSTALL_ALLMATCHES= (1 << 1)      
01732 } rpmEraseInterfaceFlags;
01733 
01735 /* ==================================================================== */
01738 
01742 enum rpmtagSignature {
01743     RPMSIGTAG_SIZE      = 1000, 
01744 /* the md5 sum was broken *twice* on big endian machines */
01745     RPMSIGTAG_LEMD5_1   = 1001, 
01746     RPMSIGTAG_PGP       = 1002, 
01747     RPMSIGTAG_LEMD5_2   = 1003, 
01748     RPMSIGTAG_MD5       = 1004, 
01749     RPMSIGTAG_GPG       = 1005, 
01750     RPMSIGTAG_PGP5      = 1006, 
01751     RPMSIGTAG_PAYLOADSIZE = 1007,
01753     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
01754     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
01755     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
01756     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
01757     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER      
01758 };
01759 
01763 typedef enum rpmVerifySignatureReturn_e {
01764     RPMSIG_OK           = 0,    
01765     RPMSIG_UNKNOWN      = 1,    
01766     RPMSIG_BAD          = 2,    
01767     RPMSIG_NOKEY        = 3,    
01768     RPMSIG_NOTTRUSTED   = 4     
01769 } rpmVerifySignatureReturn;
01770 
01780 rpmVerifySignatureReturn rpmVerifySignature(const char *file,
01781                 int_32 sigTag, const void * sig, int count,
01782                 /*@out@*/ char * result)
01783         /*@globals rpmGlobalMacroContext, fileSystem @*/
01784         /*@modifies *result, rpmGlobalMacroContext, fileSystem @*/;
01785 
01791 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header h)
01792         /*@modifies h @*/;
01793 
01796 #ifdef __cplusplus
01797 }
01798 #endif
01799 
01800 #endif  /* H_RPMLIB */

Generated on Thu Apr 18 17:34:43 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002