lib/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 
00118 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
00119 
00128 int headerNVR(Header h,
00129                 /*@null@*/ /*@out@*/ const char ** np,
00130                 /*@null@*/ /*@out@*/ const char ** vp,
00131                 /*@null@*/ /*@out@*/ const char ** rp)
00132         /*@modifies *np, *vp, *rp @*/;
00133 
00144 int headerNEVRA(Header h,
00145                 /*@null@*/ /*@out@*/ const char ** np,
00146                 /*@null@*/ /*@out@*/ /*@unused@*/ const char ** ep,
00147                 /*@null@*/ /*@out@*/ const char ** vp,
00148                 /*@null@*/ /*@out@*/ const char ** rp,
00149                 /*@null@*/ /*@out@*/ const char ** ap)
00150         /*@modifies *np, *vp, *rp, *ap @*/;
00151 
00158 void headerMergeLegacySigs(Header h, const Header sigh)
00159         /*@modifies h, sigh @*/;
00160 
00168 Header headerRegenSigHeader(const Header h, int noArchiveSize)
00169         /*@modifies h @*/;
00170 
00184 /*@unused@*/
00185 int rpmHeaderGetEntry(Header h, int_32 tag, /*@out@*/ int_32 *type,
00186                 /*@out@*/ void **p, /*@out@*/ int_32 *c)
00187         /*@modifies *type, *p, *c @*/;
00188 
00192 /*@-redecl@*/
00193 /*@observer@*/ /*@unchecked@*/
00194 extern const struct headerTagTableEntry_s * rpmTagTable;
00195 /*@=redecl@*/
00196 
00200 /*@-redecl@*/
00201 /*@unchecked@*/
00202 extern const int rpmTagTableSize;
00203 /*@=redecl@*/
00204 
00209 /*@-redecl@*/
00210 /*@unchecked@*/
00211 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00212 /*@=redecl@*/
00213 
00217 #define RPMDBI_PACKAGES         0       /* Installed package headers. */
00218 #define RPMDBI_DEPENDS          1       /* Dependency resolution cache. */
00219 #define RPMDBI_LABEL            2       /* Fingerprint search marker. */
00220 #define RPMDBI_ADDED            3       /* Added package headers. */
00221 #define RPMDBI_REMOVED          4       /* Removed package headers. */
00222 #define RPMDBI_AVAILABLE        5       /* Available package headers. */
00223 #define RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
00224 #define RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
00225 #define RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
00226 
00232 typedef enum rpmTag_e {
00233 
00234     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00235     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00236     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00237 /*@-enummemuse@*/
00238     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00240     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00241 /*@=enummemuse@*/
00242 
00243 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00244 /* the md5 sum was broken *twice* on big endian machines */
00245 /* XXX 2nd underscore prevents tagTable generation */
00246     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00247     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,    /* i */
00248     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    
00249     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,    /* x */
00250     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    
00251     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,    /* x */
00252 #define RPMTAG_PKGID    RPMTAG_SIGMD5                   /* x */
00253     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,    /* x */
00254     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    
00256     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    
00257     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    
00258     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,   /* s[] */
00259     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,   /* x */
00260     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,   /* x */
00261     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,   /* s */
00262 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
00263 
00264     RPMTAG_NAME                 = 1000, /* s */
00265 #define RPMTAG_N        RPMTAG_NAME     /* s */
00266     RPMTAG_VERSION              = 1001, /* s */
00267 #define RPMTAG_V        RPMTAG_VERSION  /* s */
00268     RPMTAG_RELEASE              = 1002, /* s */
00269 #define RPMTAG_R        RPMTAG_RELEASE  /* s */
00270     RPMTAG_EPOCH                = 1003, /* i */
00271 #define RPMTAG_E        RPMTAG_EPOCH    /* i */
00272 #define RPMTAG_SERIAL   RPMTAG_EPOCH    /* i backward comaptibility */
00273     RPMTAG_SUMMARY              = 1004, /* s{} */
00274     RPMTAG_DESCRIPTION          = 1005, /* s{} */
00275     RPMTAG_BUILDTIME            = 1006, /* i */
00276     RPMTAG_BUILDHOST            = 1007, /* s */
00277     RPMTAG_INSTALLTIME          = 1008, /* i */
00278     RPMTAG_SIZE                 = 1009, /* i */
00279     RPMTAG_DISTRIBUTION         = 1010, /* s */
00280     RPMTAG_VENDOR               = 1011, /* s */
00281     RPMTAG_GIF                  = 1012, /* x */
00282     RPMTAG_XPM                  = 1013, /* x */
00283     RPMTAG_LICENSE              = 1014, /* s */
00284 #define RPMTAG_COPYRIGHT RPMTAG_LICENSE /* s backward comaptibility */
00285     RPMTAG_PACKAGER             = 1015, /* s */
00286     RPMTAG_GROUP                = 1016, /* s{} */
00287 /*@-enummemuse@*/
00288     RPMTAG_CHANGELOG            = 1017, 
00289 /*@=enummemuse@*/
00290     RPMTAG_SOURCE               = 1018, /* s[] */
00291     RPMTAG_PATCH                = 1019, /* s[] */
00292     RPMTAG_URL                  = 1020, /* s */
00293     RPMTAG_OS                   = 1021, /* s legacy used int */
00294     RPMTAG_ARCH                 = 1022, /* s legacy used int */
00295     RPMTAG_PREIN                = 1023, /* s */
00296     RPMTAG_POSTIN               = 1024, /* s */
00297     RPMTAG_PREUN                = 1025, /* s */
00298     RPMTAG_POSTUN               = 1026, /* s */
00299     RPMTAG_OLDFILENAMES         = 1027, /* s[] obsolete */
00300     RPMTAG_FILESIZES            = 1028, /* i */
00301     RPMTAG_FILESTATES           = 1029, /* c */
00302     RPMTAG_FILEMODES            = 1030, /* h */
00303     RPMTAG_FILEUIDS             = 1031, 
00304     RPMTAG_FILEGIDS             = 1032, 
00305     RPMTAG_FILERDEVS            = 1033, /* h */
00306     RPMTAG_FILEMTIMES           = 1034, /* i */
00307     RPMTAG_FILEMD5S             = 1035, /* s[] */
00308     RPMTAG_FILELINKTOS          = 1036, /* s[] */
00309     RPMTAG_FILEFLAGS            = 1037, /* i */
00310 /*@-enummemuse@*/
00311     RPMTAG_ROOT                 = 1038, 
00312 /*@=enummemuse@*/
00313     RPMTAG_FILEUSERNAME         = 1039, /* s[] */
00314     RPMTAG_FILEGROUPNAME        = 1040, /* s[] */
00315 /*@-enummemuse@*/
00316     RPMTAG_EXCLUDE              = 1041, 
00317     RPMTAG_EXCLUSIVE            = 1042, 
00318 /*@=enummemuse@*/
00319     RPMTAG_ICON                 = 1043,
00320     RPMTAG_SOURCERPM            = 1044, /* s */
00321     RPMTAG_FILEVERIFYFLAGS      = 1045, /* i */
00322     RPMTAG_ARCHIVESIZE          = 1046, /* i */
00323     RPMTAG_PROVIDENAME          = 1047, /* s[] */
00324 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* s[] */
00325 #define RPMTAG_P        RPMTAG_PROVIDENAME      /* s[] */
00326     RPMTAG_REQUIREFLAGS         = 1048, /* i */
00327     RPMTAG_REQUIRENAME          = 1049, /* s[] */
00328 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
00329 #define RPMTAG_D        RPMTAG_REQUIRENAME      /* s[] */
00330     RPMTAG_REQUIREVERSION       = 1050, /* s[] */
00331     RPMTAG_NOSOURCE             = 1051, 
00332     RPMTAG_NOPATCH              = 1052, 
00333     RPMTAG_CONFLICTFLAGS        = 1053, /* i */
00334     RPMTAG_CONFLICTNAME         = 1054, /* s[] */
00335 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
00336 #define RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
00337     RPMTAG_CONFLICTVERSION      = 1055, /* s[] */
00338     RPMTAG_DEFAULTPREFIX        = 1056, 
00339     RPMTAG_BUILDROOT            = 1057, 
00340     RPMTAG_INSTALLPREFIX        = 1058, 
00341     RPMTAG_EXCLUDEARCH          = 1059,
00342     RPMTAG_EXCLUDEOS            = 1060,
00343     RPMTAG_EXCLUSIVEARCH        = 1061,
00344     RPMTAG_EXCLUSIVEOS          = 1062,
00345     RPMTAG_AUTOREQPROV          = 1063, 
00346     RPMTAG_RPMVERSION           = 1064, /* s */
00347     RPMTAG_TRIGGERSCRIPTS       = 1065, /* s[] */
00348     RPMTAG_TRIGGERNAME          = 1066, /* s[] */
00349     RPMTAG_TRIGGERVERSION       = 1067, /* s[] */
00350     RPMTAG_TRIGGERFLAGS         = 1068, /* i */
00351     RPMTAG_TRIGGERINDEX         = 1069, /* i */
00352     RPMTAG_VERIFYSCRIPT         = 1079, /* s */
00353     RPMTAG_CHANGELOGTIME        = 1080, /* i */
00354     RPMTAG_CHANGELOGNAME        = 1081, /* s[] */
00355     RPMTAG_CHANGELOGTEXT        = 1082, /* s[] */
00356 /*@-enummemuse@*/
00357     RPMTAG_BROKENMD5            = 1083, 
00358 /*@=enummemuse@*/
00359     RPMTAG_PREREQ               = 1084, 
00360     RPMTAG_PREINPROG            = 1085, /* s */
00361     RPMTAG_POSTINPROG           = 1086, /* s */
00362     RPMTAG_PREUNPROG            = 1087, /* s */
00363     RPMTAG_POSTUNPROG           = 1088, /* s */
00364     RPMTAG_BUILDARCHS           = 1089,
00365     RPMTAG_OBSOLETENAME         = 1090, /* s[] */
00366 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
00367 #define RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
00368     RPMTAG_VERIFYSCRIPTPROG     = 1091, /* s */
00369     RPMTAG_TRIGGERSCRIPTPROG    = 1092, /* s */
00370     RPMTAG_DOCDIR               = 1093, 
00371     RPMTAG_COOKIE               = 1094, /* s */
00372     RPMTAG_FILEDEVICES          = 1095, /* i */
00373     RPMTAG_FILEINODES           = 1096, /* i */
00374     RPMTAG_FILELANGS            = 1097, /* s[] */
00375     RPMTAG_PREFIXES             = 1098, /* s[] */
00376     RPMTAG_INSTPREFIXES         = 1099, /* s[] */
00377     RPMTAG_TRIGGERIN            = 1100, 
00378     RPMTAG_TRIGGERUN            = 1101, 
00379     RPMTAG_TRIGGERPOSTUN        = 1102, 
00380     RPMTAG_AUTOREQ              = 1103, 
00381     RPMTAG_AUTOPROV             = 1104, 
00382 /*@-enummemuse@*/
00383     RPMTAG_CAPABILITY           = 1105, 
00384 /*@=enummemuse@*/
00385     RPMTAG_SOURCEPACKAGE        = 1106, 
00386 /*@-enummemuse@*/
00387     RPMTAG_OLDORIGFILENAMES     = 1107, 
00388 /*@=enummemuse@*/
00389     RPMTAG_BUILDPREREQ          = 1108, 
00390     RPMTAG_BUILDREQUIRES        = 1109, 
00391     RPMTAG_BUILDCONFLICTS       = 1110, 
00392 /*@-enummemuse@*/
00393     RPMTAG_BUILDMACROS          = 1111, 
00394 /*@=enummemuse@*/
00395     RPMTAG_PROVIDEFLAGS         = 1112, /* i */
00396     RPMTAG_PROVIDEVERSION       = 1113, /* s[] */
00397     RPMTAG_OBSOLETEFLAGS        = 1114, /* i */
00398     RPMTAG_OBSOLETEVERSION      = 1115, /* s[] */
00399     RPMTAG_DIRINDEXES           = 1116, /* i */
00400     RPMTAG_BASENAMES            = 1117, /* s[] */
00401     RPMTAG_DIRNAMES             = 1118, /* s[] */
00402     RPMTAG_ORIGDIRINDEXES       = 1119, 
00403     RPMTAG_ORIGBASENAMES        = 1120, 
00404     RPMTAG_ORIGDIRNAMES         = 1121, 
00405     RPMTAG_OPTFLAGS             = 1122, /* s */
00406     RPMTAG_DISTURL              = 1123, /* s */
00407     RPMTAG_PAYLOADFORMAT        = 1124, /* s */
00408     RPMTAG_PAYLOADCOMPRESSOR    = 1125, /* s */
00409     RPMTAG_PAYLOADFLAGS         = 1126, /* s */
00410     RPMTAG_INSTALLCOLOR         = 1127, 
00411     RPMTAG_INSTALLTID           = 1128, /* i */
00412     RPMTAG_REMOVETID            = 1129, /* i */
00413 /*@-enummemuse@*/
00414     RPMTAG_SHA1RHN              = 1130, 
00415 /*@=enummemuse@*/
00416     RPMTAG_RHNPLATFORM          = 1131, /* s */
00417     RPMTAG_PLATFORM             = 1132, /* s */
00418     RPMTAG_PATCHESNAME          = 1133, 
00419     RPMTAG_PATCHESFLAGS         = 1134, 
00420     RPMTAG_PATCHESVERSION       = 1135, 
00421     RPMTAG_CACHECTIME           = 1136, /* i */
00422     RPMTAG_CACHEPKGPATH         = 1137, /* s */
00423     RPMTAG_CACHEPKGSIZE         = 1138, /* i */
00424     RPMTAG_CACHEPKGMTIME        = 1139, /* i */
00425     RPMTAG_FILECOLORS           = 1140, /* i */
00426     RPMTAG_FILECLASS            = 1141, /* i */
00427     RPMTAG_CLASSDICT            = 1142, /* s[] */
00428     RPMTAG_FILEDEPENDSX         = 1143, /* i */
00429     RPMTAG_FILEDEPENDSN         = 1144, /* i */
00430     RPMTAG_DEPENDSDICT          = 1145, /* i */
00431     RPMTAG_SOURCEPKGID          = 1146, /* x */
00432     RPMTAG_FILECONTEXTS         = 1147, /* s[] */
00433     RPMTAG_FSCONTEXTS           = 1148, 
00434     RPMTAG_RECONTEXTS           = 1149, 
00435     RPMTAG_POLICIES             = 1150, 
00436     RPMTAG_PRETRANS             = 1151, /* s */
00437     RPMTAG_POSTTRANS            = 1152, /* s */
00438     RPMTAG_PRETRANSPROG         = 1153, /* s */
00439     RPMTAG_POSTTRANSPROG        = 1154, /* s */
00440     RPMTAG_DISTTAG              = 1155, /* s */
00441     RPMTAG_SUGGESTSNAME         = 1156, /* s[] extension placeholder */
00442     RPMTAG_SUGGESTSVERSION      = 1157, /* s[] extension placeholder */
00443     RPMTAG_SUGGESTSFLAGS        = 1158, /* i   extension placeholder */
00444     RPMTAG_ENHANCESNAME         = 1159, /* s[] extension placeholder */
00445     RPMTAG_ENHANCESVERSION      = 1160, /* s[] extension placeholder */
00446     RPMTAG_ENHANCESFLAGS        = 1161, /* i   extension placeholder */
00447     RPMTAG_PRIORITY             = 1162, /* i   extension placeholder */
00448     RPMTAG_CVSID                = 1163, /* s */
00449 #define RPMTAG_SVNID    RPMTAG_CVSID    /* s */
00450     RPMTAG_BLINKPKGID           = 1164, /* s[] */
00451     RPMTAG_BLINKHDRID           = 1165, /* s[] */
00452     RPMTAG_BLINKNEVRA           = 1166, /* s[] */
00453     RPMTAG_FLINKPKGID           = 1167, /* s[] */
00454     RPMTAG_FLINKHDRID           = 1168, /* s[] */
00455     RPMTAG_FLINKNEVRA           = 1169, /* s[] */
00456     RPMTAG_PACKAGEORIGIN        = 1170, /* s */
00457     RPMTAG_TRIGGERPREIN         = 1171, /* internal */
00458     RPMTAG_BUILDSUGGESTS        = 1172, /* internal */
00459     RPMTAG_BUILDENHANCES        = 1173, /* internal */
00460 
00461 /*@-enummemuse@*/
00462     RPMTAG_FIRSTFREE_TAG        
00463 /*@=enummemuse@*/
00464 } rpmTag;
00465 
00466 #define RPMTAG_EXTERNAL_TAG             1000000
00467 
00471 typedef enum rpmfileState_e {
00472     RPMFILE_STATE_NORMAL        = 0,
00473     RPMFILE_STATE_REPLACED      = 1,
00474     RPMFILE_STATE_NOTINSTALLED  = 2,
00475     RPMFILE_STATE_NETSHARED     = 3,
00476     RPMFILE_STATE_WRONGCOLOR    = 4
00477 } rpmfileState;
00478 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00479 
00483 typedef enum rpmfileAttrs_e {
00484 /*@-enummemuse@*/
00485     RPMFILE_NONE        = 0,
00486 /*@=enummemuse@*/
00487     RPMFILE_CONFIG      = (1 <<  0),    
00488     RPMFILE_DOC         = (1 <<  1),    
00489     RPMFILE_ICON        = (1 <<  2),    
00490     RPMFILE_MISSINGOK   = (1 <<  3),    
00491     RPMFILE_NOREPLACE   = (1 <<  4),    
00492     RPMFILE_SPECFILE    = (1 <<  5),    
00493     RPMFILE_GHOST       = (1 <<  6),    
00494     RPMFILE_LICENSE     = (1 <<  7),    
00495     RPMFILE_README      = (1 <<  8),    
00496     RPMFILE_EXCLUDE     = (1 <<  9),    
00497     RPMFILE_UNPATCHED   = (1 << 10),    
00498     RPMFILE_PUBKEY      = (1 << 11),    
00499     RPMFILE_POLICY      = (1 << 12)     
00500 } rpmfileAttrs;
00501 
00502 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00503 
00507 typedef enum rpmsenseFlags_e {
00508     RPMSENSE_ANY        = 0,
00509 /*@-enummemuse@*/
00510     RPMSENSE_SERIAL     = (1 << 0),     
00511 /*@=enummemuse@*/
00512     RPMSENSE_LESS       = (1 << 1),
00513     RPMSENSE_GREATER    = (1 << 2),
00514     RPMSENSE_EQUAL      = (1 << 3),
00515     RPMSENSE_PROVIDES   = (1 << 4), /* only used internally by builds */
00516     RPMSENSE_CONFLICTS  = (1 << 5), /* only used internally by builds */
00517         /* bit 6 used to be RPMSENSE_PREREQ */
00518     RPMSENSE_PREREQ     = (1 << 6), /* phased out. */
00519     RPMSENSE_OBSOLETES  = (1 << 7), /* only used internally by builds */
00520     RPMSENSE_INTERP     = (1 << 8),     
00521     RPMSENSE_SCRIPT_PRE = (1 << 9), 
00522     RPMSENSE_SCRIPT_POST = (1 << 10), 
00523     RPMSENSE_SCRIPT_PREUN = (1 << 11), 
00524     RPMSENSE_SCRIPT_POSTUN = (1 << 12), 
00525     RPMSENSE_SCRIPT_VERIFY = (1 << 13), 
00526     RPMSENSE_FIND_REQUIRES = (1 << 14), 
00527     RPMSENSE_FIND_PROVIDES = (1 << 15), 
00529     RPMSENSE_TRIGGERIN  = (1 << 16),    
00530     RPMSENSE_TRIGGERUN  = (1 << 17),    
00531     RPMSENSE_TRIGGERPOSTUN = (1 << 18), 
00532     RPMSENSE_MISSINGOK  = (1 << 19),    
00533     RPMSENSE_SCRIPT_PREP = (1 << 20),   
00534     RPMSENSE_SCRIPT_BUILD = (1 << 21),  
00535     RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00536     RPMSENSE_SCRIPT_CLEAN = (1 << 23),  
00537     RPMSENSE_RPMLIB = (1 << 24), 
00538 /*@-enummemuse@*/
00539     RPMSENSE_TRIGGERPREIN = (1 << 25),  
00540 /*@=enummemuse@*/
00541     RPMSENSE_KEYRING    = (1 << 26),
00542     RPMSENSE_PATCHES    = (1 << 27),
00543     RPMSENSE_CONFIG     = (1 << 28)
00544 } rpmsenseFlags;
00545 
00546 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00547                                          /* less, greater, equal.          */
00548 
00549 #define RPMSENSE_TRIGGER        \
00550         (RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00551 
00552 #define _ALL_REQUIRES_MASK      (\
00553     RPMSENSE_INTERP | \
00554     RPMSENSE_SCRIPT_PRE | \
00555     RPMSENSE_SCRIPT_POST | \
00556     RPMSENSE_SCRIPT_PREUN | \
00557     RPMSENSE_SCRIPT_POSTUN | \
00558     RPMSENSE_SCRIPT_VERIFY | \
00559     RPMSENSE_FIND_REQUIRES | \
00560     RPMSENSE_SCRIPT_PREP | \
00561     RPMSENSE_SCRIPT_BUILD | \
00562     RPMSENSE_SCRIPT_INSTALL | \
00563     RPMSENSE_SCRIPT_CLEAN | \
00564     RPMSENSE_RPMLIB | \
00565     RPMSENSE_KEYRING )
00566 
00567 #define _notpre(_x)             ((_x) & ~RPMSENSE_PREREQ)
00568 #define _INSTALL_ONLY_MASK \
00569     _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
00570 #define _ERASE_ONLY_MASK  \
00571     _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00572 
00573 #define isLegacyPreReq(_x)  (0)
00574 #define isInstallPreReq(_x)     ((_x) & _INSTALL_ONLY_MASK)
00575 #define isErasePreReq(_x)       ((_x) & _ERASE_ONLY_MASK)
00576 
00577 /* ==================================================================== */
00580 
00581 /* Stuff for maintaining "variables" like SOURCEDIR, BUILDDIR, etc */
00582 #define RPMVAR_OPTFLAGS                 3
00583 #define RPMVAR_PROVIDES                 38
00584 #define RPMVAR_INCLUDE                  43
00585 #define RPMVAR_MACROFILES               49
00586 
00587 #define RPMVAR_NUM                      55      /* number of RPMVAR entries */
00588 
00594 /*@-redecl@*/
00595 /*@observer@*/ /*@null@*/ extern const char * rpmGetVar(int var)
00596         /*@*/;
00597 /*@=redecl@*/
00598 
00604 void rpmSetVar(int var, const char * val)
00605         /*@globals internalState@*/
00606         /*@modifies internalState @*/;
00607 
00612 enum rpm_machtable_e {
00613     RPM_MACHTABLE_INSTARCH      = 0,    
00614     RPM_MACHTABLE_INSTOS        = 1,    
00615     RPM_MACHTABLE_BUILDARCH     = 2,    
00616     RPM_MACHTABLE_BUILDOS       = 3     
00617 };
00618 #define RPM_MACHTABLE_COUNT     4       
00626 int rpmReadConfigFiles(/*@null@*/ const char * file,
00627                 /*@null@*/ const char * target)
00628         /*@globals rpmGlobalMacroContext, rpmCLIMacroContext, h_errno,
00629                 fileSystem, internalState @*/
00630         /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
00631                 fileSystem, internalState @*/;
00632 
00639 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00640                 /*@null@*/ /*@out@*/ int * num)
00641         /*@modifies *name, *num @*/;
00642 
00649 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00650                 /*@null@*/ /*@out@*/ int * num)
00651         /*@modifies *name, *num @*/;
00652 
00666 int rpmMachineScore(int type, const char * name)
00667         /*@*/;
00668 
00674 int rpmShowRC(FILE * fp)
00675         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00676         /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00677 
00685 void rpmSetTables(int archTable, int osTable)
00686         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00687         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00688 
00699 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00700         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00701         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00702 
00711 /*@unused@*/
00712 void rpmGetMachine( /*@null@*/ /*@out@*/ const char **arch,
00713                 /*@null@*/ /*@out@*/ const char **os)
00714         /*@modifies *arch, *os @*/;
00715 
00720 void rpmFreeRpmrc(void)
00721         /*@globals internalState @*/
00722         /*@modifies internalState @*/;
00723 
00725 /* ==================================================================== */
00735 typedef /*@null@*/
00736     void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
00737         /*@modifies data @*/;
00738 
00753 typedef int (*HGE_t) (Header h, rpmTag tag,
00754                         /*@null@*/ /*@out@*/ rpmTagType * type,
00755                         /*@null@*/ /*@out@*/ void ** p,
00756                         /*@null@*/ /*@out@*/ int_32 * c)
00757         /*@modifies *type, *p, *c @*/;
00758 
00774 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
00775                         const void * p, int_32 c)
00776         /*@modifies h @*/;
00777 
00789 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
00790                         const void * p, int_32 c)
00791         /*@modifies h @*/;
00792 
00803 typedef int (*HRE_t) (Header h, int_32 tag)
00804         /*@modifies h @*/;
00805 
00809 typedef enum rpmprobFilterFlags_e {
00810     RPMPROB_FILTER_NONE         = 0,
00811     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
00812     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
00813     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
00814     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
00815     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
00816     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
00817     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
00818     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
00819     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
00820 } rpmprobFilterFlags;
00821 
00825 typedef struct rpmRelocation_s {
00826 /*@only@*/ /*@null@*/
00827     const char * oldPath;       
00828 /*@only@*/ /*@null@*/
00829     const char * newPath;       
00830 } rpmRelocation;
00831 
00838 int rpmVersionCompare(Header first, Header second)
00839         /*@*/;
00840 
00844 typedef enum fileAction_e {
00845     FA_UNKNOWN = 0,     
00846     FA_CREATE,          
00847     FA_COPYIN,          
00848     FA_COPYOUT,         
00849     FA_BACKUP,          
00850     FA_SAVE,            
00851     FA_SKIP,            
00852     FA_ALTNAME,         
00853     FA_ERASE,           
00854     FA_SKIPNSTATE,      
00855     FA_SKIPNETSHARED,   
00856     FA_SKIPCOLOR        
00857 } fileAction;
00858 
00859 #define XFA_SKIPPING(_a)        \
00860     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00861 
00869 typedef enum fileTypes_e {
00870     PIPE        =  1,   
00871     CDEV        =  2,   
00872     XDIR        =  4,   
00873     BDEV        =  6,   
00874     REG         =  8,   
00875     LINK        = 10,   
00876     SOCK        = 12    
00877 } fileTypes;
00878 
00882 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
00883 
00887 typedef /*@abstract@*/ struct fsm_s * FSM_t;
00888 
00892 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
00893 
00903 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
00904         /*@modifies *iv @*/;
00905 
00919 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
00920                 /*@out@*/ /*@null@*/ const char ** msg)
00921         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00922         /*@modifies ts, *msg, rpmGlobalMacroContext,
00923                 fileSystem, internalState @*/;
00924 
00933 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
00934                 /*@out@*/ /*@null@*/ const char ** msg)
00935         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00936         /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
00937                 fileSystem, internalState @*/;
00938 
00947 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd,
00948                 const char * fn, /*@null@*/ /*@out@*/ Header * hdrp)
00949         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00950         /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext,
00951                 fileSystem, internalState @*/;
00952 
00961 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd,
00962                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
00963                         /*@null@*/ /*@out@*/ const char ** cookie)
00964         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00965         /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext,
00966                 fileSystem, internalState @*/;
00967 
00971 typedef enum rpmtransFlags_e {
00972     RPMTRANS_FLAG_NONE          = 0,
00973     RPMTRANS_FLAG_TEST          = (1 <<  0),    
00974     RPMTRANS_FLAG_BUILD_PROBS   = (1 <<  1),    
00975     RPMTRANS_FLAG_NOSCRIPTS     = (1 <<  2),    
00976     RPMTRANS_FLAG_JUSTDB        = (1 <<  3),    
00977     RPMTRANS_FLAG_NOTRIGGERS    = (1 <<  4),    
00978     RPMTRANS_FLAG_NODOCS        = (1 <<  5),    
00979     RPMTRANS_FLAG_ALLFILES      = (1 <<  6),    
00980 /*@-enummemuse@*/
00981     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
00982 /*@=enummemuse@*/
00983     RPMTRANS_FLAG_NOCONTEXTS    = (1 <<  8),    
00984     RPMTRANS_FLAG_DIRSTASH      = (1 <<  9),    
00985     RPMTRANS_FLAG_REPACKAGE     = (1 << 10),    
00987     RPMTRANS_FLAG_PKGCOMMIT     = (1 << 11),
00988 /*@-enummemuse@*/
00989     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
00990 /*@=enummemuse@*/
00991     RPMTRANS_FLAG_COMMIT        = (1 << 13),
00992 /*@-enummemuse@*/
00993     RPMTRANS_FLAG_UNDO          = (1 << 14),
00994 /*@=enummemuse@*/
00995     RPMTRANS_FLAG_REVERSE       = (1 << 15),
00996 
00997     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),    
00998     RPMTRANS_FLAG_NOPRE         = (1 << 17),    
00999     RPMTRANS_FLAG_NOPOST        = (1 << 18),    
01000     RPMTRANS_FLAG_NOTRIGGERIN   = (1 << 19),    
01001     RPMTRANS_FLAG_NOTRIGGERUN   = (1 << 20),    
01002     RPMTRANS_FLAG_NOPREUN       = (1 << 21),    
01003     RPMTRANS_FLAG_NOPOSTUN      = (1 << 22),    
01004     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),  
01005 /*@-enummemuse@*/
01006     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
01007 /*@=enummemuse@*/
01008     RPMTRANS_FLAG_APPLYONLY     = (1 << 25),
01009 
01010     RPMTRANS_FLAG_ANACONDA      = (1 << 26),    
01011     RPMTRANS_FLAG_NOMD5         = (1 << 27),    
01012     RPMTRANS_FLAG_NOSUGGEST     = (1 << 28),    
01013     RPMTRANS_FLAG_ADDINDEPS     = (1 << 29),    
01014     RPMTRANS_FLAG_NOCONFIGS     = (1 << 30),    
01015     RPMTRANS_FLAG_DEPLOOPS      = (1 << 31)     
01016 } rpmtransFlags;
01017 
01018 #define _noTransScripts         \
01019   ( RPMTRANS_FLAG_NOPRE |       \
01020     RPMTRANS_FLAG_NOPOST |      \
01021     RPMTRANS_FLAG_NOPREUN |     \
01022     RPMTRANS_FLAG_NOPOSTUN      \
01023   )
01024 
01025 #define _noTransTriggers        \
01026   ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
01027     RPMTRANS_FLAG_NOTRIGGERIN | \
01028     RPMTRANS_FLAG_NOTRIGGERUN | \
01029     RPMTRANS_FLAG_NOTRIGGERPOSTUN \
01030   )
01031 
01039 /*@unused@*/
01040 int rpmGetRpmlibProvides(/*@null@*/ /*@out@*/ const char *** provNames,
01041                         /*@null@*/ /*@out@*/ int ** provFlags,
01042                         /*@null@*/ /*@out@*/ const char *** provVersions)
01043         /*@modifies *provNames, *provFlags, *provVersions @*/;
01044 
01052 int rpmvercmp(const char * a, const char * b)
01053         /*@*/;
01054 
01060 int rpmCheckRpmlibProvides(const rpmds key)
01061         /*@*/;
01062 
01067 void rpmShowRpmlibProvides(FILE * fp)
01068         /*@globals fileSystem @*/
01069         /*@modifies *fp, fileSystem @*/;
01070 
01078 int tagType(int tag)
01079         /*@*/;
01080 
01086 /*@-redecl@*/
01087 /*@observer@*/ extern const char *const tagName(int tag)
01088         /*@*/;
01089 /*@=redecl@*/
01090 
01096 int tagValue(const char * tagstr)
01097         /*@*/;
01098 
01099 #define RPMLEAD_BINARY 0
01100 #define RPMLEAD_SOURCE 1
01101 
01102 #define RPMLEAD_MAGIC0 0xed
01103 #define RPMLEAD_MAGIC1 0xab
01104 #define RPMLEAD_MAGIC2 0xee
01105 #define RPMLEAD_MAGIC3 0xdb
01106 
01107 #define RPMLEAD_SIZE 96         
01115 struct rpmlead {
01116     unsigned char magic[4];
01117     unsigned char major;
01118     unsigned char minor;
01119     short type;
01120     short archnum;
01121     char name[66];
01122     short osnum;
01123     short signature_type;       
01124 /*@unused@*/ char reserved[16]; 
01125 } ;
01126 
01130 void freeFilesystems(void)
01131         /*@globals internalState@*/
01132         /*@modifies internalState@*/;
01133 
01140 /*@-incondefs@*/
01141 int rpmGetFilesystemList( /*@null@*/ /*@out@*/ const char *** listptr,
01142                 /*@null@*/ /*@out@*/ int * num)
01143         /*@globals fileSystem, internalState @*/
01144         /*@modifies *listptr, *num, fileSystem, internalState @*/
01145         /*@requires maxSet(listptr) >= 0 /\ maxSet(num) >= 0 @*/
01146         /*@ensures maxRead(num) == 0 @*/;
01147 /*@=incondefs@*/
01148 
01158 /*@-incondefs@*/
01159 int rpmGetFilesystemUsage(const char ** fileList, int_32 * fssizes,
01160                 int numFiles, /*@null@*/ /*@out@*/ uint_32 ** usagesPtr,
01161                 int flags)
01162         /*@globals rpmGlobalMacroContext, h_errno,
01163                 fileSystem, internalState @*/
01164         /*@modifies *usagesPtr, rpmGlobalMacroContext,
01165                 fileSystem, internalState @*/
01166         /*@requires maxSet(fileList) >= 0 /\ maxSet(fssizes) == 0
01167                 /\ maxSet(usagesPtr) >= 0 @*/
01168         /*@ensures maxRead(usagesPtr) == 0 @*/;
01169 /*@=incondefs@*/
01170 
01171 /* ==================================================================== */
01174 /* --- install/upgrade/erase modes */
01175 
01180 typedef enum rpmInstallInterfaceFlags_e {
01181     INSTALL_NONE        = 0,
01182     INSTALL_PERCENT     = (1 << 0),     
01183     INSTALL_HASH        = (1 << 1),     
01184     INSTALL_NODEPS      = (1 << 2),     
01185     INSTALL_NOORDER     = (1 << 3),     
01186     INSTALL_LABEL       = (1 << 4),     
01187     INSTALL_UPGRADE     = (1 << 5),     
01188     INSTALL_FRESHEN     = (1 << 6),     
01189     INSTALL_INSTALL     = (1 << 7),     
01190     INSTALL_ERASE       = (1 << 8)      
01191 } rpmInstallInterfaceFlags;
01192 
01196 typedef enum rpmEraseInterfaceFlags_e {
01197     UNINSTALL_NONE      = 0,
01198     UNINSTALL_NODEPS    = (1 << 0),     
01199     UNINSTALL_ALLMATCHES= (1 << 1)      
01200 } rpmEraseInterfaceFlags;
01201 
01203 /* ==================================================================== */
01206 
01210 enum rpmtagSignature {
01211     RPMSIGTAG_SIZE      = 1000, 
01212     RPMSIGTAG_LEMD5_1   = 1001, 
01213     RPMSIGTAG_PGP       = 1002, 
01214     RPMSIGTAG_LEMD5_2   = 1003, 
01215     RPMSIGTAG_MD5       = 1004, 
01216     RPMSIGTAG_GPG       = 1005, 
01217     RPMSIGTAG_PGP5      = 1006, 
01218     RPMSIGTAG_PAYLOADSIZE = 1007,
01219     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
01220     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
01221     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
01222     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
01223     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER      
01224 };
01225 
01239 rpmRC rpmVerifySignature(const rpmts ts,
01240                 /*@out@*/ char * result)
01241         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01242         /*@modifies ts, *result, rpmGlobalMacroContext,
01243                 fileSystem, internalState @*/;
01244 
01250 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header h)
01251         /*@modifies h @*/;
01252 
01255 #ifdef __cplusplus
01256 }
01257 #endif
01258 
01259 #endif  /* H_RPMLIB */

Generated on Tue Feb 19 22:26:33 2008 for rpm by  doxygen 1.5.1