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

rpmlib.h

Go to the documentation of this file.
00001 #ifndef H_RPMLIB
00002 #define H_RPMLIB
00003 
00011 #include "rpmio.h"
00012 #include "rpmmessages.h"
00013 #include "rpmerr.h"
00014 #include "header.h"
00015 #include "popt.h"
00016 
00020 typedef enum rpmRC_e {
00021     RPMRC_OK            = 0,    
00022     RPMRC_NOTFOUND      = 1,    
00023     RPMRC_FAIL          = 2,    
00024     RPMRC_NOTTRUSTED    = 3,    
00025     RPMRC_NOKEY         = 4     
00026 } rpmRC;
00027 
00028 /*@-redecl@*/
00029 /*@checked@*/
00030 extern struct MacroContext_s * rpmGlobalMacroContext;
00031 
00032 /*@checked@*/
00033 extern struct MacroContext_s * rpmCLIMacroContext;
00034 
00035 /*@unchecked@*/ /*@observer@*/
00036 extern const char * RPMVERSION;
00037 
00038 /*@unchecked@*/ /*@observer@*/
00039 extern const char * rpmNAME;
00040 
00041 /*@unchecked@*/ /*@observer@*/
00042 extern const char * rpmEVR;
00043 
00044 /*@unchecked@*/
00045 extern int rpmFLAGS;
00046 /*@=redecl@*/
00047 
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #endif
00051 
00057 /*@unused@*/ static inline /*@null@*/
00058 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00059         /*@modifies p @*/
00060 {
00061     if (p != NULL)      free((void *)p);
00062     return NULL;
00063 }
00064 
00071 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmts_s * rpmts;
00072 
00075 typedef struct Spec_s * Spec;
00076 
00080 typedef /*@abstract@*/ void * alKey;
00081 #define RPMAL_NOMATCH   ((alKey)-1L)
00082 
00086 /*@-mutrep@*/
00087 typedef /*@abstract@*/ int alNum;
00088 /*@=mutrep@*/
00089 
00093 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmds_s * rpmds;
00094 
00098 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi;
00099 
00103 typedef /*@abstract@*/ struct rpmte_s * rpmte;
00104 
00108 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb;
00109 
00113 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
00114 
00123 int headerNVR(Header h,
00124                 /*@null@*/ /*@out@*/ const char ** np,
00125                 /*@null@*/ /*@out@*/ const char ** vp,
00126                 /*@null@*/ /*@out@*/ const char ** rp)
00127         /*@modifies *np, *vp, *rp @*/;
00128 
00139 int headerNEVRA(Header h,
00140                 /*@null@*/ /*@out@*/ const char ** np,
00141                 /*@null@*/ /*@out@*/ /*@unused@*/ const char ** ep,
00142                 /*@null@*/ /*@out@*/ const char ** vp,
00143                 /*@null@*/ /*@out@*/ const char ** rp,
00144                 /*@null@*/ /*@out@*/ const char ** ap)
00145         /*@modifies *np, *vp, *rp, *ap @*/;
00146 
00153 void headerMergeLegacySigs(Header h, const Header sigh)
00154         /*@modifies h, sigh @*/;
00155 
00163 Header headerRegenSigHeader(const Header h, int noArchiveSize)
00164         /*@modifies h @*/;
00165 
00179 /*@unused@*/
00180 int rpmHeaderGetEntry(Header h, int_32 tag, /*@out@*/ int_32 *type,
00181                 /*@out@*/ void **p, /*@out@*/ int_32 *c)
00182         /*@modifies *type, *p, *c @*/;
00183 
00187 /*@-redecl@*/
00188 /*@observer@*/ /*@unchecked@*/
00189 extern const struct headerTagTableEntry_s * rpmTagTable;
00190 /*@=redecl@*/
00191 
00195 /*@-redecl@*/
00196 /*@unchecked@*/
00197 extern const int rpmTagTableSize;
00198 /*@=redecl@*/
00199 
00204 /*@-redecl@*/
00205 /*@unchecked@*/
00206 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00207 /*@=redecl@*/
00208 
00212 #define RPMDBI_PACKAGES         0       
00213 #define RPMDBI_DEPENDS          1       
00214 #define RPMDBI_LABEL            2       
00215 #define RPMDBI_ADDED            3       
00216 #define RPMDBI_REMOVED          4       
00217 #define RPMDBI_AVAILABLE        5       
00223 typedef enum rpmTag_e {
00224 
00225     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00226     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00227     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00228 /*@-enummemuse@*/
00229     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00231     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00232 /*@=enummemuse@*/
00233 
00234 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00235 /* the md5 sum was broken *twice* on big endian machines */
00236 /* XXX 2nd underscore prevents tagTable generation */
00237     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00238     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,
00239     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    
00240     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,
00241     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    
00242     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,
00243 #define RPMTAG_PKGID    RPMTAG_SIGMD5
00244     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,
00245     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    
00247     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    
00248     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    
00249     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,
00250     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,
00251     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,
00252     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,
00253 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER
00254 
00255     RPMTAG_NAME                 = 1000,
00256 #define RPMTAG_N        RPMTAG_NAME
00257     RPMTAG_VERSION              = 1001,
00258 #define RPMTAG_V        RPMTAG_VERSION
00259     RPMTAG_RELEASE              = 1002,
00260 #define RPMTAG_R        RPMTAG_RELEASE
00261     RPMTAG_EPOCH                = 1003,
00262 #define RPMTAG_E        RPMTAG_EPOCH
00263 #define RPMTAG_SERIAL   RPMTAG_EPOCH    /* backward comaptibility */
00264     RPMTAG_SUMMARY              = 1004,
00265     RPMTAG_DESCRIPTION          = 1005,
00266     RPMTAG_BUILDTIME            = 1006,
00267     RPMTAG_BUILDHOST            = 1007,
00268     RPMTAG_INSTALLTIME          = 1008,
00269     RPMTAG_SIZE                 = 1009,
00270     RPMTAG_DISTRIBUTION         = 1010,
00271     RPMTAG_VENDOR               = 1011,
00272     RPMTAG_GIF                  = 1012,
00273     RPMTAG_XPM                  = 1013,
00274     RPMTAG_LICENSE              = 1014,
00275 #define RPMTAG_COPYRIGHT RPMTAG_LICENSE /* backward comaptibility */
00276     RPMTAG_PACKAGER             = 1015,
00277     RPMTAG_GROUP                = 1016,
00278 /*@-enummemuse@*/
00279     RPMTAG_CHANGELOG            = 1017, 
00280 /*@=enummemuse@*/
00281     RPMTAG_SOURCE               = 1018,
00282     RPMTAG_PATCH                = 1019,
00283     RPMTAG_URL                  = 1020,
00284     RPMTAG_OS                   = 1021,
00285     RPMTAG_ARCH                 = 1022,
00286     RPMTAG_PREIN                = 1023,
00287     RPMTAG_POSTIN               = 1024,
00288     RPMTAG_PREUN                = 1025,
00289     RPMTAG_POSTUN               = 1026,
00290     RPMTAG_OLDFILENAMES         = 1027, /* obsolete */
00291     RPMTAG_FILESIZES            = 1028,
00292     RPMTAG_FILESTATES           = 1029,
00293     RPMTAG_FILEMODES            = 1030,
00294     RPMTAG_FILEUIDS             = 1031, 
00295     RPMTAG_FILEGIDS             = 1032, 
00296     RPMTAG_FILERDEVS            = 1033,
00297     RPMTAG_FILEMTIMES           = 1034,
00298     RPMTAG_FILEMD5S             = 1035,
00299     RPMTAG_FILELINKTOS          = 1036,
00300     RPMTAG_FILEFLAGS            = 1037,
00301 /*@-enummemuse@*/
00302     RPMTAG_ROOT                 = 1038, 
00303 /*@=enummemuse@*/
00304     RPMTAG_FILEUSERNAME         = 1039,
00305     RPMTAG_FILEGROUPNAME        = 1040,
00306 /*@-enummemuse@*/
00307     RPMTAG_EXCLUDE              = 1041, 
00308     RPMTAG_EXCLUSIVE            = 1042, 
00309 /*@=enummemuse@*/
00310     RPMTAG_ICON                 = 1043,
00311     RPMTAG_SOURCERPM            = 1044,
00312     RPMTAG_FILEVERIFYFLAGS      = 1045,
00313     RPMTAG_ARCHIVESIZE          = 1046,
00314     RPMTAG_PROVIDENAME          = 1047,
00315 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
00316 #define RPMTAG_P        RPMTAG_PROVIDENAME
00317     RPMTAG_REQUIREFLAGS         = 1048,
00318     RPMTAG_REQUIRENAME          = 1049,
00319 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME
00320 #define RPMTAG_D        RPMTAG_REQUIRENAME
00321     RPMTAG_REQUIREVERSION       = 1050,
00322     RPMTAG_NOSOURCE             = 1051, 
00323     RPMTAG_NOPATCH              = 1052, 
00324     RPMTAG_CONFLICTFLAGS        = 1053,
00325     RPMTAG_CONFLICTNAME         = 1054,
00326 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME
00327 #define RPMTAG_C        RPMTAG_CONFLICTNAME
00328     RPMTAG_CONFLICTVERSION      = 1055,
00329     RPMTAG_DEFAULTPREFIX        = 1056, 
00330     RPMTAG_BUILDROOT            = 1057, 
00331     RPMTAG_INSTALLPREFIX        = 1058, 
00332     RPMTAG_EXCLUDEARCH          = 1059,
00333     RPMTAG_EXCLUDEOS            = 1060,
00334     RPMTAG_EXCLUSIVEARCH        = 1061,
00335     RPMTAG_EXCLUSIVEOS          = 1062,
00336     RPMTAG_AUTOREQPROV          = 1063, 
00337     RPMTAG_RPMVERSION           = 1064,
00338     RPMTAG_TRIGGERSCRIPTS       = 1065,
00339     RPMTAG_TRIGGERNAME          = 1066,
00340     RPMTAG_TRIGGERVERSION       = 1067,
00341     RPMTAG_TRIGGERFLAGS         = 1068,
00342     RPMTAG_TRIGGERINDEX         = 1069,
00343     RPMTAG_VERIFYSCRIPT         = 1079,
00344     RPMTAG_CHANGELOGTIME        = 1080,
00345     RPMTAG_CHANGELOGNAME        = 1081,
00346     RPMTAG_CHANGELOGTEXT        = 1082,
00347 /*@-enummemuse@*/
00348     RPMTAG_BROKENMD5            = 1083, 
00349 /*@=enummemuse@*/
00350     RPMTAG_PREREQ               = 1084, 
00351     RPMTAG_PREINPROG            = 1085,
00352     RPMTAG_POSTINPROG           = 1086,
00353     RPMTAG_PREUNPROG            = 1087,
00354     RPMTAG_POSTUNPROG           = 1088,
00355     RPMTAG_BUILDARCHS           = 1089,
00356     RPMTAG_OBSOLETENAME         = 1090,
00357 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
00358 #define RPMTAG_O        RPMTAG_OBSOLETENAME
00359     RPMTAG_VERIFYSCRIPTPROG     = 1091,
00360     RPMTAG_TRIGGERSCRIPTPROG    = 1092,
00361     RPMTAG_DOCDIR               = 1093, 
00362     RPMTAG_COOKIE               = 1094,
00363     RPMTAG_FILEDEVICES          = 1095,
00364     RPMTAG_FILEINODES           = 1096,
00365     RPMTAG_FILELANGS            = 1097,
00366     RPMTAG_PREFIXES             = 1098,
00367     RPMTAG_INSTPREFIXES         = 1099,
00368     RPMTAG_TRIGGERIN            = 1100, 
00369     RPMTAG_TRIGGERUN            = 1101, 
00370     RPMTAG_TRIGGERPOSTUN        = 1102, 
00371     RPMTAG_AUTOREQ              = 1103, 
00372     RPMTAG_AUTOPROV             = 1104, 
00373 /*@-enummemuse@*/
00374     RPMTAG_CAPABILITY           = 1105, 
00375 /*@=enummemuse@*/
00376     RPMTAG_SOURCEPACKAGE        = 1106, 
00377 /*@-enummemuse@*/
00378     RPMTAG_OLDORIGFILENAMES     = 1107, 
00379 /*@=enummemuse@*/
00380     RPMTAG_BUILDPREREQ          = 1108, 
00381     RPMTAG_BUILDREQUIRES        = 1109, 
00382     RPMTAG_BUILDCONFLICTS       = 1110, 
00383 /*@-enummemuse@*/
00384     RPMTAG_BUILDMACROS          = 1111, 
00385 /*@=enummemuse@*/
00386     RPMTAG_PROVIDEFLAGS         = 1112,
00387     RPMTAG_PROVIDEVERSION       = 1113,
00388     RPMTAG_OBSOLETEFLAGS        = 1114,
00389     RPMTAG_OBSOLETEVERSION      = 1115,
00390     RPMTAG_DIRINDEXES           = 1116,
00391     RPMTAG_BASENAMES            = 1117,
00392     RPMTAG_DIRNAMES             = 1118,
00393     RPMTAG_ORIGDIRINDEXES       = 1119, 
00394     RPMTAG_ORIGBASENAMES        = 1120, 
00395     RPMTAG_ORIGDIRNAMES         = 1121, 
00396     RPMTAG_OPTFLAGS             = 1122,
00397     RPMTAG_DISTURL              = 1123,
00398     RPMTAG_PAYLOADFORMAT        = 1124,
00399     RPMTAG_PAYLOADCOMPRESSOR    = 1125,
00400     RPMTAG_PAYLOADFLAGS         = 1126,
00401     RPMTAG_INSTALLCOLOR         = 1127, 
00402     RPMTAG_INSTALLTID           = 1128,
00403     RPMTAG_REMOVETID            = 1129,
00404 /*@-enummemuse@*/
00405     RPMTAG_SHA1RHN              = 1130, 
00406 /*@=enummemuse@*/
00407     RPMTAG_RHNPLATFORM          = 1131,
00408     RPMTAG_PLATFORM             = 1132,
00409     RPMTAG_PATCHESNAME          = 1133, 
00410     RPMTAG_PATCHESFLAGS         = 1134, 
00411     RPMTAG_PATCHESVERSION       = 1135, 
00412     RPMTAG_CACHECTIME           = 1136,
00413     RPMTAG_CACHEPKGPATH         = 1137,
00414     RPMTAG_CACHEPKGSIZE         = 1138,
00415     RPMTAG_CACHEPKGMTIME        = 1139,
00416     RPMTAG_FILECOLORS           = 1140,
00417     RPMTAG_FILECLASS            = 1141,
00418     RPMTAG_CLASSDICT            = 1142,
00419     RPMTAG_FILEDEPENDSX         = 1143,
00420     RPMTAG_FILEDEPENDSN         = 1144,
00421     RPMTAG_DEPENDSDICT          = 1145,
00422     RPMTAG_SOURCEPKGID          = 1146,
00423     RPMTAG_FILECONTEXTS         = 1147,
00424     RPMTAG_FSCONTEXTS           = 1148, 
00425     RPMTAG_RECONTEXTS           = 1149, 
00426     RPMTAG_POLICIES             = 1150, 
00427 /*@-enummemuse@*/
00428     RPMTAG_FIRSTFREE_TAG        
00429 /*@=enummemuse@*/
00430 } rpmTag;
00431 
00432 #define RPMTAG_EXTERNAL_TAG             1000000
00433 
00437 typedef enum rpmfileState_e {
00438     RPMFILE_STATE_NORMAL        = 0,
00439     RPMFILE_STATE_REPLACED      = 1,
00440     RPMFILE_STATE_NOTINSTALLED  = 2,
00441     RPMFILE_STATE_NETSHARED     = 3,
00442     RPMFILE_STATE_WRONGCOLOR    = 4
00443 } rpmfileState;
00444 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00445 
00449 typedef enum rpmfileAttrs_e {
00450 /*@-enummemuse@*/
00451     RPMFILE_NONE        = 0,
00452 /*@=enummemuse@*/
00453     RPMFILE_CONFIG      = (1 <<  0),    
00454     RPMFILE_DOC         = (1 <<  1),    
00455     RPMFILE_ICON        = (1 <<  2),    
00456     RPMFILE_MISSINGOK   = (1 <<  3),    
00457     RPMFILE_NOREPLACE   = (1 <<  4),    
00458     RPMFILE_SPECFILE    = (1 <<  5),    
00459     RPMFILE_GHOST       = (1 <<  6),    
00460     RPMFILE_LICENSE     = (1 <<  7),    
00461     RPMFILE_README      = (1 <<  8),    
00462     RPMFILE_EXCLUDE     = (1 <<  9),    
00463     RPMFILE_UNPATCHED   = (1 << 10),    
00464     RPMFILE_PUBKEY      = (1 << 11),    
00465     RPMFILE_POLICY      = (1 << 12)     
00466 } rpmfileAttrs;
00467 
00468 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00469 
00473 typedef enum rpmsenseFlags_e {
00474     RPMSENSE_ANY        = 0,
00475 /*@-enummemuse@*/
00476     RPMSENSE_SERIAL     = (1 << 0),     
00477 /*@=enummemuse@*/
00478     RPMSENSE_LESS       = (1 << 1),
00479     RPMSENSE_GREATER    = (1 << 2),
00480     RPMSENSE_EQUAL      = (1 << 3),
00481     RPMSENSE_PROVIDES   = (1 << 4), /* only used internally by builds */
00482     RPMSENSE_CONFLICTS  = (1 << 5), /* only used internally by builds */
00483     RPMSENSE_PREREQ     = (1 << 6),     
00484     RPMSENSE_OBSOLETES  = (1 << 7), /* only used internally by builds */
00485     RPMSENSE_INTERP     = (1 << 8),     
00486     RPMSENSE_SCRIPT_PRE = ((1 << 9)|RPMSENSE_PREREQ), 
00487     RPMSENSE_SCRIPT_POST = ((1 << 10)|RPMSENSE_PREREQ), 
00488     RPMSENSE_SCRIPT_PREUN = ((1 << 11)|RPMSENSE_PREREQ), 
00489     RPMSENSE_SCRIPT_POSTUN = ((1 << 12)|RPMSENSE_PREREQ), 
00490     RPMSENSE_SCRIPT_VERIFY = (1 << 13), 
00491     RPMSENSE_FIND_REQUIRES = (1 << 14), 
00492     RPMSENSE_FIND_PROVIDES = (1 << 15), 
00494     RPMSENSE_TRIGGERIN  = (1 << 16),    
00495     RPMSENSE_TRIGGERUN  = (1 << 17),    
00496     RPMSENSE_TRIGGERPOSTUN = (1 << 18), 
00497     RPMSENSE_MISSINGOK  = (1 << 19),    
00498     RPMSENSE_SCRIPT_PREP = (1 << 20),   
00499     RPMSENSE_SCRIPT_BUILD = (1 << 21),  
00500     RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00501     RPMSENSE_SCRIPT_CLEAN = (1 << 23),  
00502     RPMSENSE_RPMLIB     = ((1 << 24) | RPMSENSE_PREREQ), 
00503 /*@-enummemuse@*/
00504     RPMSENSE_TRIGGERPREIN = (1 << 25),  
00505 /*@=enummemuse@*/
00506     RPMSENSE_KEYRING    = (1 << 26),
00507     RPMSENSE_PATCHES    = (1 << 27),
00508     RPMSENSE_CONFIG     = (1 << 28)
00509 } rpmsenseFlags;
00510 
00511 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00512                                          /* less, greater, equal.          */
00513 
00514 #define RPMSENSE_TRIGGER        \
00515         (RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00516 
00517 #define _ALL_REQUIRES_MASK      (\
00518     RPMSENSE_INTERP | \
00519     RPMSENSE_SCRIPT_PRE | \
00520     RPMSENSE_SCRIPT_POST | \
00521     RPMSENSE_SCRIPT_PREUN | \
00522     RPMSENSE_SCRIPT_POSTUN | \
00523     RPMSENSE_SCRIPT_VERIFY | \
00524     RPMSENSE_FIND_REQUIRES | \
00525     RPMSENSE_SCRIPT_PREP | \
00526     RPMSENSE_SCRIPT_BUILD | \
00527     RPMSENSE_SCRIPT_INSTALL | \
00528     RPMSENSE_SCRIPT_CLEAN | \
00529     RPMSENSE_RPMLIB | \
00530     RPMSENSE_KEYRING )
00531 
00532 #define _notpre(_x)             ((_x) & ~RPMSENSE_PREREQ)
00533 #define _INSTALL_ONLY_MASK \
00534     _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
00535 #define _ERASE_ONLY_MASK  \
00536     _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00537 
00538 #define isLegacyPreReq(_x)  (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00539 #define isInstallPreReq(_x)     ((_x) & _INSTALL_ONLY_MASK)
00540 #define isErasePreReq(_x)       ((_x) & _ERASE_ONLY_MASK)
00541 
00542 /* ==================================================================== */
00545 
00546 /* Stuff for maintaining "variables" like SOURCEDIR, BUILDDIR, etc */
00547 #define RPMVAR_OPTFLAGS                 3
00548 #define RPMVAR_PROVIDES                 38
00549 #define RPMVAR_INCLUDE                  43
00550 #define RPMVAR_MACROFILES               49
00551 
00552 #define RPMVAR_NUM                      55      /* number of RPMVAR entries */
00553 
00559 /*@-redecl@*/
00560 /*@observer@*/ /*@null@*/ extern const char * rpmGetVar(int var)
00561         /*@*/;
00562 /*@=redecl@*/
00563 
00569 void rpmSetVar(int var, const char * val)
00570         /*@globals internalState@*/
00571         /*@modifies internalState @*/;
00572 
00577 enum rpm_machtable_e {
00578     RPM_MACHTABLE_INSTARCH      = 0,    
00579     RPM_MACHTABLE_INSTOS        = 1,    
00580     RPM_MACHTABLE_BUILDARCH     = 2,    
00581     RPM_MACHTABLE_BUILDOS       = 3     
00582 };
00583 #define RPM_MACHTABLE_COUNT     4       
00591 int rpmReadConfigFiles(/*@null@*/ const char * file,
00592                 /*@null@*/ const char * target)
00593         /*@globals rpmGlobalMacroContext, rpmCLIMacroContext, h_errno,
00594                 fileSystem, internalState @*/
00595         /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
00596                 fileSystem, internalState @*/;
00597 
00604 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00605                 /*@null@*/ /*@out@*/ int * num)
00606         /*@modifies *name, *num @*/;
00607 
00614 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00615                 /*@null@*/ /*@out@*/ int * num)
00616         /*@modifies *name, *num @*/;
00617 
00631 int rpmMachineScore(int type, const char * name)
00632         /*@*/;
00633 
00639 int rpmShowRC(FILE * fp)
00640         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00641         /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00642 
00650 void rpmSetTables(int archTable, int osTable)
00651         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00652         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00653 
00664 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00665         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00666         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00667 
00676 /*@unused@*/
00677 void rpmGetMachine( /*@null@*/ /*@out@*/ const char **arch,
00678                 /*@null@*/ /*@out@*/ const char **os)
00679         /*@modifies *arch, *os @*/;
00680 
00685 void rpmFreeRpmrc(void)
00686         /*@globals internalState @*/
00687         /*@modifies internalState @*/;
00688 
00690 /* ==================================================================== */
00700 typedef /*@null@*/
00701     void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
00702         /*@modifies data @*/;
00703 
00718 typedef int (*HGE_t) (Header h, rpmTag tag,
00719                         /*@null@*/ /*@out@*/ rpmTagType * type,
00720                         /*@null@*/ /*@out@*/ void ** p,
00721                         /*@null@*/ /*@out@*/ int_32 * c)
00722         /*@modifies *type, *p, *c @*/;
00723 
00739 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
00740                         const void * p, int_32 c)
00741         /*@modifies h @*/;
00742 
00754 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
00755                         const void * p, int_32 c)
00756         /*@modifies h @*/;
00757 
00768 typedef int (*HRE_t) (Header h, int_32 tag)
00769         /*@modifies h @*/;
00770 
00774 typedef enum rpmprobFilterFlags_e {
00775     RPMPROB_FILTER_NONE         = 0,
00776     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
00777     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
00778     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
00779     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
00780     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
00781     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
00782     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
00783     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
00784     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
00785 } rpmprobFilterFlags;
00786 
00790 typedef struct rpmRelocation_s {
00791 /*@only@*/ /*@null@*/
00792     const char * oldPath;       
00793 /*@only@*/ /*@null@*/
00794     const char * newPath;       
00795 } rpmRelocation;
00796 
00803 int rpmVersionCompare(Header first, Header second)
00804         /*@*/;
00805 
00809 typedef enum fileAction_e {
00810     FA_UNKNOWN = 0,     
00811     FA_CREATE,          
00812     FA_COPYIN,          
00813     FA_COPYOUT,         
00814     FA_BACKUP,          
00815     FA_SAVE,            
00816     FA_SKIP,            
00817     FA_ALTNAME,         
00818     FA_ERASE,           
00819     FA_SKIPNSTATE,      
00820     FA_SKIPNETSHARED,   
00821     FA_SKIPCOLOR        
00822 } fileAction;
00823 
00824 #define XFA_SKIPPING(_a)        \
00825     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00826 
00834 typedef enum fileTypes_e {
00835     PIPE        =  1,   
00836     CDEV        =  2,   
00837     XDIR        =  4,   
00838     BDEV        =  6,   
00839     REG         =  8,   
00840     LINK        = 10,   
00841     SOCK        = 12    
00842 } fileTypes;
00843 
00847 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
00848 
00852 typedef /*@abstract@*/ struct fsm_s * FSM_t;
00853 
00857 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
00858 
00868 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
00869         /*@modifies *iv @*/;
00870 
00884 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
00885                 /*@out@*/ /*@null@*/ const char ** msg)
00886         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00887         /*@modifies ts, *msg, rpmGlobalMacroContext,
00888                 fileSystem, internalState @*/;
00889 
00898 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
00899                 /*@out@*/ /*@null@*/ const char ** msg)
00900         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00901         /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
00902                 fileSystem, internalState @*/;
00903 
00912 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd,
00913                 const char * fn, /*@null@*/ /*@out@*/ Header * hdrp)
00914         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00915         /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext,
00916                 fileSystem, internalState @*/;
00917 
00926 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd,
00927                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
00928                         /*@null@*/ /*@out@*/ const char ** cookie)
00929         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00930         /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext,
00931                 fileSystem, internalState @*/;
00932 
00936 typedef enum rpmtransFlags_e {
00937     RPMTRANS_FLAG_NONE          = 0,
00938     RPMTRANS_FLAG_TEST          = (1 <<  0),    
00939     RPMTRANS_FLAG_BUILD_PROBS   = (1 <<  1),    
00940     RPMTRANS_FLAG_NOSCRIPTS     = (1 <<  2),    
00941     RPMTRANS_FLAG_JUSTDB        = (1 <<  3),    
00942     RPMTRANS_FLAG_NOTRIGGERS    = (1 <<  4),    
00943     RPMTRANS_FLAG_NODOCS        = (1 <<  5),    
00944     RPMTRANS_FLAG_ALLFILES      = (1 <<  6),    
00945 /*@-enummemuse@*/
00946     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
00947 /*@=enummemuse@*/
00948     RPMTRANS_FLAG_NOCONTEXTS    = (1 <<  8),    
00949     RPMTRANS_FLAG_DIRSTASH      = (1 <<  9),    
00950     RPMTRANS_FLAG_REPACKAGE     = (1 << 10),    
00952     RPMTRANS_FLAG_PKGCOMMIT     = (1 << 11),
00953 /*@-enummemuse@*/
00954     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
00955 /*@=enummemuse@*/
00956     RPMTRANS_FLAG_COMMIT        = (1 << 13),
00957 /*@-enummemuse@*/
00958     RPMTRANS_FLAG_UNDO          = (1 << 14),
00959 /*@=enummemuse@*/
00960     RPMTRANS_FLAG_REVERSE       = (1 << 15),
00961 
00962     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),    
00963     RPMTRANS_FLAG_NOPRE         = (1 << 17),    
00964     RPMTRANS_FLAG_NOPOST        = (1 << 18),    
00965     RPMTRANS_FLAG_NOTRIGGERIN   = (1 << 19),    
00966     RPMTRANS_FLAG_NOTRIGGERUN   = (1 << 20),    
00967     RPMTRANS_FLAG_NOPREUN       = (1 << 21),    
00968     RPMTRANS_FLAG_NOPOSTUN      = (1 << 22),    
00969     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),  
00970 /*@-enummemuse@*/
00971     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
00972 /*@=enummemuse@*/
00973     RPMTRANS_FLAG_APPLYONLY     = (1 << 25),
00974 
00975     RPMTRANS_FLAG_ANACONDA      = (1 << 26),    
00976     RPMTRANS_FLAG_NOMD5         = (1 << 27),    
00977     RPMTRANS_FLAG_NOSUGGEST     = (1 << 28),    
00978     RPMTRANS_FLAG_ADDINDEPS     = (1 << 29),    
00979     RPMTRANS_FLAG_NOCONFIGS     = (1 << 30),    
00980     RPMTRANS_FLAG_DEPLOOPS      = (1 << 31)     
00981 } rpmtransFlags;
00982 
00983 #define _noTransScripts         \
00984   ( RPMTRANS_FLAG_NOPRE |       \
00985     RPMTRANS_FLAG_NOPOST |      \
00986     RPMTRANS_FLAG_NOPREUN |     \
00987     RPMTRANS_FLAG_NOPOSTUN      \
00988   )
00989 
00990 #define _noTransTriggers        \
00991   ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
00992     RPMTRANS_FLAG_NOTRIGGERIN | \
00993     RPMTRANS_FLAG_NOTRIGGERUN | \
00994     RPMTRANS_FLAG_NOTRIGGERPOSTUN \
00995   )
00996 
01004 /*@unused@*/
01005 int rpmGetRpmlibProvides(/*@null@*/ /*@out@*/ const char *** provNames,
01006                         /*@null@*/ /*@out@*/ int ** provFlags,
01007                         /*@null@*/ /*@out@*/ const char *** provVersions)
01008         /*@modifies *provNames, *provFlags, *provVersions @*/;
01009 
01017 int rpmvercmp(const char * a, const char * b)
01018         /*@*/;
01019 
01025 int rpmCheckRpmlibProvides(const rpmds key)
01026         /*@*/;
01027 
01032 void rpmShowRpmlibProvides(FILE * fp)
01033         /*@globals fileSystem @*/
01034         /*@modifies *fp, fileSystem @*/;
01035 
01043 /*@-redecl@*/
01044 /*@observer@*/ extern const char *const tagName(int tag)
01045         /*@*/;
01046 /*@=redecl@*/
01047 
01053 int tagValue(const char * tagstr)
01054         /*@*/;
01055 
01056 #define RPMLEAD_BINARY 0
01057 #define RPMLEAD_SOURCE 1
01058 
01059 #define RPMLEAD_MAGIC0 0xed
01060 #define RPMLEAD_MAGIC1 0xab
01061 #define RPMLEAD_MAGIC2 0xee
01062 #define RPMLEAD_MAGIC3 0xdb
01063 
01064 #define RPMLEAD_SIZE 96         
01072 struct rpmlead {
01073     unsigned char magic[4];
01074     unsigned char major;
01075     unsigned char minor;
01076     short type;
01077     short archnum;
01078     char name[66];
01079     short osnum;
01080     short signature_type;       
01081 /*@unused@*/ char reserved[16]; 
01082 } ;
01083 
01087 void freeFilesystems(void)
01088         /*@globals internalState@*/
01089         /*@modifies internalState@*/;
01090 
01097 /*@-incondefs@*/
01098 int rpmGetFilesystemList( /*@null@*/ /*@out@*/ const char *** listptr,
01099                 /*@null@*/ /*@out@*/ int * num)
01100         /*@globals fileSystem, internalState @*/
01101         /*@modifies *listptr, *num, fileSystem, internalState @*/
01102         /*@requires maxSet(listptr) >= 0 /\ maxSet(num) >= 0 @*/
01103         /*@ensures maxRead(num) == 0 @*/;
01104 /*@=incondefs@*/
01105 
01115 /*@-incondefs@*/
01116 int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes,
01117                 int numFiles, /*@null@*/ /*@out@*/ uint_32 ** usagesPtr,
01118                 int flags)
01119         /*@globals rpmGlobalMacroContext, h_errno,
01120                 fileSystem, internalState @*/
01121         /*@modifies *usagesPtr, rpmGlobalMacroContext,
01122                 fileSystem, internalState @*/
01123         /*@requires maxSet(fileList) >= 0 /\ maxSet(fssizes) == 0
01124                 /\ maxSet(usagesPtr) >= 0 @*/
01125         /*@ensures maxRead(usagesPtr) == 0 @*/;
01126 /*@=incondefs@*/
01127 
01128 /* ==================================================================== */
01131 /* --- install/upgrade/erase modes */
01132 
01137 typedef enum rpmInstallInterfaceFlags_e {
01138     INSTALL_NONE        = 0,
01139     INSTALL_PERCENT     = (1 << 0),     
01140     INSTALL_HASH        = (1 << 1),     
01141     INSTALL_NODEPS      = (1 << 2),     
01142     INSTALL_NOORDER     = (1 << 3),     
01143     INSTALL_LABEL       = (1 << 4),     
01144     INSTALL_UPGRADE     = (1 << 5),     
01145     INSTALL_FRESHEN     = (1 << 6),     
01146     INSTALL_INSTALL     = (1 << 7),     
01147     INSTALL_ERASE       = (1 << 8)      
01148 } rpmInstallInterfaceFlags;
01149 
01153 typedef enum rpmEraseInterfaceFlags_e {
01154     UNINSTALL_NONE      = 0,
01155     UNINSTALL_NODEPS    = (1 << 0),     
01156     UNINSTALL_ALLMATCHES= (1 << 1)      
01157 } rpmEraseInterfaceFlags;
01158 
01160 /* ==================================================================== */
01163 
01167 enum rpmtagSignature {
01168     RPMSIGTAG_SIZE      = 1000, 
01169     RPMSIGTAG_LEMD5_1   = 1001, 
01170     RPMSIGTAG_PGP       = 1002, 
01171     RPMSIGTAG_LEMD5_2   = 1003, 
01172     RPMSIGTAG_MD5       = 1004, 
01173     RPMSIGTAG_GPG       = 1005, 
01174     RPMSIGTAG_PGP5      = 1006, 
01175     RPMSIGTAG_PAYLOADSIZE = 1007,
01176     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
01177     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
01178     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
01179     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
01180     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER      
01181 };
01182 
01196 rpmRC rpmVerifySignature(const rpmts ts,
01197                 /*@out@*/ char * result)
01198         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01199         /*@modifies ts, *result, rpmGlobalMacroContext,
01200                 fileSystem, internalState @*/;
01201 
01207 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header h)
01208         /*@modifies h @*/;
01209 
01212 #ifdef __cplusplus
01213 }
01214 #endif
01215 
01216 #endif  /* H_RPMLIB */

Generated on Tue Nov 20 19:24:22 2007 for rpm by  doxygen 1.3.9.1