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

lib/rpmlib.h

Go to the documentation of this file.
00001 #ifndef H_RPMLIB
00002 #define H_RPMLIB
00003 
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 5
00019 #define RPM_MINOR_VERSION 0
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 
00062 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmts_s * rpmts;
00063 
00066 typedef struct Spec_s * Spec;
00067 
00071 typedef /*@abstract@*/ void * alKey;
00072 #define RPMAL_NOMATCH   ((alKey)-1L)
00073 
00077 /*@-mutrep@*/
00078 typedef /*@abstract@*/ int alNum;
00079 /*@=mutrep@*/
00080 
00084 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmds_s * rpmds;
00085 
00089 typedef struct rpmPRCO_s * rpmPRCO;
00090 
00094 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmfi_s * rpmfi;
00095 
00099 typedef /*@abstract@*/ struct rpmte_s * rpmte;
00100 
00104 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmdb_s * rpmdb;
00105 
00109 typedef /*@abstract@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator;
00110 
00114 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
00115 
00122 void headerMergeLegacySigs(Header h, const Header sigh)
00123         /*@modifies h, sigh @*/;
00124 
00132 Header headerRegenSigHeader(const Header h, int noArchiveSize)
00133         /*@modifies h @*/;
00134 
00138 /*@-redecl@*/
00139 /*@observer@*/ /*@unchecked@*/
00140 extern const struct headerTagTableEntry_s * rpmTagTable;
00141 /*@=redecl@*/
00142 
00146 /*@-redecl@*/
00147 /*@unchecked@*/
00148 extern const int rpmTagTableSize;
00149 /*@=redecl@*/
00150 
00151 /*@unchecked@*/
00152 extern headerTagIndices rpmTags;
00153 
00158 /*@-redecl@*/
00159 /*@unchecked@*/
00160 extern const struct headerSprintfExtension_s rpmHeaderFormats[];
00161 /*@=redecl@*/
00162 
00166 #define RPMDBI_PACKAGES         0       /* Installed package headers. */
00167 #define RPMDBI_DEPENDS          1       /* Dependency resolution cache. */
00168 #define RPMDBI_LABEL            2       /* Fingerprint search marker. */
00169 #define RPMDBI_ADDED            3       /* Added package headers. */
00170 #define RPMDBI_REMOVED          4       /* Removed package headers. */
00171 #define RPMDBI_AVAILABLE        5       /* Available package headers. */
00172 #define RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
00173 #define RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
00174 #define RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
00175 
00181 typedef enum rpmTag_e {
00182 
00183     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00184     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00185     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00186 /*@-enummemuse@*/
00187     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00189     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00190 /*@=enummemuse@*/
00191 
00192 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00193 /* the md5 sum was broken *twice* on big endian machines */
00194 /* XXX 2nd underscore prevents tagTable generation */
00195     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00196     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,    /* i */
00197     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    /* internal - obsolete */
00198     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,    /* x */
00199     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    /* x internal - obsolete */
00200     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,    /* x */
00201 #define RPMTAG_PKGID    RPMTAG_SIGMD5                   /* x */
00202     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,    /* x */
00203     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    /* internal - obsolete */
00204 
00205     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    /* internal - obsolete */
00206     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    /* internal - obsolete */
00207     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,   /* s[] */
00208     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,   /* x */
00209     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,   /* x */
00210     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,   /* s */
00211 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
00212 
00213     RPMTAG_NAME                 = 1000, /* s */
00214 #define RPMTAG_N        RPMTAG_NAME     /* s */
00215     RPMTAG_VERSION              = 1001, /* s */
00216 #define RPMTAG_V        RPMTAG_VERSION  /* s */
00217     RPMTAG_RELEASE              = 1002, /* s */
00218 #define RPMTAG_R        RPMTAG_RELEASE  /* s */
00219     RPMTAG_EPOCH                = 1003, /* i */
00220 #define RPMTAG_E        RPMTAG_EPOCH    /* i */
00221     RPMTAG_SUMMARY              = 1004, /* s{} */
00222     RPMTAG_DESCRIPTION          = 1005, /* s{} */
00223     RPMTAG_BUILDTIME            = 1006, /* i */
00224     RPMTAG_BUILDHOST            = 1007, /* s */
00225     RPMTAG_INSTALLTIME          = 1008, /* i */
00226     RPMTAG_SIZE                 = 1009, /* i */
00227     RPMTAG_DISTRIBUTION         = 1010, /* s */
00228     RPMTAG_VENDOR               = 1011, /* s */
00229     RPMTAG_GIF                  = 1012, /* x */
00230     RPMTAG_XPM                  = 1013, /* x */
00231     RPMTAG_LICENSE              = 1014, /* s */
00232     RPMTAG_PACKAGER             = 1015, /* s */
00233     RPMTAG_GROUP                = 1016, /* s{} */
00234 /*@-enummemuse@*/
00235     RPMTAG_CHANGELOG            = 1017, /* s[] internal */
00236 /*@=enummemuse@*/
00237     RPMTAG_SOURCE               = 1018, /* s[] */
00238     RPMTAG_PATCH                = 1019, /* s[] */
00239     RPMTAG_URL                  = 1020, /* s */
00240     RPMTAG_OS                   = 1021, /* s legacy used int */
00241     RPMTAG_ARCH                 = 1022, /* s legacy used int */
00242     RPMTAG_PREIN                = 1023, /* s */
00243     RPMTAG_POSTIN               = 1024, /* s */
00244     RPMTAG_PREUN                = 1025, /* s */
00245     RPMTAG_POSTUN               = 1026, /* s */
00246     RPMTAG_OLDFILENAMES         = 1027, /* s[] obsolete */
00247     RPMTAG_FILESIZES            = 1028, /* i[] */
00248     RPMTAG_FILESTATES           = 1029, /* c[] */
00249     RPMTAG_FILEMODES            = 1030, /* h[] */
00250     RPMTAG_FILEUIDS             = 1031, /* i[] internal */
00251     RPMTAG_FILEGIDS             = 1032, /* i[] internal */
00252     RPMTAG_FILERDEVS            = 1033, /* h[] */
00253     RPMTAG_FILEMTIMES           = 1034, /* i[] */
00254     RPMTAG_FILEDIGESTS          = 1035, /* s[] */
00255 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
00256     RPMTAG_FILELINKTOS          = 1036, /* s[] */
00257     RPMTAG_FILEFLAGS            = 1037, /* i[] */
00258 /*@-enummemuse@*/
00259     RPMTAG_ROOT                 = 1038, /* internal - obsolete */
00260 /*@=enummemuse@*/
00261     RPMTAG_FILEUSERNAME         = 1039, /* s[] */
00262     RPMTAG_FILEGROUPNAME        = 1040, /* s[] */
00263 /*@-enummemuse@*/
00264     RPMTAG_EXCLUDE              = 1041, /* internal - obsolete */
00265     RPMTAG_EXCLUSIVE            = 1042, /* internal - obsolete */
00266 /*@=enummemuse@*/
00267     RPMTAG_ICON                 = 1043, /* x */
00268     RPMTAG_SOURCERPM            = 1044, /* s */
00269     RPMTAG_FILEVERIFYFLAGS      = 1045, /* i[] */
00270     RPMTAG_ARCHIVESIZE          = 1046, /* i */
00271     RPMTAG_PROVIDENAME          = 1047, /* s[] */
00272 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* s[] */
00273 #define RPMTAG_P        RPMTAG_PROVIDENAME      /* s[] */
00274     RPMTAG_REQUIREFLAGS         = 1048, /* i[] */
00275     RPMTAG_REQUIRENAME          = 1049, /* s[] */
00276 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
00277     RPMTAG_REQUIREVERSION       = 1050, /* s[] */
00278     RPMTAG_NOSOURCE             = 1051, /* i internal */
00279     RPMTAG_NOPATCH              = 1052, /* i internal */
00280     RPMTAG_CONFLICTFLAGS        = 1053, /* i[] */
00281     RPMTAG_CONFLICTNAME         = 1054, /* s[] */
00282 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
00283 #define RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
00284     RPMTAG_CONFLICTVERSION      = 1055, /* s[] */
00285     RPMTAG_DEFAULTPREFIX        = 1056, /* s internal - deprecated */
00286     RPMTAG_BUILDROOT            = 1057, /* s internal */
00287     RPMTAG_INSTALLPREFIX        = 1058, /* s internal - deprecated */
00288     RPMTAG_EXCLUDEARCH          = 1059, /* s[] */
00289     RPMTAG_EXCLUDEOS            = 1060, /* s[] */
00290     RPMTAG_EXCLUSIVEARCH        = 1061, /* s[] */
00291     RPMTAG_EXCLUSIVEOS          = 1062, /* s[] */
00292     RPMTAG_AUTOREQPROV          = 1063, /* s internal */
00293     RPMTAG_RPMVERSION           = 1064, /* s */
00294     RPMTAG_TRIGGERSCRIPTS       = 1065, /* s[] */
00295     RPMTAG_TRIGGERNAME          = 1066, /* s[] */
00296     RPMTAG_TRIGGERVERSION       = 1067, /* s[] */
00297     RPMTAG_TRIGGERFLAGS         = 1068, /* i[] */
00298     RPMTAG_TRIGGERINDEX         = 1069, /* i[] */
00299     RPMTAG_VERIFYSCRIPT         = 1079, /* s */
00300     RPMTAG_CHANGELOGTIME        = 1080, /* i[] */
00301     RPMTAG_CHANGELOGNAME        = 1081, /* s[] */
00302     RPMTAG_CHANGELOGTEXT        = 1082, /* s[] */
00303 /*@-enummemuse@*/
00304     RPMTAG_BROKENMD5            = 1083, /* internal - obsolete */
00305 /*@=enummemuse@*/
00306     RPMTAG_PREREQ               = 1084, /* internal */
00307     RPMTAG_PREINPROG            = 1085, /* s */
00308     RPMTAG_POSTINPROG           = 1086, /* s */
00309     RPMTAG_PREUNPROG            = 1087, /* s */
00310     RPMTAG_POSTUNPROG           = 1088, /* s */
00311     RPMTAG_BUILDARCHS           = 1089, /* s[] */
00312     RPMTAG_OBSOLETENAME         = 1090, /* s[] */
00313 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
00314 #define RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
00315     RPMTAG_VERIFYSCRIPTPROG     = 1091, /* s */
00316     RPMTAG_TRIGGERSCRIPTPROG    = 1092, /* s[] */
00317     RPMTAG_DOCDIR               = 1093, /* internal */
00318     RPMTAG_COOKIE               = 1094, /* s */
00319     RPMTAG_FILEDEVICES          = 1095, /* i[] */
00320     RPMTAG_FILEINODES           = 1096, /* i[] */
00321     RPMTAG_FILELANGS            = 1097, /* s[] */
00322     RPMTAG_PREFIXES             = 1098, /* s[] */
00323     RPMTAG_INSTPREFIXES         = 1099, /* s[] */
00324     RPMTAG_TRIGGERIN            = 1100, /* internal */
00325     RPMTAG_TRIGGERUN            = 1101, /* internal */
00326     RPMTAG_TRIGGERPOSTUN        = 1102, /* internal */
00327     RPMTAG_AUTOREQ              = 1103, /* internal */
00328     RPMTAG_AUTOPROV             = 1104, /* internal */
00329 /*@-enummemuse@*/
00330     RPMTAG_CAPABILITY           = 1105, /* i legacy - obsolete */
00331 /*@=enummemuse@*/
00332     RPMTAG_SOURCEPACKAGE        = 1106, /* i legacy - obsolete */
00333 /*@-enummemuse@*/
00334     RPMTAG_OLDORIGFILENAMES     = 1107, /* internal - obsolete */
00335 /*@=enummemuse@*/
00336     RPMTAG_BUILDPREREQ          = 1108, /* internal */
00337     RPMTAG_BUILDREQUIRES        = 1109, /* internal */
00338     RPMTAG_BUILDCONFLICTS       = 1110, /* internal */
00339 /*@-enummemuse@*/
00340     RPMTAG_BUILDMACROS          = 1111, /* internal - unused */
00341 /*@=enummemuse@*/
00342     RPMTAG_PROVIDEFLAGS         = 1112, /* i[] */
00343     RPMTAG_PROVIDEVERSION       = 1113, /* s[] */
00344     RPMTAG_OBSOLETEFLAGS        = 1114, /* i[] */
00345     RPMTAG_OBSOLETEVERSION      = 1115, /* s[] */
00346     RPMTAG_DIRINDEXES           = 1116, /* i[] */
00347     RPMTAG_BASENAMES            = 1117, /* s[] */
00348     RPMTAG_DIRNAMES             = 1118, /* s[] */
00349     RPMTAG_ORIGDIRINDEXES       = 1119, /* i[] relocation */
00350     RPMTAG_ORIGBASENAMES        = 1120, /* s[] relocation */
00351     RPMTAG_ORIGDIRNAMES         = 1121, /* s[] relocation */
00352     RPMTAG_OPTFLAGS             = 1122, /* s */
00353     RPMTAG_DISTURL              = 1123, /* s */
00354     RPMTAG_PAYLOADFORMAT        = 1124, /* s */
00355     RPMTAG_PAYLOADCOMPRESSOR    = 1125, /* s */
00356     RPMTAG_PAYLOADFLAGS         = 1126, /* s */
00357     RPMTAG_INSTALLCOLOR         = 1127, /* i transaction color when installed */
00358     RPMTAG_INSTALLTID           = 1128, /* i */
00359     RPMTAG_REMOVETID            = 1129, /* i */
00360 /*@-enummemuse@*/
00361     RPMTAG_SHA1RHN              = 1130, /* internal - obsolete */
00362 /*@=enummemuse@*/
00363     RPMTAG_RHNPLATFORM          = 1131, /* s deprecated */
00364     RPMTAG_PLATFORM             = 1132, /* s */
00365     RPMTAG_PATCHESNAME          = 1133, /* s[] deprecated placeholder (SuSE) */
00366     RPMTAG_PATCHESFLAGS         = 1134, /* i[] deprecated placeholder (SuSE) */
00367     RPMTAG_PATCHESVERSION       = 1135, /* s[] deprecated placeholder (SuSE) */
00368     RPMTAG_CACHECTIME           = 1136, /* i */
00369     RPMTAG_CACHEPKGPATH         = 1137, /* s */
00370     RPMTAG_CACHEPKGSIZE         = 1138, /* i */
00371     RPMTAG_CACHEPKGMTIME        = 1139, /* i */
00372     RPMTAG_FILECOLORS           = 1140, /* i[] */
00373     RPMTAG_FILECLASS            = 1141, /* i[] */
00374     RPMTAG_CLASSDICT            = 1142, /* s[] */
00375     RPMTAG_FILEDEPENDSX         = 1143, /* i[] */
00376     RPMTAG_FILEDEPENDSN         = 1144, /* i[] */
00377     RPMTAG_DEPENDSDICT          = 1145, /* i[] */
00378     RPMTAG_SOURCEPKGID          = 1146, /* x */
00379     RPMTAG_FILECONTEXTS         = 1147, /* s[] */
00380     RPMTAG_FSCONTEXTS           = 1148, /* s[] extension */
00381     RPMTAG_RECONTEXTS           = 1149, /* s[] extension */
00382     RPMTAG_POLICIES             = 1150, /* s[] selinux *.te policy file. */
00383     RPMTAG_PRETRANS             = 1151, /* s */
00384     RPMTAG_POSTTRANS            = 1152, /* s */
00385     RPMTAG_PRETRANSPROG         = 1153, /* s */
00386     RPMTAG_POSTTRANSPROG        = 1154, /* s */
00387     RPMTAG_DISTTAG              = 1155, /* s */
00388     RPMTAG_SUGGESTSNAME         = 1156, /* s[] extension */
00389 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] */
00390     RPMTAG_SUGGESTSVERSION      = 1157, /* s[] extension */
00391     RPMTAG_SUGGESTSFLAGS        = 1158, /* i[] extension */
00392     RPMTAG_ENHANCESNAME         = 1159, /* s[] extension placeholder */
00393 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] */
00394     RPMTAG_ENHANCESVERSION      = 1160, /* s[] extension placeholder */
00395     RPMTAG_ENHANCESFLAGS        = 1161, /* i[] extension placeholder */
00396     RPMTAG_PRIORITY             = 1162, /* i[] extension placeholder */
00397     RPMTAG_CVSID                = 1163, /* s */
00398 #define RPMTAG_SVNID    RPMTAG_CVSID    /* s */
00399     RPMTAG_BLINKPKGID           = 1164, /* s[] */
00400     RPMTAG_BLINKHDRID           = 1165, /* s[] */
00401     RPMTAG_BLINKNEVRA           = 1166, /* s[] */
00402     RPMTAG_FLINKPKGID           = 1167, /* s[] */
00403     RPMTAG_FLINKHDRID           = 1168, /* s[] */
00404     RPMTAG_FLINKNEVRA           = 1169, /* s[] */
00405     RPMTAG_PACKAGEORIGIN        = 1170, /* s */
00406     RPMTAG_TRIGGERPREIN         = 1171, /* internal */
00407     RPMTAG_BUILDSUGGESTS        = 1172, /* internal */
00408     RPMTAG_BUILDENHANCES        = 1173, /* internal */
00409     RPMTAG_SCRIPTSTATES         = 1174, /* i[] scriptlet exit codes */
00410     RPMTAG_SCRIPTMETRICS        = 1175, /* i[] scriptlet execution times */
00411     RPMTAG_BUILDCPUCLOCK        = 1176, /* i */
00412     RPMTAG_FILEDIGESTALGOS      = 1177, /* i[] */
00413     RPMTAG_VARIANTS             = 1178, /* s[] */
00414     RPMTAG_XMAJOR               = 1179, /* i */
00415     RPMTAG_XMINOR               = 1180, /* i */
00416     RPMTAG_REPOTAG              = 1181, /* s */
00417     RPMTAG_KEYWORDS             = 1182, /* s[] */
00418     RPMTAG_BUILDPLATFORMS       = 1183, /* s[] */
00419     RPMTAG_PACKAGECOLOR         = 1184, /* i */
00420     RPMTAG_PACKAGEPREFCOLOR     = 1185, /* i (unimplemented) */
00421     RPMTAG_XATTRSDICT           = 1186, /* s[] (unimplemented) */
00422     RPMTAG_FILEXATTRSX          = 1187, /* i[] (unimplemented) */
00423     RPMTAG_DEPATTRSDICT         = 1188, /* s[] (unimplemented) */
00424     RPMTAG_CONFLICTATTRSX       = 1189, /* i[] (unimplemented) */
00425     RPMTAG_OBSOLETEATTRSX       = 1190, /* i[] (unimplemented) */
00426     RPMTAG_PROVIDEATTRSX        = 1191, /* i[] (unimplemented) */
00427     RPMTAG_REQUIREATTRSX        = 1192, /* i[] (unimplemented) */
00428     RPMTAG_BUILDPROVIDES        = 1193, /* internal */
00429     RPMTAG_BUILDOBSOLETES       = 1194, /* internal */
00430     RPMTAG_DBINSTANCE           = 1195, /* i */
00431     RPMTAG_NVRA                 = 1196, /* s internal (unimplemented) */
00432     RPMTAG_FILEPATHS            = 1197, /* s[] internal (unimplemented) */
00433     RPMTAG_ORIGPATHS            = 1198, /* s[] internal (unimplemented) */
00434     RPMTAG_RPMLIBVERSION        = 1199, /* i internal (unimplemented) */
00435     RPMTAG_RPMLIBTIMESTAMP      = 1200, /* i internal (unimplemented) */
00436     RPMTAG_RPMLIBVENDOR         = 1201, /* i internal (unimplemented) */
00437     RPMTAG_CLASS                = 1202, /* s internal (unimplemented) */
00438     RPMTAG_TRACK                = 1203, /* s internal arbitrary */
00439     RPMTAG_TRACKPROG            = 1204, /* s internal arbitrary */
00440     RPMTAG_SANITYCHECK          = 1205, /* s internal (unimplemented) */
00441     RPMTAG_SANITYCHECKPROG      = 1206, /* s internal (unimplemented) */
00442     RPMTAG_FILESTAT             = 1207, /* s[] internal (unimplemented) */
00443     RPMTAG_STAT                 = 1208, /* s[] internal (unimplemented) */
00444     RPMTAG_ORIGINTID            = 1209, /* i[] internal (unimplemented) */
00445     RPMTAG_ORIGINTIME           = 1210, /* i[] internal (unimplemented) */
00446     RPMTAG_HEADERSTARTOFF       = 1211, /* l */
00447     RPMTAG_HEADERENDOFF         = 1212, /* l */
00448     RPMTAG_PACKAGETIME          = 1213, /* l */
00449     RPMTAG_PACKAGESIZE          = 1214, /* l */
00450     RPMTAG_PACKAGEDIGEST        = 1215, /* s */
00451     RPMTAG_PACKAGESTAT          = 1216, /* x */
00452     RPMTAG_PACKAGEBASEURL       = 1217, /* s */
00453 
00454 /*@-enummemuse@*/
00455     RPMTAG_FIRSTFREE_TAG,       
00456 /*@=enummemuse@*/
00457 
00458     /* XXX retrofit arbitrary tags */
00459 #define RPMTAG_Buildbuild       0x5bae1a5a /* s internal arbitrary */
00460 #define RPMTAG_Buildbuildprog   0x6fb46014 /* s internal arbitrary */
00461 #define RPMTAG_Buildcheck       0x7f3b97b5 /* s internal arbitrary */
00462 #define RPMTAG_Buildcheckprog   0x488a60ce /* s internal arbitrary */
00463 #define RPMTAG_Buildclean       0x566042bf /* s internal arbitrary */
00464 #define RPMTAG_Buildcleanprog   0x42c93d41 /* s internal arbitrary */
00465 #define RPMTAG_Buildinstall     0x567f5983 /* s internal arbitrary */
00466 #define RPMTAG_Buildinstallprog 0x70d4ab6f /* s internal arbitrary */
00467 #define RPMTAG_Buildprep        0x799c0b4d /* s internal arbitrary */
00468 #define RPMTAG_Buildprepprog    0x4ba37c9e /* s internal arbitrary */
00469 #define RPMTAG_Buildtimeuuid    0x782eeb68 /* s internal arbitrary */
00470 #define RPMTAG_Conflictsqlentry 0x7efaed0d /* s internal arbitrary */
00471 #define RPMTAG_Conflictxmlentry 0x61333865 /* s internal arbitrary */
00472 #define RPMTAG_Filenames        0x54aafb71 /* s internal arbitrary */
00473 #define RPMTAG_Filessqlentry1   0x4493df20 /* s internal arbitrary */
00474 #define RPMTAG_Filessqlentry2   0x515aae25 /* s internal arbitrary */
00475 #define RPMTAG_Filesxmlentry1   0x42974275 /* s internal arbitrary */
00476 #define RPMTAG_Filesxmlentry2   0x7f69e738 /* s internal arbitrary */
00477 #define RPMTAG_Hdruuid          0x42cba9cf /* s internal arbitrary */
00478 #define RPMTAG_Installprefix    0x67b450ec /* s internal arbitrary */
00479 #define RPMTAG_Installtiduuid   0x59784ccd /* s internal arbitrary */
00480 #define RPMTAG_Installtimeuuid  0x51b2ff6a /* s internal arbitrary */
00481 #define RPMTAG_Obsoletesqlentry 0x4e0e61b0 /* s internal arbitrary */
00482 #define RPMTAG_Obsoletexmlentry 0x5a7ce878 /* s internal arbitrary */
00483 #define RPMTAG_Origintiduuid    0x5fde8cfd /* s internal arbitrary */
00484 #define RPMTAG_Origintimeuuid   0x66bb891b /* s internal arbitrary */
00485 #define RPMTAG_Pkguuid          0x44703c2c /* s internal arbitrary */
00486 #define RPMTAG_Providesqlentry  0x599f1b4a /* s internal arbitrary */
00487 #define RPMTAG_Providexmlentry  0x6569bce6 /* s internal arbitrary */
00488 #define RPMTAG_Removetiduuid    0x6a884e83 /* s internal arbitrary */
00489 #define RPMTAG_Requiresqlentry  0x723158aa /* s internal arbitrary */
00490 #define RPMTAG_Requirexmlentry  0x54b25cd7 /* s internal arbitrary */
00491 #define RPMTAG_Sourcepkguuid    0x4eedc6f9 /* s internal arbitrary */
00492 #define RPMTAG_Trackprog        0x46c39442 /* s internal arbitrary */
00493 #define RPMTAG_Triggerconds     0x46ced1cc /* s internal arbitrary */
00494 #define RPMTAG_Triggertype      0x562d6086 /* s internal arbitrary */
00495 
00496 } rpmTag;
00497 
00498 #define RPMTAG_EXTERNAL_TAG             1000000
00499 
00503 typedef enum rpmScriptID_e {
00504     RPMSCRIPT_UNKNOWN           =  0,   
00505     RPMSCRIPT_PRETRANS          =  1,   
00506     RPMSCRIPT_TRIGGERPREIN      =  2,   
00507     RPMSCRIPT_PREIN             =  3,   
00508     RPMSCRIPT_POSTIN            =  4,   
00509     RPMSCRIPT_TRIGGERIN         =  5,   
00510     RPMSCRIPT_TRIGGERUN         =  6,   
00511     RPMSCRIPT_PREUN             =  7,   
00512     RPMSCRIPT_POSTUN            =  8,   
00513     RPMSCRIPT_TRIGGERPOSTUN     =  9,   
00514     RPMSCRIPT_POSTTRANS         = 10,   
00515         /* 11-15 unused */
00516     RPMSCRIPT_VERIFY            = 16,   
00517     RPMSCRIPT_MAX               = 32
00518 } rpmScriptID;
00519 
00523 typedef enum rpmScriptState_e {
00524     RPMSCRIPT_STATE_UNKNOWN     = 0,
00525         /* 0-15 reserved for waitpid return. */
00526     RPMSCRIPT_STATE_EXEC        = (1 << 16), 
00527     RPMSCRIPT_STATE_REAPED      = (1 << 17), 
00528         /* 18-23 unused */
00529     RPMSCRIPT_STATE_SELINUX     = (1 << 24), 
00530     RPMSCRIPT_STATE_EMULATOR    = (1 << 25), 
00531     RPMSCRIPT_STATE_LUA         = (1 << 26)  
00532 } rpmScriptState;
00533 
00537 typedef enum rpmfileState_e {
00538     RPMFILE_STATE_NORMAL        = 0,
00539     RPMFILE_STATE_REPLACED      = 1,
00540     RPMFILE_STATE_NOTINSTALLED  = 2,
00541     RPMFILE_STATE_NETSHARED     = 3,
00542     RPMFILE_STATE_WRONGCOLOR    = 4
00543 } rpmfileState;
00544 #define RPMFILE_STATE_MISSING   -1      /* XXX used for unavailable data */
00545 
00549 typedef enum rpmfileAttrs_e {
00550 /*@-enummemuse@*/
00551     RPMFILE_NONE        = 0,
00552 /*@=enummemuse@*/
00553     RPMFILE_CONFIG      = (1 <<  0),    
00554     RPMFILE_DOC         = (1 <<  1),    
00555     RPMFILE_ICON        = (1 <<  2),    
00556     RPMFILE_MISSINGOK   = (1 <<  3),    
00557     RPMFILE_NOREPLACE   = (1 <<  4),    
00558     RPMFILE_SPECFILE    = (1 <<  5),    
00559     RPMFILE_GHOST       = (1 <<  6),    
00560     RPMFILE_LICENSE     = (1 <<  7),    
00561     RPMFILE_README      = (1 <<  8),    
00562     RPMFILE_EXCLUDE     = (1 <<  9),    
00563     RPMFILE_UNPATCHED   = (1 << 10),    
00564     RPMFILE_PUBKEY      = (1 << 11),    
00565     RPMFILE_POLICY      = (1 << 12),    
00566     RPMFILE_EXISTS      = (1 << 13),    
00567     RPMFILE_SPARSE      = (1 << 14),    
00568     RPMFILE_TYPED       = (1 << 15),    
00569     RPMFILE_SOURCE      = (1 << 16),    
00570     RPMFILE_PATCH       = (1 << 17)     
00571 } rpmfileAttrs;
00572 
00573 #define RPMFILE_SPOOK   (RPMFILE_GHOST|RPMFILE_TYPED)
00574 #define RPMFILE_ALL     ~(RPMFILE_NONE)
00575 
00576 /* ==================================================================== */
00579 
00584 enum rpm_machtable_e {
00585     RPM_MACHTABLE_INSTARCH      = 0,    
00586     RPM_MACHTABLE_INSTOS        = 1,    
00587     RPM_MACHTABLE_BUILDARCH     = 2,    
00588     RPM_MACHTABLE_BUILDOS       = 3     
00589 };
00590 #define RPM_MACHTABLE_COUNT     4       
00596 /*@observer@*/ /*@checked@*/
00597 extern const char *rpmRcfiles;
00598 
00605 int rpmReadConfigFiles(/*@null@*/ const char * file,
00606                 /*@null@*/ const char * target)
00607         /*@globals rpmRcfiles,
00608                 rpmGlobalMacroContext, rpmCLIMacroContext, h_errno,
00609                 fileSystem, internalState @*/
00610         /*@modifies rpmGlobalMacroContext, rpmCLIMacroContext,
00611                 fileSystem, internalState @*/;
00612 
00620 void rpmGetArchInfo( /*@null@*/ /*@out@*/ const char ** name,
00621                 /*@null@*/ /*@out@*/ int * num)
00622         /*@modifies *name, *num @*/;
00623 
00631 void rpmGetOsInfo( /*@null@*/ /*@out@*/ const char ** name,
00632                 /*@null@*/ /*@out@*/ int * num)
00633         /*@modifies *name, *num @*/;
00634 
00648 int rpmMachineScore(int type, const char * name)
00649         /*@*/;
00650 
00651 /*@only@*/ /*@null@*/ /*@unchecked@*/
00652 extern void * platpat;
00653 /*@unchecked@*/
00654 extern int nplatpat;
00655 
00667 int rpmPlatformScore(const char * platform, /*@null@*/ void * mi_re, int mi_nre)
00668         /*@modifies mi_re @*/;
00669 
00675 int rpmShowRC(FILE * fp)
00676         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00677         /*@modifies *fp, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00678 
00686 void rpmSetTables(int archTable, int osTable)
00687         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00688         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00689 
00700 void rpmSetMachine(/*@null@*/ const char * arch, /*@null@*/ const char * os)
00701         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00702         /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
00703 
00708 void rpmFreeRpmrc(void)
00709         /*@globals platpat, nplatpat, internalState @*/
00710         /*@modifies platpat, nplatpat, internalState @*/;
00711 
00713 /* ==================================================================== */
00716 
00720 typedef enum rpmprobFilterFlags_e {
00721     RPMPROB_FILTER_NONE         = 0,
00722     RPMPROB_FILTER_IGNOREOS     = (1 << 0),     
00723     RPMPROB_FILTER_IGNOREARCH   = (1 << 1),     
00724     RPMPROB_FILTER_REPLACEPKG   = (1 << 2),     
00725     RPMPROB_FILTER_FORCERELOCATE= (1 << 3),     
00726     RPMPROB_FILTER_REPLACENEWFILES= (1 << 4),   
00727     RPMPROB_FILTER_REPLACEOLDFILES= (1 << 5),   
00728     RPMPROB_FILTER_OLDPACKAGE   = (1 << 6),     
00729     RPMPROB_FILTER_DISKSPACE    = (1 << 7),     
00730     RPMPROB_FILTER_DISKNODES    = (1 << 8)      
00731 } rpmprobFilterFlags;
00732 
00736 typedef struct rpmRelocation_s * rpmRelocation;
00737 #if !defined(SWIG)
00738 struct rpmRelocation_s {
00739 /*@only@*/ /*@null@*/
00740     const char * oldPath;       
00741 /*@only@*/ /*@null@*/
00742     const char * newPath;       
00743 };
00744 #endif
00745 
00753 int rpmVersionCompare(Header first, Header second)
00754         /*@*/;
00755 
00759 typedef enum fileAction_e {
00760     FA_UNKNOWN = 0,     
00761     FA_CREATE,          
00762     FA_COPYIN,          
00763     FA_COPYOUT,         
00764     FA_BACKUP,          
00765     FA_SAVE,            
00766     FA_SKIP,            
00767     FA_ALTNAME,         
00768     FA_ERASE,           
00769     FA_SKIPNSTATE,      
00770     FA_SKIPNETSHARED,   
00771     FA_SKIPCOLOR        
00772 } fileAction;
00773 
00774 #define XFA_SKIPPING(_a)        \
00775     ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00776 
00784 typedef enum fileTypes_e {
00785     PIPE        =  1,   
00786     CDEV        =  2,   
00787     XDIR        =  4,   
00788     BDEV        =  6,   
00789     REG         =  8,   
00790     LINK        = 10,   
00791     SOCK        = 12    
00792 } fileTypes;
00793 
00797 typedef /*@abstract@*/ struct fsmIterator_s * FSMI_t;
00798 
00802 typedef /*@abstract@*/ struct fsm_s * FSM_t;
00803 
00807 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
00808 
00818 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
00819         /*@modifies *iv @*/;
00820 
00834 rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
00835                 /*@out@*/ /*@null@*/ const char ** msg)
00836         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00837         /*@modifies ts, *msg, rpmGlobalMacroContext,
00838                 fileSystem, internalState @*/;
00839 
00848 rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
00849                 /*@out@*/ /*@null@*/ const char ** msg)
00850         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00851         /*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
00852                 fileSystem, internalState @*/;
00853 
00862 rpmRC rpmReadPackageFile(rpmts ts, FD_t fd,
00863                 const char * fn, /*@null@*/ /*@out@*/ Header * hdrp)
00864         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00865         /*@modifies ts, fd, *hdrp, rpmGlobalMacroContext,
00866                 fileSystem, internalState @*/;
00867 
00876 rpmRC rpmInstallSourcePackage(rpmts ts, FD_t fd,
00877                         /*@null@*/ /*@out@*/ const char ** specFilePtr,
00878                         /*@null@*/ /*@out@*/ const char ** cookie)
00879         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00880         /*@modifies ts, fd, *specFilePtr, *cookie, rpmGlobalMacroContext,
00881                 fileSystem, internalState @*/;
00882 
00887 typedef enum rpmdepFlags_e {
00888     RPMDEPS_FLAG_NONE           = 0,
00889     RPMDEPS_FLAG_NOUPGRADE      = (1 <<  0),    
00890     RPMDEPS_FLAG_NOREQUIRES     = (1 <<  1),    
00891     RPMDEPS_FLAG_NOCONFLICTS    = (1 <<  2),    
00892     RPMDEPS_FLAG_NOOBSOLETES    = (1 <<  3),    
00893     RPMDEPS_FLAG_NOPARENTDIRS   = (1 <<  4),    
00894     RPMDEPS_FLAG_NOLINKTOS      = (1 <<  5),    
00895     RPMDEPS_FLAG_ANACONDA       = (1 <<  6),    
00896     RPMDEPS_FLAG_NOSUGGEST      = (1 <<  7),    
00897     RPMDEPS_FLAG_ADDINDEPS      = (1 <<  8),    
00898     RPMDEPS_FLAG_DEPLOOPS       = (1 <<  9)     
00899 } rpmdepFlags;
00900 
00905 typedef enum rpmtransFlags_e {
00906     RPMTRANS_FLAG_NONE          = 0,
00907     RPMTRANS_FLAG_TEST          = (1 <<  0),    
00908     RPMTRANS_FLAG_BUILD_PROBS   = (1 <<  1),    
00909     RPMTRANS_FLAG_NOSCRIPTS     = (1 <<  2),    
00910     RPMTRANS_FLAG_JUSTDB        = (1 <<  3),    
00911     RPMTRANS_FLAG_NOTRIGGERS    = (1 <<  4),    
00912     RPMTRANS_FLAG_NODOCS        = (1 <<  5),    
00913     RPMTRANS_FLAG_ALLFILES      = (1 <<  6),    
00914 /*@-enummemuse@*/
00915     RPMTRANS_FLAG_KEEPOBSOLETE  = (1 <<  7),    
00916 /*@=enummemuse@*/
00917     RPMTRANS_FLAG_NOCONTEXTS    = (1 <<  8),    
00918     RPMTRANS_FLAG_DIRSTASH      = (1 <<  9),    
00919     RPMTRANS_FLAG_REPACKAGE     = (1 << 10),    
00921     RPMTRANS_FLAG_PKGCOMMIT     = (1 << 11),
00922 /*@-enummemuse@*/
00923     RPMTRANS_FLAG_PKGUNDO       = (1 << 12),
00924 /*@=enummemuse@*/
00925     RPMTRANS_FLAG_COMMIT        = (1 << 13),
00926 /*@-enummemuse@*/
00927     RPMTRANS_FLAG_UNDO          = (1 << 14),
00928 /*@=enummemuse@*/
00929     /* 15 unused */
00930 
00931     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),    
00932     RPMTRANS_FLAG_NOPRE         = (1 << 17),    
00933     RPMTRANS_FLAG_NOPOST        = (1 << 18),    
00934     RPMTRANS_FLAG_NOTRIGGERIN   = (1 << 19),    
00935     RPMTRANS_FLAG_NOTRIGGERUN   = (1 << 20),    
00936     RPMTRANS_FLAG_NOPREUN       = (1 << 21),    
00937     RPMTRANS_FLAG_NOPOSTUN      = (1 << 22),    
00938     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23),  
00939 /*@-enummemuse@*/
00940     RPMTRANS_FLAG_NOPAYLOAD     = (1 << 24),
00941 /*@=enummemuse@*/
00942     RPMTRANS_FLAG_APPLYONLY     = (1 << 25),
00943 
00944     /* 26 unused */
00945     RPMTRANS_FLAG_NOFDIGESTS    = (1 << 27),    
00946     /* 28-29 unused */
00947     RPMTRANS_FLAG_NOCONFIGS     = (1 << 30),    
00948     /* 31 unused */
00949 } rpmtransFlags;
00950 
00951 #define _noTransScripts         \
00952   ( RPMTRANS_FLAG_NOPRE |       \
00953     RPMTRANS_FLAG_NOPOST |      \
00954     RPMTRANS_FLAG_NOPREUN |     \
00955     RPMTRANS_FLAG_NOPOSTUN      \
00956   )
00957 
00958 #define _noTransTriggers        \
00959   ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
00960     RPMTRANS_FLAG_NOTRIGGERIN | \
00961     RPMTRANS_FLAG_NOTRIGGERUN | \
00962     RPMTRANS_FLAG_NOTRIGGERPOSTUN \
00963   )
00964 
00967 #if !defined(SWIG)
00968 
00973 /*@-redecl@*/
00974 /*@unused@*/ static inline /*@observer@*/
00975 const char * tagName(int tag)
00976         /*@*/
00977 {
00978 /*@-type@*/
00979     return ((*rpmTags->tagName)(tag));
00980 /*@=type@*/
00981 }
00982 /*@=redecl@*/
00983 
00989 /*@unused@*/ static inline
00990 int tagType(int tag)
00991         /*@*/
00992 {
00993 /*@-type@*/
00994     return ((*rpmTags->tagType)(tag));
00995 /*@=type@*/
00996 }
00997 
01003 /*@unused@*/ static inline
01004 int tagValue(const char * tagstr)
01005         /*@*/
01006 {
01007 /*@-type@*/
01008     return ((*rpmTags->tagValue)(tagstr));
01009 /*@=type@*/
01010 }
01011 #endif
01012 
01013 #define RPMLEAD_BINARY 0
01014 #define RPMLEAD_SOURCE 1
01015 
01016 #define RPMLEAD_MAGIC0 0xed
01017 #define RPMLEAD_MAGIC1 0xab
01018 #define RPMLEAD_MAGIC2 0xee
01019 #define RPMLEAD_MAGIC3 0xdb
01020 
01021 #define RPMLEAD_SIZE 96         
01029 struct rpmlead {
01030     unsigned char magic[4];
01031     unsigned char major;
01032     unsigned char minor;
01033     short type;
01034     short archnum;
01035     char name[66];
01036     short osnum;
01037     short signature_type;       
01038 /*@unused@*/ char reserved[16]; 
01039 } ;
01040 
01041 /* ==================================================================== */
01044 
01048 enum rpmtagSignature {
01049     RPMSIGTAG_SIZE      = 1000, 
01050     RPMSIGTAG_LEMD5_1   = 1001, 
01051     RPMSIGTAG_PGP       = 1002, 
01052     RPMSIGTAG_LEMD5_2   = 1003, 
01053     RPMSIGTAG_MD5       = 1004, 
01054     RPMSIGTAG_GPG       = 1005, 
01055     RPMSIGTAG_PGP5      = 1006, 
01056     RPMSIGTAG_PAYLOADSIZE = 1007,
01057     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
01058     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
01059     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
01060     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
01061     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER,     
01062     RPMSIGTAG_PADDING   = 0x3fffffff            
01063 };
01064 
01078 rpmRC rpmVerifySignature(const rpmts ts,
01079                 /*@out@*/ char * result)
01080         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
01081         /*@modifies ts, *result, rpmGlobalMacroContext,
01082                 fileSystem, internalState @*/;
01083 
01089 /*@null@*/ Header rpmFreeSignature(/*@null@*/ /*@killref@*/ Header sigh)
01090         /*@modifies sigh @*/;
01091 
01094 #ifdef __cplusplus
01095 }
01096 #endif
01097 
01098 #endif  /* H_RPMLIB */

Generated on Sat Oct 1 16:48:19 2011 for rpm by  doxygen 1.4.4