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 
00009 /* This is the *only* module users of rpmlib should need to include */
00010 
00011 /* and it shouldn't need these :-( */
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 /*@unused@*/ static inline /*@null@*/ void *
00040 _free(/*@only@*/ /*@null@*/ const void * p)
00041         /*@modifies p @*/
00042 {
00043     if (p != NULL)      free((void *)p);
00044     return NULL;
00045 }
00046 
00056 rpmRC rpmReadPackageInfo(FD_t fd, /*@null@*/ /*@out@*/ Header * sigp,
00057                 /*@null@*/ /*@out@*/ Header * hdrp)
00058         /*@modifies fd, *sigp, *hdrp, fileSystem @*/;
00059 
00069 rpmRC rpmReadPackageHeader(FD_t fd, /*@null@*/ /*@out@*/ Header * hdrp,
00070                 /*@null@*/ /*@out@*/ int * isSource,
00071                 /*@null@*/ /*@out@*/ int * major,
00072                 /*@null@*/ /*@out@*/ int * minor)
00073         /*@modifies fd, *hdrp, *isSource, *major, *minor, fileSystem @*/;
00074 
00083 int headerNVR(Header h,
00084                 /*@null@*/ /*@out@*/ const char ** np,
00085                 /*@null@*/ /*@out@*/ const char ** vp,
00086                 /*@null@*/ /*@out@*/ const char ** rp)
00087         /*@modifies *np, *vp, *rp @*/;
00088 
00094 void headerMergeLegacySigs(Header h, const Header sig)
00095         /*@modifies h @*/;
00096 
00102 Header headerRegenSigHeader(const Header h)
00103         /*@*/;
00104 
00118 void rpmBuildFileList(Header h, /*@out@*/ const char *** fileListPtr, 
00119                 /*@out@*/ int * fileCountPtr)
00120         /*@modifies *fileListPtr, *fileCountPtr @*/;
00121 
00135 int rpmHeaderGetEntry(Header h, int_32 tag, /*@out@*/ int_32 *type,
00136                 /*@out@*/ void **p, /*@out@*/ int_32 *c)
00137         /*@modifies *type, *p, *c @*/;
00138 
00154 /*@unused@*/
00155 int rpmPackageGetEntry(void *leadp, Header sigs, Header h,
00156                 int_32 tag, int_32 *type, void **p, int_32 *c)
00157         /*@modifies h, *type, *p, *c @*/;
00158 
00162 /*@-redecl@*/
00163 extern const struct headerTagTableEntry_s rpmTagTable[];
00164 /*@=redecl@*/
00165 
00169 /*@-redecl@*/
00170 extern const int rpmTagTableSize;
00171 /*@=redecl@*/
00172 
00177 /*@-redecl@*/
00178 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00179 /*@=redecl@*/
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 /*@-enummemuse@*/
00201     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00203     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00204 /*@=enummemuse@*/
00205 
00206 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00207 /* the md5 sum was broken *twice* on big endian machines */
00208 /* XXX 2nd underscore prevents tagTable generation */
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    /* backward comaptibility */
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 /* backward comaptibility */
00238     RPMTAG_PACKAGER             = 1015,
00239     RPMTAG_GROUP                = 1016,
00240 /*@-enummemuse@*/
00241     RPMTAG_CHANGELOG            = 1017, 
00242 /*@=enummemuse@*/
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, /* obsolete */
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 /*@-enummemuse@*/
00264     RPMTAG_ROOT                 = 1038, 
00265 /*@=enummemuse@*/
00266     RPMTAG_FILEUSERNAME         = 1039,
00267     RPMTAG_FILEGROUPNAME        = 1040,
00268 /*@-enummemuse@*/
00269     RPMTAG_EXCLUDE              = 1041, 
00270     RPMTAG_EXCLUSIVE            = 1042, 
00271 /*@=enummemuse@*/
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      /* backward comaptibility */
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    /* backward comaptibility */
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 /*@-enummemuse@*/
00328     RPMTAG_CAPABILITY           = 1105, 
00329 /*@=enummemuse@*/
00330     RPMTAG_SOURCEPACKAGE        = 1106, 
00331 /*@-enummemuse@*/
00332     RPMTAG_OLDORIGFILENAMES     = 1107, 
00333 /*@=enummemuse@*/
00334     RPMTAG_BUILDPREREQ          = 1108, 
00335     RPMTAG_BUILDREQUIRES        = 1109, 
00336     RPMTAG_BUILDCONFLICTS       = 1110, 
00337 /*@-enummemuse@*/
00338     RPMTAG_BUILDMACROS          = 1111, 
00339 /*@=enummemuse@*/
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 /*@-enummemuse@*/
00362     RPMTAG_FIRSTFREE_TAG        
00363 /*@=enummemuse@*/
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 /*@-enummemuse@*/
00383     RPMFILE_NONE        = 0,
00384 /*@=enummemuse@*/
00385     RPMFILE_CONFIG      = (1 << 0),     
00386     RPMFILE_DOC         = (1 << 1),     
00387 /*@-enummemuse@*/
00388     RPMFILE_DONOTUSE    = (1 << 2),     
00389 /*@=enummemuse@*/
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 /* XXX Check file flags for multilib marker. */
00405 #define isFileMULTILIB(_fflags)         ((_fflags) & RPMFILE_MULTILIB_MASK)
00406 
00410 typedef enum rpmsenseFlags_e {
00411     RPMSENSE_ANY        = 0,
00412 /*@-enummemuse@*/
00413     RPMSENSE_SERIAL     = (1 << 0),     
00414 /*@=enummemuse@*/
00415     RPMSENSE_LESS       = (1 << 1),
00416     RPMSENSE_GREATER    = (1 << 2),
00417     RPMSENSE_EQUAL      = (1 << 3),
00418     RPMSENSE_PROVIDES   = (1 << 4), /* only used internally by builds */
00419     RPMSENSE_CONFLICTS  = (1 << 5), /* only used internally by builds */
00420     RPMSENSE_PREREQ     = (1 << 6),     
00421     RPMSENSE_OBSOLETES  = (1 << 7), /* only used internally by builds */
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 /*@-enummemuse@*/
00441     RPMSENSE_TRIGGERPREIN = (1 << 25)   
00442 /*@=enummemuse@*/
00443 
00444 } rpmsenseFlags;
00445 
00446 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00447                                          /* less, greater, equal.          */
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 /* Stuff for maintaining "variables" like SOURCEDIR, BUILDDIR, etc */
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      /* number of RPMVAR entries */
00489 
00495 /*@-redecl@*/
00496 /*@observer@*/ /*@null@*/ extern const char * rpmGetVar(int var)
00497         /*@*/;
00498 /*@=redecl@*/
00499 
00505 void rpmSetVar(int var, const char * val)
00506         /*@modifies internalState @*/;
00507 
00513 /*@-redecl@*/
00514 /*@observer@*/ extern const char * macrofiles;
00515 /*@=redecl@*/
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(/*@null@*/ const char * file,
00536                 /*@null@*/ const char * target)
00537         /*@modifies fileSystem @*/;
00538 
00544 int rpmReadRC(/*@null@*/ const char * rcfiles)
00545         /*@modifies fileSystem @*/;
00546 
00553 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00554                 /*@null@*/ /*@out@*/ int * num)
00555         /*@modifies *name, *num @*/;
00556 
00563 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00564                 /*@null@*/ /*@out@*/ int * num)
00565         /*@modifies *name, *num @*/;
00566 
00580 int rpmMachineScore(int type, const char * name)
00581         /*@*/;
00582 
00588 int rpmShowRC(FILE * fp)
00589         /*@modifies *fp, fileSystem @*/;
00590 
00598 void rpmSetTables(int archTable, int osTable)
00599         /*@modifies internalState @*/;
00600 
00611 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00612         /*@modifies internalState @*/;
00613 
00622 /*@unused@*/
00623 void rpmGetMachine( /*@null@*/ /*@out@*/ const char **arch,
00624                 /*@null@*/ /*@out@*/ const char **os)
00625         /*@modifies *arch, *os @*/;
00626 
00631 void rpmFreeRpmrc(void)
00632         /*@modifies internalState @*/;
00633 
00635 /* ==================================================================== */
00638 
00641 typedef /*@abstract@*/ struct rpmdb_s * rpmdb;
00642 
00645 typedef /*@abstract@*/ struct _dbiIndexSet * dbiIndexSet;
00646 
00650 /*@only@*/ /*@null@*/ extern int * dbiTags;
00651 extern int dbiTagsMax;
00652 
00661 int rpmdbOpen (/*@null@*/ const char * root, /*@null@*/ /*@out@*/ rpmdb * dbp,
00662                 int mode, int perms)
00663         /*@modifies *dbp, fileSystem @*/;
00664 
00671 int rpmdbInit(/*@null@*/ const char * root, int perms)
00672         /*@modifies fileSystem @*/;
00673 
00679 int rpmdbVerify(/*@null@*/ const char * root)
00680         /*@modifies fileSystem @*/;
00681 
00687 int rpmdbClose (/*@only@*/ /*@null@*/ rpmdb rpmdb)
00688         /*@modifies fileSystem @*/;
00689 
00695 int rpmdbSync (/*@null@*/ rpmdb rpmdb)
00696         /*@modifies fileSystem @*/;
00697 
00703 int rpmdbOpenAll (/*@null@*/ rpmdb db)
00704         /*@modifies db, fileSystem @*/;
00705 
00712 int rpmdbCountPackages(/*@null@*/ rpmdb db, const char * name)
00713         /*@modifies db @*/;
00714 
00717 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
00718 
00724 /*@null@*/ rpmdbMatchIterator rpmdbFreeIterator(
00725                 /*@only@*//*@null@*/rpmdbMatchIterator mi)
00726         /*@modifies mi @*/;
00727 
00733 /*@kept@*/ /*@null@*/ rpmdb rpmdbGetIteratorRpmDB(
00734                 /*@null@*/ rpmdbMatchIterator mi)
00735         /*@*/;
00736 
00742 unsigned int rpmdbGetIteratorOffset(/*@null@*/ rpmdbMatchIterator mi)
00743         /*@*/;
00744 
00750 int rpmdbGetIteratorCount(/*@null@*/ rpmdbMatchIterator mi)
00751         /*@*/;
00752 
00760 int rpmdbAppendIterator(/*@null@*/ rpmdbMatchIterator mi,
00761                 /*@null@*/ const int * hdrNums, int nHdrNums)
00762         /*@modifies mi @*/;
00763 
00773 int rpmdbPruneIterator(/*@null@*/ rpmdbMatchIterator mi,
00774                 /*@null@*/ int * hdrNums, int nHdrNums, int sorted)
00775         /*@modifies mi, hdrNums @*/;
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(/*@null@*/ rpmdbMatchIterator mi, rpmTag tag,
00796                 rpmMireMode mode, /*@null@*/ const char * pattern)
00797         /*@modifies mi @*/;
00798 
00809 /*@unused@*/
00810 int rpmdbSetIteratorVersion(/*@null@*/ rpmdbMatchIterator mi,
00811                 /*@null@*/ const char * version)
00812         /*@modifies mi @*/;
00813 
00824 /*@unused@*/
00825 int rpmdbSetIteratorRelease(/*@null@*/ rpmdbMatchIterator mi,
00826                 /*@null@*/ const char * release)
00827         /*@modifies mi @*/;
00828 
00836 int rpmdbSetIteratorRewrite(/*@null@*/ rpmdbMatchIterator mi, int rewrite)
00837         /*@modifies mi @*/;
00838 
00845 int rpmdbSetIteratorModified(/*@null@*/ rpmdbMatchIterator mi, int modified)
00846         /*@modifies mi @*/;
00847 
00853 /*@null@*/ Header rpmdbNextIterator(/*@null@*/ rpmdbMatchIterator mi)
00854         /*@modifies mi @*/;
00855 
00857 /*@unused@*/
00858 /*@null@*/ Header XrpmdbNextIterator(rpmdbMatchIterator mi,
00859                 const char * f, unsigned int l)
00860         /*@modifies mi @*/;
00861 
00870 /*@only@*/ /*@null@*/ rpmdbMatchIterator rpmdbInitIterator(
00871                         /*@kept@*/ /*@null@*/ rpmdb db, int rpmtag,
00872                         /*@null@*/ const void * key, size_t keylen)
00873         /*@modifies db, fileSystem @*/;
00874 
00882 int rpmdbAdd(/*@null@*/ rpmdb db, int iid, Header h)
00883         /*@modifies db, h, fileSystem @*/;
00884 
00892 int rpmdbRemove(/*@null@*/ rpmdb db, /*@unused@*/ int rid, unsigned int offset)
00893         /*@modifies db, fileSystem @*/;
00894 
00899 int rpmdbRebuild(/*@null@*/ const char * root)
00900         /*@modifies fileSystem @*/;
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 /*@abstract@*/ struct rpmProblem_s {
00928 /*@only@*/ /*@null@*/ const char * pkgNEVR;
00929 /*@only@*/ /*@null@*/ const char * altNEVR;
00930 /*@kept@*/ /*@null@*/ const void * key;
00931 /*@null@*/ Header h;
00932     rpmProblemType type;
00933     int ignoreProblem;
00934 /*@only@*/ /*@null@*/ const char * str1;
00935     unsigned long ulong1;
00936 } * rpmProblem;
00937 
00940 typedef /*@abstract@*/ 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         /*@modifies *fp, fileSystem @*/;
00950 
00954 typedef /*@abstract@*/ struct rpmDependencyConflict_s {
00955     const char * byName;        
00956     const char * byVersion;     
00957     const char * byRelease;     
00958     Header byHeader;            
00959     /*
00960      * These needs fields are misnamed -- they are used for the package
00961      * which isn't needed as well.
00962      */
00963     const char * needsName;     
00964     const char * needsVersion;  
00965     int needsFlags;             
00966 /*@owned@*/ /*@null@*/ const void ** suggestedPackages; /* terminated by NULL */
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         /*@modifies *fp, fileSystem @*/;
00982 
00989 /*@-redecl@*/   /* LCL: is confused. */
00990 /*@only@*/ extern const char * rpmProblemString(const rpmProblem prob)
00991         /*@*/;
00992 /*@=redecl@*/
00993 
01000 void rpmProblemPrint(FILE *fp, rpmProblem prob)
01001         /*@modifies prob, *fp, fileSystem @*/;
01002 
01008 void rpmProblemSetPrint(FILE *fp, rpmProblemSet probs)
01009         /*@modifies probs, *fp, fileSystem @*/;
01010 
01015 void rpmProblemSetFree( /*@only@*/ rpmProblemSet probs)
01016         /*@modifies probs @*/;
01017 
01019 /* ==================================================================== */
01028 typedef /*@null@*/
01029     void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
01030         /*@modifies data @*/;
01031 
01045 typedef int (*HGE_t) (Header h, rpmTag tag,
01046                         /*@null@*/ /*@out@*/ rpmTagType * type,
01047                         /*@null@*/ /*@out@*/ void ** p,
01048                         /*@null@*/ /*@out@*/ int_32 * c)
01049         /*@modifies *type, *p, *c @*/;
01050 
01065 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
01066                         const void * p, int_32 c)
01067         /*@modifies h @*/;
01068 
01079 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
01080                         const void * p, int_32 c)
01081         /*@modifies h @*/;
01082 
01093 typedef int (*HRE_t) (Header h, int_32 tag)
01094         /*@modifies h @*/;
01095 
01099 typedef struct rpmRelocation_s {
01100 /*@only@*/ /*@null@*/ const char * oldPath;
01102 /*@only@*/ /*@null@*/ const char * newPath;
01104 } rpmRelocation;
01105 
01116 rpmRC rpmInstallSourcePackage(/*@null@*/ const char * rootDir, FD_t fd,
01117                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
01118                         /*@null@*/ rpmCallbackFunction notify,
01119                         /*@null@*/ rpmCallbackData notifyData,
01120                         /*@null@*/ /*@out@*/ char ** cookie)
01121         /*@modifies fd, *specFilePtr, *cookie @*/;
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 /*@abstract@*/ struct fsmIterator_s * FSMI_t;
01174 
01178 typedef /*@abstract@*/ struct fsm_s * FSM_t;
01179 
01183 typedef /*@abstract@*/ struct psm_s * PSM_t;
01184 
01187 typedef /*@abstract@*/ struct transactionFileInfo_s * TFI_t;
01188 
01195 typedef /*@abstract@*/ struct rpmTransactionSet_s * rpmTransactionSet;
01196 
01203 /*@only@*/ rpmTransactionSet rpmtransCreateSet(
01204                 /*@null@*/ /*@kept@*/ rpmdb rpmdb,
01205                 /*@null@*/ const char * rootDir)
01206         /*@*/;
01207 
01224 int rpmtransAddPackage(rpmTransactionSet ts, Header h, /*@null@*/ FD_t fd,
01225                 /*@null@*/ /*@owned@*/ const void * key, int upgrade,
01226                 /*@null@*/ rpmRelocation * relocs)
01227         /*@modifies fd, h, ts @*/;
01228 
01235 /*@unused@*/
01236 void rpmtransAvailablePackage(rpmTransactionSet ts, Header h,
01237                 /*@null@*/ /*@owned@*/ const void * key)
01238         /*@modifies h, ts @*/;
01239 
01246 int rpmtransRemovePackage(rpmTransactionSet ts, int dboffset)
01247         /*@modifies ts @*/;
01248 
01254 /*@null@*/ rpmTransactionSet
01255 rpmtransFree(/*@only@*//*@null@*/ rpmTransactionSet ts)
01256         /*@modifies ts @*/;
01257 
01263 /*@unused@*/
01264 void rpmtransSetScriptFd(rpmTransactionSet ts, FD_t fd)
01265         /*@modifies ts, fd @*/;
01266 
01275 /*@unused@*/
01276 int rpmtransGetKeys(const rpmTransactionSet ts,
01277                 /*@null@*/ /*@out@*/ const void *** ep,
01278                 /*@null@*/ /*@out@*/ int * nep)
01279         /*@modifies ep, nep @*/;
01280 
01288 int rpmdepCheck(rpmTransactionSet ts,
01289                 /*@exposed@*/ /*@out@*/ rpmDependencyConflict * conflicts,
01290                 /*@exposed@*/ /*@out@*/ int * numConflicts)
01291         /*@modifies ts, *conflicts, *numConflicts, fileSystem @*/;
01292 
01312 int rpmdepOrder(rpmTransactionSet ts)
01313         /*@modifies ts, fileSystem @*/;
01314 
01321 /*@null@*/ rpmDependencyConflict rpmdepFreeConflicts(
01322                 /*@only@*/ /*@null@*/ rpmDependencyConflict conflicts,
01323                 int numConflicts)
01324         /*@modifies conflicts @*/;
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 /*@-enummemuse@*/
01339     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
01340 /*@=enummemuse@*/
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 /*@-enummemuse@*/
01347     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
01348 /*@=enummemuse@*/
01349     RPMTRANS_FLAG_COMMIT        = (1 << 13),
01350 /*@-enummemuse@*/
01351     RPMTRANS_FLAG_UNDO          = (1 << 14),
01352 /*@=enummemuse@*/
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 /*@-enummemuse@*/
01364     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
01365 /*@=enummemuse@*/
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 /*@unused@*/
01393 int rpmGetRpmlibProvides(/*@null@*/ /*@out@*/ const char *** provNames,
01394                         /*@null@*/ /*@out@*/ int ** provFlags,
01395                         /*@null@*/ /*@out@*/ const char *** provVersions)
01396         /*@ modifies *provNames, *provFlags, *provVersions @*/;
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         /*@modifies *fp, fileSystem @*/;
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                         /*@owned@*/ rpmCallbackData notifyData,
01469                         rpmProblemSet okProbs,
01470                         /*@out@*/ rpmProblemSet * newProbs,
01471                         rpmtransFlags transFlags,
01472                         rpmprobFilterFlags ignoreSet)
01473         /*@modifies ts, *newProbs, fileSystem @*/;
01474 
01482 /*@-redecl@*/
01483 /*@observer@*/ extern const char *const tagName(int tag)
01484         /*@*/;
01485 /*@=redecl@*/
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 /*@unused@*/ char reserved[16]; 
01520 } ;
01521 
01525 void freeFilesystems(void)
01526         /*@modifies internalState@*/;
01527 
01534 int rpmGetFilesystemList( /*@null@*/ /*@out@*/ const char *** listptr,
01535                 /*@null@*/ /*@out@*/ int * num)
01536         /*@modifies *listptr, *num @*/;
01537 
01547 int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes,
01548                 int numFiles, /*@null@*/ /*@out@*/ uint_32 ** usagesPtr,
01549                 int flags)
01550         /*@modifies *usagesPtr @*/;
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         /* bits 8-15 unused, reserved for rpmVerifyAttrs */
01592         /* bits 16-19 used in rpmVerifyFlags */
01593         /* bits 20-22 unused */
01594         /* bits 23-27 used in rpmQueryFlags */
01595     RPMVERIFY_READLINKFAIL= (1 << 28),  
01596     RPMVERIFY_READFAIL  = (1 << 29),    
01597     RPMVERIFY_LSTATFAIL = (1 << 30)     
01598         /* bit 31 unused */
01599 } rpmVerifyAttrs;
01600 #define RPMVERIFY_ALL           ~(RPMVERIFY_NONE)
01601 
01612 int rpmVerifyFile(const char * root, Header h, int filenum,
01613                 /*@out@*/ rpmVerifyAttrs * result, rpmVerifyAttrs omitMask)
01614         /*@modifies h, *result, fileSystem @*/;
01615 
01624 int rpmVerifyScript(const char * rootDir, Header h, /*@null@*/ FD_t scriptFd)
01625         /*@modifies h, scriptFd, fileSystem @*/;
01626 
01628 /* ==================================================================== */
01631 /* --- install/upgrade/erase modes */
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 /*@-enummemuse@*/
01668 enum rpmtagSignature {
01669     RPMSIGTAG_SIZE      = 1000, 
01670 /* the md5 sum was broken *twice* on big endian machines */
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 /* Signature tags by Public Key Algorithm (RFC 2440) */
01679 /* N.B.: These tags are tenative, the values may change */
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 /*@=enummemuse@*/
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                 /*@out@*/ char * result)
01724         /*@modifies *result, fileSystem @*/;
01725 
01731 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header h)
01732         /*@modifies h @*/;
01733 
01736 #ifdef __cplusplus
01737 }
01738 #endif
01739 
01740 #endif  /* H_RPMLIB */

Generated on Wed Mar 13 15:34:48 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002