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 
00017 #define RPM_FORMAT_VERSION 4
00018 #define RPM_MAJOR_VERSION 4
00019 #define RPM_MINOR_VERSION 9
00020 
00024 typedef enum rpmRC_e {
00025     RPMRC_OK            = 0,    
00026     RPMRC_NOTFOUND      = 1,    
00027     RPMRC_FAIL          = 2,    
00028     RPMRC_NOTTRUSTED    = 3,    
00029     RPMRC_NOKEY         = 4     
00030 } rpmRC;
00031 
00032 /*@-redecl@*/
00033 /*@checked@*/
00034 extern struct MacroContext_s * rpmGlobalMacroContext;
00035 
00036 /*@checked@*/
00037 extern struct MacroContext_s * rpmCLIMacroContext;
00038 
00039 /*@unchecked@*/ /*@observer@*/
00040 extern const char * RPMVERSION;
00041 
00042 /*@unchecked@*/ /*@observer@*/
00043 extern const char * rpmNAME;
00044 
00045 /*@unchecked@*/ /*@observer@*/
00046 extern const char * rpmEVR;
00047 
00048 /*@unchecked@*/
00049 extern int rpmFLAGS;
00050 /*@=redecl@*/
00051 
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055 
00056 #if !defined(SWIG)
00057 
00062 /*@unused@*/ static inline /*@null@*/
00063 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00064         /*@modifies p @*/
00065 {
00066     if (p != NULL)      free((void *)p);
00067     return NULL;
00068 }
00069 #endif
00070 
00077 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmts_s * rpmts;
00078 
00081 typedef struct Spec_s * Spec;
00082 
00086 typedef /*@abstract@*/ void * alKey;
00087 #define RPMAL_NOMATCH   ((alKey)-1L)
00088 
00092 /*@-mutrep@*/
00093 typedef /*@abstract@*/ int alNum;
00094 /*@=mutrep@*/
00095 
00099 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmds_s * rpmds;
00100 
00104 typedef struct rpmPRCO_s * rpmPRCO;
00105 
00109 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi;
00110 
00114 typedef /*@abstract@*/ struct rpmte_s * rpmte;
00115 
00119 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb;
00120 
00124 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
00125 
00129 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
00130 
00137 void headerMergeLegacySigs(Header h, const Header sigh)
00138         /*@modifies h, sigh @*/;
00139 
00147 Header headerRegenSigHeader(const Header h, int noArchiveSize)
00148         /*@modifies h @*/;
00149 
00153 /*@-redecl@*/
00154 /*@observer@*/ /*@unchecked@*/
00155 extern const struct headerTagTableEntry_s * rpmTagTable;
00156 /*@=redecl@*/
00157 
00161 /*@-redecl@*/
00162 /*@unchecked@*/
00163 extern const int rpmTagTableSize;
00164 /*@=redecl@*/
00165 
00166 /*@unchecked@*/
00167 extern headerTagIndices rpmTags;
00168 
00173 /*@-redecl@*/
00174 /*@unchecked@*/
00175 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00176 /*@=redecl@*/
00177 
00181 #define RPMDBI_PACKAGES         0       /* Installed package headers. */
00182 #define RPMDBI_DEPENDS          1       /* Dependency resolution cache. */
00183 #define RPMDBI_LABEL            2       /* Fingerprint search marker. */
00184 #define RPMDBI_ADDED            3       /* Added package headers. */
00185 #define RPMDBI_REMOVED          4       /* Removed package headers. */
00186 #define RPMDBI_AVAILABLE        5       /* Available package headers. */
00187 #define RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
00188 #define RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
00189 #define RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
00190 
00196 typedef enum rpmTag_e {
00197 
00198     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00199     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00200     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00201 /*@-enummemuse@*/
00202     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00204     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00205 /*@=enummemuse@*/
00206 
00207 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00208 /* the md5 sum was broken *twice* on big endian machines */
00209 /* XXX 2nd underscore prevents tagTable generation */
00210     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00211     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,    /* i */
00212     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    /* internal - obsolete */
00213     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,    /* x */
00214     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    /* x internal - obsolete */
00215     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,    /* x */
00216 #define RPMTAG_PKGID    RPMTAG_SIGMD5                   /* x */
00217     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,    /* x */
00218     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    /* internal - obsolete */
00219 
00220     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    /* internal - obsolete */
00221     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    /* internal - obsolete */
00222     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,   /* s[] */
00223     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,   /* x */
00224     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,   /* x */
00225     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,   /* s */
00226 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
00227 
00228     RPMTAG_NAME                 = 1000, /* s */
00229 #define RPMTAG_N        RPMTAG_NAME     /* s */
00230     RPMTAG_VERSION              = 1001, /* s */
00231 #define RPMTAG_V        RPMTAG_VERSION  /* s */
00232     RPMTAG_RELEASE              = 1002, /* s */
00233 #define RPMTAG_R        RPMTAG_RELEASE  /* s */
00234     RPMTAG_EPOCH                = 1003, /* i */
00235 #define RPMTAG_E        RPMTAG_EPOCH    /* i */
00236     RPMTAG_SUMMARY              = 1004, /* s{} */
00237     RPMTAG_DESCRIPTION          = 1005, /* s{} */
00238     RPMTAG_BUILDTIME            = 1006, /* i */
00239     RPMTAG_BUILDHOST            = 1007, /* s */
00240     RPMTAG_INSTALLTIME          = 1008, /* i */
00241     RPMTAG_SIZE                 = 1009, /* i */
00242     RPMTAG_DISTRIBUTION         = 1010, /* s */
00243     RPMTAG_VENDOR               = 1011, /* s */
00244     RPMTAG_GIF                  = 1012, /* x */
00245     RPMTAG_XPM                  = 1013, /* x */
00246     RPMTAG_LICENSE              = 1014, /* s */
00247     RPMTAG_PACKAGER             = 1015, /* s */
00248     RPMTAG_GROUP                = 1016, /* s{} */
00249 /*@-enummemuse@*/
00250     RPMTAG_CHANGELOG            = 1017, /* s[] internal */
00251 /*@=enummemuse@*/
00252     RPMTAG_SOURCE               = 1018, /* s[] */
00253     RPMTAG_PATCH                = 1019, /* s[] */
00254     RPMTAG_URL                  = 1020, /* s */
00255     RPMTAG_OS                   = 1021, /* s legacy used int */
00256     RPMTAG_ARCH                 = 1022, /* s legacy used int */
00257     RPMTAG_PREIN                = 1023, /* s */
00258     RPMTAG_POSTIN               = 1024, /* s */
00259     RPMTAG_PREUN                = 1025, /* s */
00260     RPMTAG_POSTUN               = 1026, /* s */
00261     RPMTAG_OLDFILENAMES         = 1027, /* s[] obsolete */
00262     RPMTAG_FILESIZES            = 1028, /* i[] */
00263     RPMTAG_FILESTATES           = 1029, /* c[] */
00264     RPMTAG_FILEMODES            = 1030, /* h[] */
00265     RPMTAG_FILEUIDS             = 1031, /* i[] internal */
00266     RPMTAG_FILEGIDS             = 1032, /* i[] internal */
00267     RPMTAG_FILERDEVS            = 1033, /* h[] */
00268     RPMTAG_FILEMTIMES           = 1034, /* i[] */
00269     RPMTAG_FILEDIGESTS          = 1035, /* s[] */
00270 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
00271     RPMTAG_FILELINKTOS          = 1036, /* s[] */
00272     RPMTAG_FILEFLAGS            = 1037, /* i[] */
00273 /*@-enummemuse@*/
00274     RPMTAG_ROOT                 = 1038, /* internal - obsolete */
00275 /*@=enummemuse@*/
00276     RPMTAG_FILEUSERNAME         = 1039, /* s[] */
00277     RPMTAG_FILEGROUPNAME        = 1040, /* s[] */
00278 /*@-enummemuse@*/
00279     RPMTAG_EXCLUDE              = 1041, /* internal - obsolete */
00280     RPMTAG_EXCLUSIVE            = 1042, /* internal - obsolete */
00281 /*@=enummemuse@*/
00282     RPMTAG_ICON                 = 1043, /* x */
00283     RPMTAG_SOURCERPM            = 1044, /* s */
00284     RPMTAG_FILEVERIFYFLAGS      = 1045, /* i[] */
00285     RPMTAG_ARCHIVESIZE          = 1046, /* i */
00286     RPMTAG_PROVIDENAME          = 1047, /* s[] */
00287 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* s[] */
00288 #define RPMTAG_P        RPMTAG_PROVIDENAME      /* s[] */
00289     RPMTAG_REQUIREFLAGS         = 1048, /* i[] */
00290     RPMTAG_REQUIRENAME          = 1049, /* s[] */
00291 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
00292     RPMTAG_REQUIREVERSION       = 1050, /* s[] */
00293     RPMTAG_NOSOURCE             = 1051, /* i internal */
00294     RPMTAG_NOPATCH              = 1052, /* i internal */
00295     RPMTAG_CONFLICTFLAGS        = 1053, /* i[] */
00296     RPMTAG_CONFLICTNAME         = 1054, /* s[] */
00297 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
00298 #define RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
00299     RPMTAG_CONFLICTVERSION      = 1055, /* s[] */
00300     RPMTAG_DEFAULTPREFIX        = 1056, /* s internal - deprecated */
00301     RPMTAG_BUILDROOT            = 1057, /* s internal */
00302     RPMTAG_INSTALLPREFIX        = 1058, /* s internal - deprecated */
00303     RPMTAG_EXCLUDEARCH          = 1059, /* s[] */
00304     RPMTAG_EXCLUDEOS            = 1060, /* s[] */
00305     RPMTAG_EXCLUSIVEARCH        = 1061, /* s[] */
00306     RPMTAG_EXCLUSIVEOS          = 1062, /* s[] */
00307     RPMTAG_AUTOREQPROV          = 1063, /* s internal */
00308     RPMTAG_RPMVERSION           = 1064, /* s */
00309     RPMTAG_TRIGGERSCRIPTS       = 1065, /* s[] */
00310     RPMTAG_TRIGGERNAME          = 1066, /* s[] */
00311     RPMTAG_TRIGGERVERSION       = 1067, /* s[] */
00312     RPMTAG_TRIGGERFLAGS         = 1068, /* i[] */
00313     RPMTAG_TRIGGERINDEX         = 1069, /* i[] */
00314     RPMTAG_VERIFYSCRIPT         = 1079, /* s */
00315     RPMTAG_CHANGELOGTIME        = 1080, /* i[] */
00316     RPMTAG_CHANGELOGNAME        = 1081, /* s[] */
00317     RPMTAG_CHANGELOGTEXT        = 1082, /* s[] */
00318 /*@-enummemuse@*/
00319     RPMTAG_BROKENMD5            = 1083, /* internal - obsolete */
00320 /*@=enummemuse@*/
00321     RPMTAG_PREREQ               = 1084, /* internal */
00322     RPMTAG_PREINPROG            = 1085, /* s */
00323     RPMTAG_POSTINPROG           = 1086, /* s */
00324     RPMTAG_PREUNPROG            = 1087, /* s */
00325     RPMTAG_POSTUNPROG           = 1088, /* s */
00326     RPMTAG_BUILDARCHS           = 1089, /* s[] */
00327     RPMTAG_OBSOLETENAME         = 1090, /* s[] */
00328 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
00329 #define RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
00330     RPMTAG_VERIFYSCRIPTPROG     = 1091, /* s */
00331     RPMTAG_TRIGGERSCRIPTPROG    = 1092, /* s[] */
00332     RPMTAG_DOCDIR               = 1093, /* internal */
00333     RPMTAG_COOKIE               = 1094, /* s */
00334     RPMTAG_FILEDEVICES          = 1095, /* i[] */
00335     RPMTAG_FILEINODES           = 1096, /* i[] */
00336     RPMTAG_FILELANGS            = 1097, /* s[] */
00337     RPMTAG_PREFIXES             = 1098, /* s[] */
00338     RPMTAG_INSTPREFIXES         = 1099, /* s[] */
00339     RPMTAG_TRIGGERIN            = 1100, /* internal */
00340     RPMTAG_TRIGGERUN            = 1101, /* internal */
00341     RPMTAG_TRIGGERPOSTUN        = 1102, /* internal */
00342     RPMTAG_AUTOREQ              = 1103, /* internal */
00343     RPMTAG_AUTOPROV             = 1104, /* internal */
00344 /*@-enummemuse@*/
00345     RPMTAG_CAPABILITY           = 1105, /* i legacy - obsolete */
00346 /*@=enummemuse@*/
00347     RPMTAG_SOURCEPACKAGE        = 1106, /* i legacy - obsolete */
00348 /*@-enummemuse@*/
00349     RPMTAG_OLDORIGFILENAMES     = 1107, /* internal - obsolete */
00350 /*@=enummemuse@*/
00351     RPMTAG_BUILDPREREQ          = 1108, /* internal */
00352     RPMTAG_BUILDREQUIRES        = 1109, /* internal */
00353     RPMTAG_BUILDCONFLICTS       = 1110, /* internal */
00354 /*@-enummemuse@*/
00355     RPMTAG_BUILDMACROS          = 1111, /* internal - unused */
00356 /*@=enummemuse@*/
00357     RPMTAG_PROVIDEFLAGS         = 1112, /* i[] */
00358     RPMTAG_PROVIDEVERSION       = 1113, /* s[] */
00359     RPMTAG_OBSOLETEFLAGS        = 1114, /* i[] */
00360     RPMTAG_OBSOLETEVERSION      = 1115, /* s[] */
00361     RPMTAG_DIRINDEXES           = 1116, /* i[] */
00362     RPMTAG_BASENAMES            = 1117, /* s[] */
00363     RPMTAG_DIRNAMES             = 1118, /* s[] */
00364     RPMTAG_ORIGDIRINDEXES       = 1119, /* i[] relocation */
00365     RPMTAG_ORIGBASENAMES        = 1120, /* s[] relocation */
00366     RPMTAG_ORIGDIRNAMES         = 1121, /* s[] relocation */
00367     RPMTAG_OPTFLAGS             = 1122, /* s */
00368     RPMTAG_DISTURL              = 1123, /* s */
00369     RPMTAG_PAYLOADFORMAT        = 1124, /* s */
00370     RPMTAG_PAYLOADCOMPRESSOR    = 1125, /* s */
00371     RPMTAG_PAYLOADFLAGS         = 1126, /* s */
00372     RPMTAG_INSTALLCOLOR         = 1127, /* i transaction color when installed */
00373     RPMTAG_INSTALLTID           = 1128, /* i */
00374     RPMTAG_REMOVETID            = 1129, /* i */
00375 /*@-enummemuse@*/
00376     RPMTAG_SHA1RHN              = 1130, /* internal - obsolete */
00377 /*@=enummemuse@*/
00378     RPMTAG_RHNPLATFORM          = 1131, /* s deprecated */
00379     RPMTAG_PLATFORM             = 1132, /* s */
00380     RPMTAG_PATCHESNAME          = 1133, /* s[] deprecated placeholder (SuSE) */
00381     RPMTAG_PATCHESFLAGS         = 1134, /* i[] deprecated placeholder (SuSE) */
00382     RPMTAG_PATCHESVERSION       = 1135, /* s[] deprecated placeholder (SuSE) */
00383     RPMTAG_CACHECTIME           = 1136, /* i */
00384     RPMTAG_CACHEPKGPATH         = 1137, /* s */
00385     RPMTAG_CACHEPKGSIZE         = 1138, /* i */
00386     RPMTAG_CACHEPKGMTIME        = 1139, /* i */
00387     RPMTAG_FILECOLORS           = 1140, /* i[] */
00388     RPMTAG_FILECLASS            = 1141, /* i[] */
00389     RPMTAG_CLASSDICT            = 1142, /* s[] */
00390     RPMTAG_FILEDEPENDSX         = 1143, /* i[] */
00391     RPMTAG_FILEDEPENDSN         = 1144, /* i[] */
00392     RPMTAG_DEPENDSDICT          = 1145, /* i[] */
00393     RPMTAG_SOURCEPKGID          = 1146, /* x */
00394     RPMTAG_FILECONTEXTS         = 1147, /* s[] */
00395     RPMTAG_FSCONTEXTS           = 1148, /* s[] extension */
00396     RPMTAG_RECONTEXTS           = 1149, /* s[] extension */
00397     RPMTAG_POLICIES             = 1150, /* s[] selinux *.te policy file. */
00398     RPMTAG_PRETRANS             = 1151, /* s */
00399     RPMTAG_POSTTRANS            = 1152, /* s */
00400     RPMTAG_PRETRANSPROG         = 1153, /* s */
00401     RPMTAG_POSTTRANSPROG        = 1154, /* s */
00402     RPMTAG_DISTTAG              = 1155, /* s */
00403     RPMTAG_SUGGESTSNAME         = 1156, /* s[] extension */
00404 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] */
00405     RPMTAG_SUGGESTSVERSION      = 1157, /* s[] extension */
00406     RPMTAG_SUGGESTSFLAGS        = 1158, /* i[] extension */
00407     RPMTAG_ENHANCESNAME         = 1159, /* s[] extension placeholder */
00408 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] */
00409     RPMTAG_ENHANCESVERSION      = 1160, /* s[] extension placeholder */
00410     RPMTAG_ENHANCESFLAGS        = 1161, /* i[] extension placeholder */
00411     RPMTAG_PRIORITY             = 1162, /* i[] extension placeholder */
00412     RPMTAG_CVSID                = 1163, /* s */
00413 #define RPMTAG_SVNID    RPMTAG_CVSID    /* s */
00414     RPMTAG_BLINKPKGID           = 1164, /* s[] */
00415     RPMTAG_BLINKHDRID           = 1165, /* s[] */
00416     RPMTAG_BLINKNEVRA           = 1166, /* s[] */
00417     RPMTAG_FLINKPKGID           = 1167, /* s[] */
00418     RPMTAG_FLINKHDRID           = 1168, /* s[] */
00419     RPMTAG_FLINKNEVRA           = 1169, /* s[] */
00420     RPMTAG_PACKAGEORIGIN        = 1170, /* s */
00421     RPMTAG_TRIGGERPREIN         = 1171, /* internal */
00422     RPMTAG_BUILDSUGGESTS        = 1172, /* internal */
00423     RPMTAG_BUILDENHANCES        = 1173, /* internal */
00424     RPMTAG_SCRIPTSTATES         = 1174, /* i[] scriptlet exit codes */
00425     RPMTAG_SCRIPTMETRICS        = 1175, /* i[] scriptlet execution times */
00426     RPMTAG_BUILDCPUCLOCK        = 1176, /* i */
00427     RPMTAG_FILEDIGESTALGOS      = 1177, /* i[] */
00428     RPMTAG_VARIANTS             = 1178, /* s[] */
00429     RPMTAG_XMAJOR               = 1179, /* i */
00430     RPMTAG_XMINOR               = 1180, /* i */
00431     RPMTAG_REPOTAG              = 1181, /* s */
00432     RPMTAG_KEYWORDS             = 1182, /* s[] */
00433     RPMTAG_BUILDPLATFORMS       = 1183, /* s[] */
00434     RPMTAG_PACKAGECOLOR         = 1184, /* i */
00435     RPMTAG_PACKAGEPREFCOLOR     = 1185, /* i (unimplemented) */
00436     RPMTAG_XATTRSDICT           = 1186, /* s[] (unimplemented) */
00437     RPMTAG_FILEXATTRSX          = 1187, /* i[] (unimplemented) */
00438     RPMTAG_DEPATTRSDICT         = 1188, /* s[] (unimplemented) */
00439     RPMTAG_CONFLICTATTRSX       = 1189, /* i[] (unimplemented) */
00440     RPMTAG_OBSOLETEATTRSX       = 1190, /* i[] (unimplemented) */
00441     RPMTAG_PROVIDEATTRSX        = 1191, /* i[] (unimplemented) */
00442     RPMTAG_REQUIREATTRSX        = 1192, /* i[] (unimplemented) */
00443     RPMTAG_BUILDPROVIDES        = 1193, /* internal */
00444     RPMTAG_BUILDOBSOLETES       = 1194, /* internal */
00445 
00446 /*@-enummemuse@*/
00447     RPMTAG_FIRSTFREE_TAG        
00448 /*@=enummemuse@*/
00449 } rpmTag;
00450 
00451 #define RPMTAG_EXTERNAL_TAG             1000000
00452 
00456 typedef enum rpmScriptID_e {
00457     RPMSCRIPT_UNKNOWN           =  0,   
00458     RPMSCRIPT_PRETRANS          =  1,   
00459     RPMSCRIPT_TRIGGERPREIN      =  2,   
00460     RPMSCRIPT_PREIN             =  3,   
00461     RPMSCRIPT_POSTIN            =  4,   
00462     RPMSCRIPT_TRIGGERIN         =  5,   
00463     RPMSCRIPT_TRIGGERUN         =  6,   
00464     RPMSCRIPT_PREUN             =  7,   
00465     RPMSCRIPT_POSTUN            =  8,   
00466     RPMSCRIPT_TRIGGERPOSTUN     =  9,   
00467     RPMSCRIPT_POSTTRANS         = 10,   
00468         /* 11-15 unused */
00469     RPMSCRIPT_VERIFY            = 16,   
00470     RPMSCRIPT_MAX               = 32
00471 } rpmScriptID;
00472 
00476 typedef enum rpmScriptState_e {
00477     RPMSCRIPT_STATE_UNKNOWN     = 0,
00478         /* 0-15 reserved for waitpid return. */
00479     RPMSCRIPT_STATE_EXEC        = (1 << 16), 
00480     RPMSCRIPT_STATE_REAPED      = (1 << 17), 
00481         /* 18-23 unused */
00482     RPMSCRIPT_STATE_SELINUX     = (1 << 24), 
00483     RPMSCRIPT_STATE_EMULATOR    = (1 << 25), 
00484     RPMSCRIPT_STATE_LUA         = (1 << 26)  
00485 } rpmScriptState;
00486 
00490 typedef enum rpmfileState_e {
00491     RPMFILE_STATE_NORMAL        = 0,
00492     RPMFILE_STATE_REPLACED      = 1,
00493     RPMFILE_STATE_NOTINSTALLED  = 2,
00494     RPMFILE_STATE_NETSHARED     = 3,
00495     RPMFILE_STATE_WRONGCOLOR    = 4
00496 } rpmfileState;
00497 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00498 
00502 typedef enum rpmfileAttrs_e {
00503 /*@-enummemuse@*/
00504     RPMFILE_NONE        = 0,
00505 /*@=enummemuse@*/
00506     RPMFILE_CONFIG      = (1 <<  0),    
00507     RPMFILE_DOC         = (1 <<  1),    
00508     RPMFILE_ICON        = (1 <<  2),    
00509     RPMFILE_MISSINGOK   = (1 <<  3),    
00510     RPMFILE_NOREPLACE   = (1 <<  4),    
00511     RPMFILE_SPECFILE    = (1 <<  5),    
00512     RPMFILE_GHOST       = (1 <<  6),    
00513     RPMFILE_LICENSE     = (1 <<  7),    
00514     RPMFILE_README      = (1 <<  8),    
00515     RPMFILE_EXCLUDE     = (1 <<  9),    
00516     RPMFILE_UNPATCHED   = (1 << 10),    
00517     RPMFILE_PUBKEY      = (1 << 11),    
00518     RPMFILE_POLICY      = (1 << 12),    
00519     RPMFILE_EXISTS      = (1 << 13),    
00520     RPMFILE_SPARSE      = (1 << 14),    
00521     RPMFILE_TYPED       = (1 << 15),    
00522     RPMFILE_SOURCE      = (1 << 16),    
00523     RPMFILE_PATCH       = (1 << 17)     
00524 } rpmfileAttrs;
00525 
00526 #define RPMFILE_SPOOK   (RPMFILE_GHOST|RPMFILE_TYPED)
00527 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00528 
00529 /* ==================================================================== */
00532 
00537 enum rpm_machtable_e {
00538     RPM_MACHTABLE_INSTARCH      = 0,    
00539     RPM_MACHTABLE_INSTOS        = 1,    
00540     RPM_MACHTABLE_BUILDARCH     = 2,    
00541     RPM_MACHTABLE_BUILDOS       = 3     
00542 };
00543 #define RPM_MACHTABLE_COUNT     4       
00549 /*@observer@*/ /*@checked@*/
00550 extern const char *rpmRcfiles;
00551 
00558 int rpmReadConfigFiles(/*@null@*/ const char * file,
00559                 /*@null@*/ const char * target)
00560         /*@globals rpmRcfiles,
00561                 rpmGlobalMacroContext, rpmCLIMacroContext, h_errno,
00562                 fileSystem, internalState @*/
00563         /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
00564                 fileSystem, internalState @*/;
00565 
00573 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00574                 /*@null@*/ /*@out@*/ int * num)
00575         /*@modifies *name, *num @*/;
00576 
00584 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00585                 /*@null@*/ /*@out@*/ int * num)
00586         /*@modifies *name, *num @*/;
00587 
00601 int rpmMachineScore(int type, const char * name)
00602         /*@*/;
00603 
00604 /*@only@*/ /*@null@*/ /*@unchecked@*/
00605 extern void * platpat;
00606 /*@unchecked@*/
00607 extern int nplatpat;
00608 
00620 int rpmPlatformScore(const char * platform, /*@null@*/ void * mi_re, int mi_nre)
00621         /*@modifies mi_re @*/;
00622 
00628 int rpmShowRC(FILE * fp)
00629         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00630         /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00631 
00639 void rpmSetTables(int archTable, int osTable)
00640         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00641         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00642 
00653 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00654         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00655         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00656 
00661 void rpmFreeRpmrc(void)
00662         /*@globals platpat, nplatpat, internalState @*/
00663         /*@modifies platpat, nplatpat, internalState @*/;
00664 
00666 /* ==================================================================== */
00676 typedef /*@null@*/
00677     void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
00678         /*@modifies data @*/;
00679 
00694 typedef int (*HGE_t) (Header h, rpmTag tag,
00695                         /*@null@*/ /*@out@*/ rpmTagType * type,
00696                         /*@null@*/ /*@out@*/ void ** p,
00697                         /*@null@*/ /*@out@*/ int_32 * c)
00698         /*@modifies *type, *p, *c @*/;
00699 
00715 typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
00716                         const void * p, int_32 c)
00717         /*@modifies h @*/;
00718 
00730 typedef int (*HME_t) (Header h, rpmTag tag, rpmTagType type,
00731                         const void * p, int_32 c)
00732         /*@modifies h @*/;
00733 
00744 typedef int (*HRE_t) (Header h, int_32 tag)
00745         /*@modifies h @*/;
00746 
00750 typedef enum rpmprobFilterFlags_e {
00751     RPMPROB_FILTER_NONE         = 0,
00752     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
00753     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
00754     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
00755     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
00756     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
00757     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
00758     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
00759     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
00760     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
00761 } rpmprobFilterFlags;
00762 
00766 typedef struct rpmRelocation_s * rpmRelocation;
00767 #if !defined(SWIG)
00768 struct rpmRelocation_s {
00769 /*@only@*/ /*@null@*/
00770     const char * oldPath;       
00771 /*@only@*/ /*@null@*/
00772     const char * newPath;       
00773 };
00774 #endif
00775 
00783 int rpmVersionCompare(Header first, Header second)
00784         /*@*/;
00785 
00789 typedef enum fileAction_e {
00790     FA_UNKNOWN = 0,     
00791     FA_CREATE,          
00792     FA_COPYIN,          
00793     FA_COPYOUT,         
00794     FA_BACKUP,          
00795     FA_SAVE,            
00796     FA_SKIP,            
00797     FA_ALTNAME,         
00798     FA_ERASE,           
00799     FA_SKIPNSTATE,      
00800     FA_SKIPNETSHARED,   
00801     FA_SKIPCOLOR        
00802 } fileAction;
00803 
00804 #define XFA_SKIPPING(_a)        \
00805     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00806 
00814 typedef enum fileTypes_e {
00815     PIPE        =  1,   
00816     CDEV        =  2,   
00817     XDIR        =  4,   
00818     BDEV        =  6,   
00819     REG         =  8,   
00820     LINK        = 10,   
00821     SOCK        = 12    
00822 } fileTypes;
00823 
00827 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
00828 
00832 typedef /*@abstract@*/ struct fsm_s * FSM_t;
00833 
00837 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
00838 
00848 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
00849         /*@modifies *iv @*/;
00850 
00864 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
00865                 /*@out@*/ /*@null@*/ const char ** msg)
00866         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00867         /*@modifies ts, *msg, rpmGlobalMacroContext,
00868                 fileSystem, internalState @*/;
00869 
00878 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
00879                 /*@out@*/ /*@null@*/ const char ** msg)
00880         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00881         /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
00882                 fileSystem, internalState @*/;
00883 
00892 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd,
00893                 const char * fn, /*@null@*/ /*@out@*/ Header * hdrp)
00894         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00895         /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext,
00896                 fileSystem, internalState @*/;
00897 
00906 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd,
00907                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
00908                         /*@null@*/ /*@out@*/ const char ** cookie)
00909         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00910         /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext,
00911                 fileSystem, internalState @*/;
00912 
00917 typedef enum rpmdepFlags_e {
00918     RPMDEPS_FLAG_NONE           = 0,
00919     RPMDEPS_FLAG_NOUPGRADE      = (1 <<  0),    
00920     RPMDEPS_FLAG_NOREQUIRES     = (1 <<  1),    
00921     RPMDEPS_FLAG_NOCONFLICTS    = (1 <<  2),    
00922     RPMDEPS_FLAG_NOOBSOLETES    = (1 <<  3),    
00923     RPMDEPS_FLAG_NOPARENTDIRS   = (1 <<  4),    
00924     RPMDEPS_FLAG_NOLINKTOS      = (1 <<  5),    
00925     RPMDEPS_FLAG_ANACONDA       = (1 <<  6),    
00926     RPMDEPS_FLAG_NOSUGGEST      = (1 <<  7),    
00927     RPMDEPS_FLAG_ADDINDEPS      = (1 <<  8),    
00928     RPMDEPS_FLAG_DEPLOOPS       = (1 <<  9)     
00929 } rpmdepFlags;
00930 
00935 typedef enum rpmtransFlags_e {
00936     RPMTRANS_FLAG_NONE          = 0,
00937     RPMTRANS_FLAG_TEST          = (1 <<  0),    
00938     RPMTRANS_FLAG_BUILD_PROBS   = (1 <<  1),    
00939     RPMTRANS_FLAG_NOSCRIPTS     = (1 <<  2),    
00940     RPMTRANS_FLAG_JUSTDB        = (1 <<  3),    
00941     RPMTRANS_FLAG_NOTRIGGERS    = (1 <<  4),    
00942     RPMTRANS_FLAG_NODOCS        = (1 <<  5),    
00943     RPMTRANS_FLAG_ALLFILES      = (1 <<  6),    
00944 /*@-enummemuse@*/
00945     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
00946 /*@=enummemuse@*/
00947     RPMTRANS_FLAG_NOCONTEXTS    = (1 <<  8),    
00948     RPMTRANS_FLAG_DIRSTASH      = (1 <<  9),    
00949     RPMTRANS_FLAG_REPACKAGE     = (1 << 10),    
00951     RPMTRANS_FLAG_PKGCOMMIT     = (1 << 11),
00952 /*@-enummemuse@*/
00953     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
00954 /*@=enummemuse@*/
00955     RPMTRANS_FLAG_COMMIT        = (1 << 13),
00956 /*@-enummemuse@*/
00957     RPMTRANS_FLAG_UNDO          = (1 << 14),
00958 /*@=enummemuse@*/
00959     /* 15 unused */
00960 
00961     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),    
00962     RPMTRANS_FLAG_NOPRE         = (1 << 17),    
00963     RPMTRANS_FLAG_NOPOST        = (1 << 18),    
00964     RPMTRANS_FLAG_NOTRIGGERIN   = (1 << 19),    
00965     RPMTRANS_FLAG_NOTRIGGERUN   = (1 << 20),    
00966     RPMTRANS_FLAG_NOPREUN       = (1 << 21),    
00967     RPMTRANS_FLAG_NOPOSTUN      = (1 << 22),    
00968     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),  
00969 /*@-enummemuse@*/
00970     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
00971 /*@=enummemuse@*/
00972     RPMTRANS_FLAG_APPLYONLY     = (1 << 25),
00973 
00974     /* 26 unused */
00975     RPMTRANS_FLAG_NOFDIGESTS    = (1 << 27),    
00976     /* 28-29 unused */
00977     RPMTRANS_FLAG_NOCONFIGS     = (1 << 30),    
00978     /* 31 unused */
00979 } rpmtransFlags;
00980 
00981 #define _noTransScripts         \
00982   ( RPMTRANS_FLAG_NOPRE |       \
00983     RPMTRANS_FLAG_NOPOST |      \
00984     RPMTRANS_FLAG_NOPREUN |     \
00985     RPMTRANS_FLAG_NOPOSTUN      \
00986   )
00987 
00988 #define _noTransTriggers        \
00989   ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
00990     RPMTRANS_FLAG_NOTRIGGERIN | \
00991     RPMTRANS_FLAG_NOTRIGGERUN | \
00992     RPMTRANS_FLAG_NOTRIGGERPOSTUN \
00993   )
00994 
00997 #if !defined(SWIG)
00998 
01003 /*@-redecl@*/
01004 /*@unused@*/ static inline /*@observer@*/
01005 const char * tagName(int tag)
01006         /*@*/
01007 {
01008 /*@-type@*/
01009     return ((*rpmTags->tagName)(tag));
01010 /*@=type@*/
01011 }
01012 /*@=redecl@*/
01013 
01019 /*@unused@*/ static inline
01020 int tagType(int tag)
01021         /*@*/
01022 {
01023 /*@-type@*/
01024     return ((*rpmTags->tagType)(tag));
01025 /*@=type@*/
01026 }
01027 
01033 /*@unused@*/ static inline
01034 int tagValue(const char * tagstr)
01035         /*@*/
01036 {
01037 /*@-type@*/
01038     return ((*rpmTags->tagValue)(tagstr));
01039 /*@=type@*/
01040 }
01041 #endif
01042 
01043 #define RPMLEAD_BINARY 0
01044 #define RPMLEAD_SOURCE 1
01045 
01046 #define RPMLEAD_MAGIC0 0xed
01047 #define RPMLEAD_MAGIC1 0xab
01048 #define RPMLEAD_MAGIC2 0xee
01049 #define RPMLEAD_MAGIC3 0xdb
01050 
01051 #define RPMLEAD_SIZE 96         
01059 struct rpmlead {
01060     unsigned char magic[4];
01061     unsigned char major;
01062     unsigned char minor;
01063     short type;
01064     short archnum;
01065     char name[66];
01066     short osnum;
01067     short signature_type;       
01068 /*@unused@*/ char reserved[16]; 
01069 } ;
01070 
01071 /* ==================================================================== */
01074 
01078 enum rpmtagSignature {
01079     RPMSIGTAG_SIZE      = 1000, 
01080     RPMSIGTAG_LEMD5_1   = 1001, 
01081     RPMSIGTAG_PGP       = 1002, 
01082     RPMSIGTAG_LEMD5_2   = 1003, 
01083     RPMSIGTAG_MD5       = 1004, 
01084     RPMSIGTAG_GPG       = 1005, 
01085     RPMSIGTAG_PGP5      = 1006, 
01086     RPMSIGTAG_PAYLOADSIZE = 1007,
01087     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
01088     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
01089     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
01090     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
01091     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER      
01092 };
01093 
01107 rpmRC rpmVerifySignature(const rpmts ts,
01108                 /*@out@*/ char * result)
01109         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01110         /*@modifies ts, *result, rpmGlobalMacroContext,
01111                 fileSystem, internalState @*/;
01112 
01118 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header sigh)
01119         /*@modifies sigh @*/;
01120 
01123 #ifdef __cplusplus
01124 }
01125 #endif
01126 
01127 #endif  /* H_RPMLIB */

Generated on Wed Feb 6 22:31:48 2008 for rpm by  doxygen 1.5.1