rpm  5.4.4
rpmdb/rpmtag.h
Go to the documentation of this file.
00001 #ifndef H_RPMTAG
00002 #define H_RPMTAG
00003 
00008 #include <rpmiotypes.h>
00009 #include <rpmsw.h>
00010 
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014 
00017 typedef const char *    errmsg_t;
00018 
00021 typedef /*@abstract@*/ /*@refcounted@*/ struct headerToken_s * Header;
00022 
00026 enum rpmTagType_e {
00027         /* RPM_NULL_TYPE =  0   - never been used. */
00028         /* RPM_CHAR_TYPE =  1   - never been used, same as RPM_UINT8_TYPE. */
00029     RPM_UINT8_TYPE              =  2,
00030     RPM_UINT16_TYPE             =  3,
00031     RPM_UINT32_TYPE             =  4,
00032     RPM_UINT64_TYPE             =  5,
00033     RPM_STRING_TYPE             =  6,
00034     RPM_BIN_TYPE                =  7,
00035     RPM_STRING_ARRAY_TYPE       =  8,
00036     RPM_I18NSTRING_TYPE         =  9
00037         /* RPM_ASN1_TYPE = 10   - never been used. */
00038         /* RPM_OPENPGP_TYPE= 11 - never been used. */
00039 };
00040 #define RPM_MIN_TYPE            2
00041 #define RPM_MAX_TYPE            9
00042 #define RPM_MASK_TYPE           0x0000ffff
00043 
00046 typedef enum rpmTagType_e rpmTagType;   
00050 typedef union rpmDataType_u rpmTagData; 
00054 typedef rpmuint32_t rpmTagCount;        
00058 typedef struct _HE_s * HE_t;    
00062 /*@-typeuse -fielduse@*/
00063 #if !defined(SWIG)
00064 union rpmDataType_u {
00065 /*@null@*/
00066     void * ptr;
00067     rpmuint8_t * ui8p;          
00068     rpmuint16_t * ui16p;        
00069     rpmuint32_t * ui32p;        
00070     rpmuint64_t * ui64p;        
00071 /*@relnull@*/
00072     const char * str;           
00073     unsigned char * blob;       
00074     const char ** argv;         
00075     HE_t he;
00076 };
00077 #endif
00078 /*@=typeuse =fielduse@*/
00079 
00080 /*@=typeuse =fielduse@*/
00083 /*@-enummemuse -typeuse @*/
00084 typedef enum rpmSubTagType_e {
00085     RPM_REGION_TYPE             = -10,
00086     RPM_BIN_ARRAY_TYPE          = -11,
00087     RPM_XREF_TYPE               = -12
00088 } rpmSubTagType;
00089 /*@=enummemuse =typeuse @*/
00090 
00094 /*@-enummemuse -typeuse @*/
00095 typedef enum rpmTagReturnType_e {
00096     RPM_ANY_RETURN_TYPE         = 0,
00097     RPM_SCALAR_RETURN_TYPE      = 0x00010000,
00098     RPM_ARRAY_RETURN_TYPE       = 0x00020000,
00099     RPM_MAPPING_RETURN_TYPE     = 0x00040000,
00100         /* 0x00080000 */
00101     RPM_PROBE_RETURN_TYPE       = 0x00100000,
00102     RPM_TREE_RETURN_TYPE        = 0x00200000,
00103     RPM_OPENPGP_RETURN_TYPE     = 0x00400000,
00104     RPM_X509_RETURN_TYPE        = 0x00800000,
00105     RPM_ASN1_RETURN_TYPE        = 0x01000000,
00106     RPM_OPAQUE_RETURN_TYPE      = 0x10000000,
00107     RPM_MASK_RETURN_TYPE        = 0xffff0000
00108 } rpmTagReturnType;
00109 /*@=enummemuse =typeuse @*/
00110 
00115 #define HEADER_IMAGE            61
00116 #define HEADER_SIGNATURES       62
00117 #define HEADER_IMMUTABLE        63
00118 #define HEADER_REGIONS          64
00119 #define HEADER_I18NTABLE        100
00120 #define HEADER_SIGBASE          256
00121 #define HEADER_TAGBASE          1000
00122 
00125 typedef /*@abstract@*/ struct headerIterator_s * HeaderIterator;
00126 
00129 typedef /*@abstract@*/ struct headerTagIndices_s * headerTagIndices;
00130 
00133 typedef /*@abstract@*/ const struct headerSprintfExtension_s * headerSprintfExtension;
00134 
00138 #define RPMDBI_PACKAGES         0       /* Installed package headers. */
00139 #define RPMDBI_DEPCACHE         1       /* Dependency resolution cache. */
00140         /* (obsolete) RPMDBI_LABEL was 2 */
00141 #define RPMDBI_ADDED            3       /* Added package headers. */
00142 #define RPMDBI_REMOVED          4       /* Removed package headers. */
00143 #define RPMDBI_AVAILABLE        5       /* Available package headers. */
00144 #define RPMDBI_HDLIST           6       /* (rpmgi) Header list. */
00145 #define RPMDBI_ARGLIST          7       /* (rpmgi) Argument list. */
00146 #define RPMDBI_FTSWALK          8       /* (rpmgi) File tree  walk. */
00147 #define RPMDBI_SEQNO            9       /* Sequence numbers. */
00148 #define RPMDBI_BTREE            10      /* (development) Generic DB_BTREE. */
00149 #define RPMDBI_HASH             11      /* (development) Generic DB_HASH. */
00150 #define RPMDBI_QUEUE            12      /* (development) Generic DB_QUEUE. */
00151 #define RPMDBI_RECNO            13      /* (development) Generic DB_RECNO. */
00152 #define RPMDBI_HEAP             14      /* (development) Generic DB_HEAP. */
00153         /* 15 unused */
00154 #define RPMDBI_REPACKAGES       16      /* Re-packaged package paths. */
00155 #define RPMDBI_REPOSITORY       17      /* Repository URI's. */
00156 
00161 enum rpmTag_e {
00162 
00163     RPMTAG_HEADERIMAGE          = HEADER_IMAGE,         
00164     RPMTAG_HEADERSIGNATURES     = HEADER_SIGNATURES,    
00165     RPMTAG_HEADERIMMUTABLE      = HEADER_IMMUTABLE,     
00166 /*@-enummemuse@*/
00167     RPMTAG_HEADERREGIONS        = HEADER_REGIONS,       
00169     RPMTAG_HEADERI18NTABLE      = HEADER_I18NTABLE, 
00170 /*@=enummemuse@*/
00171 
00172 /* Retrofit (and uniqify) signature tags for use by tagName() and rpmQuery. */
00173 /* the md5 sum was broken *twice* on big endian machines */
00174 /* XXX 2nd underscore prevents tagTable generation */
00175     RPMTAG_SIG_BASE             = HEADER_SIGBASE,
00176     RPMTAG_SIGSIZE              = RPMTAG_SIG_BASE+1,    /* i */
00177     RPMTAG_SIGLEMD5_1           = RPMTAG_SIG_BASE+2,    /* internal - obsolete */
00178     RPMTAG_SIGPGP               = RPMTAG_SIG_BASE+3,    /* x */
00179     RPMTAG_SIGLEMD5_2           = RPMTAG_SIG_BASE+4,    /* x internal - obsolete */
00180     RPMTAG_SIGMD5               = RPMTAG_SIG_BASE+5,    /* x */
00181 #define RPMTAG_PKGID    RPMTAG_SIGMD5                   /* x */
00182     RPMTAG_SIGGPG               = RPMTAG_SIG_BASE+6,    /* x */
00183     RPMTAG_SIGPGP5              = RPMTAG_SIG_BASE+7,    /* internal - obsolete */
00184 
00185     RPMTAG_BADSHA1_1            = RPMTAG_SIG_BASE+8,    /* internal - obsolete */
00186     RPMTAG_BADSHA1_2            = RPMTAG_SIG_BASE+9,    /* internal - obsolete */
00187     RPMTAG_PUBKEYS              = RPMTAG_SIG_BASE+10,   /* s[] */
00188     RPMTAG_DSAHEADER            = RPMTAG_SIG_BASE+11,   /* x */
00189     RPMTAG_RSAHEADER            = RPMTAG_SIG_BASE+12,   /* x */
00190     RPMTAG_SHA1HEADER           = RPMTAG_SIG_BASE+13,   /* s */
00191 #define RPMTAG_HDRID    RPMTAG_SHA1HEADER       /* s */
00192 
00193     RPMTAG_NAME                 = 1000, /* s */
00194 #define RPMTAG_N        RPMTAG_NAME     /* s */
00195     RPMTAG_VERSION              = 1001, /* s */
00196 #define RPMTAG_V        RPMTAG_VERSION  /* s */
00197     RPMTAG_RELEASE              = 1002, /* s */
00198 #define RPMTAG_R        RPMTAG_RELEASE  /* s */
00199     RPMTAG_EPOCH                = 1003, /* i */
00200 #define RPMTAG_E        RPMTAG_EPOCH    /* i */
00201     RPMTAG_SUMMARY              = 1004, /* s{} */
00202     RPMTAG_DESCRIPTION          = 1005, /* s{} */
00203     RPMTAG_BUILDTIME            = 1006, /* i */
00204     RPMTAG_BUILDHOST            = 1007, /* s */
00205     RPMTAG_INSTALLTIME          = 1008, /* i[] */
00206     RPMTAG_SIZE                 = 1009, /* i */
00207     RPMTAG_DISTRIBUTION         = 1010, /* s */
00208     RPMTAG_VENDOR               = 1011, /* s */
00209     RPMTAG_GIF                  = 1012, /* x */
00210     RPMTAG_XPM                  = 1013, /* x */
00211     RPMTAG_LICENSE              = 1014, /* s */
00212     RPMTAG_PACKAGER             = 1015, /* s */
00213     RPMTAG_GROUP                = 1016, /* s{} */
00214 /*@-enummemuse@*/
00215     RPMTAG_CHANGELOG            = 1017, /* s[] internal */
00216 /*@=enummemuse@*/
00217     RPMTAG_SOURCE               = 1018, /* s[] */
00218     RPMTAG_PATCH                = 1019, /* s[] */
00219     RPMTAG_URL                  = 1020, /* s */
00220     RPMTAG_OS                   = 1021, /* s legacy used int */
00221     RPMTAG_ARCH                 = 1022, /* s legacy used int */
00222     RPMTAG_PREIN                = 1023, /* s */
00223     RPMTAG_POSTIN               = 1024, /* s */
00224     RPMTAG_PREUN                = 1025, /* s */
00225     RPMTAG_POSTUN               = 1026, /* s */
00226     RPMTAG_OLDFILENAMES         = 1027, /* s[] obsolete */
00227     RPMTAG_FILESIZES            = 1028, /* i[] */
00228     RPMTAG_FILESTATES           = 1029, /* c[] */
00229     RPMTAG_FILEMODES            = 1030, /* h[] */
00230     RPMTAG_FILEUIDS             = 1031, /* i[] internal */
00231     RPMTAG_FILEGIDS             = 1032, /* i[] internal */
00232     RPMTAG_FILERDEVS            = 1033, /* h[] */
00233     RPMTAG_FILEMTIMES           = 1034, /* i[] */
00234     RPMTAG_FILEDIGESTS          = 1035, /* s[] */
00235 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS /* s[] */
00236     RPMTAG_FILELINKTOS          = 1036, /* s[] */
00237     RPMTAG_FILEFLAGS            = 1037, /* i[] */
00238 /*@-enummemuse@*/
00239     RPMTAG_ROOT                 = 1038, /* internal - obsolete */
00240 /*@=enummemuse@*/
00241     RPMTAG_FILEUSERNAME         = 1039, /* s[] */
00242     RPMTAG_FILEGROUPNAME        = 1040, /* s[] */
00243 /*@-enummemuse@*/
00244     RPMTAG_EXCLUDE              = 1041, /* internal - obsolete */
00245     RPMTAG_EXCLUSIVE            = 1042, /* internal - obsolete */
00246 /*@=enummemuse@*/
00247     RPMTAG_ICON                 = 1043, /* x */
00248     RPMTAG_SOURCERPM            = 1044, /* s */
00249     RPMTAG_FILEVERIFYFLAGS      = 1045, /* i[] */
00250     RPMTAG_ARCHIVESIZE          = 1046, /* i */
00251     RPMTAG_PROVIDENAME          = 1047, /* s[] */
00252 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME      /* s[] */
00253 #define RPMTAG_P        RPMTAG_PROVIDENAME      /* s[] */
00254     RPMTAG_REQUIREFLAGS         = 1048, /* i[] */
00255     RPMTAG_REQUIRENAME          = 1049, /* s[] */
00256 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME      /* s[] */
00257     RPMTAG_REQUIREVERSION       = 1050, /* s[] */
00258     RPMTAG_NOSOURCE             = 1051, /* i internal */
00259     RPMTAG_NOPATCH              = 1052, /* i internal */
00260     RPMTAG_CONFLICTFLAGS        = 1053, /* i[] */
00261     RPMTAG_CONFLICTNAME         = 1054, /* s[] */
00262 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME    /* s[] */
00263 #define RPMTAG_C        RPMTAG_CONFLICTNAME     /* s[] */
00264     RPMTAG_CONFLICTVERSION      = 1055, /* s[] */
00265     RPMTAG_DEFAULTPREFIX        = 1056, /* s internal - deprecated */
00266     RPMTAG_BUILDROOT            = 1057, /* s internal */
00267     RPMTAG_INSTALLPREFIX        = 1058, /* s internal - deprecated */
00268     RPMTAG_EXCLUDEARCH          = 1059, /* s[] */
00269     RPMTAG_EXCLUDEOS            = 1060, /* s[] */
00270     RPMTAG_EXCLUSIVEARCH        = 1061, /* s[] */
00271     RPMTAG_EXCLUSIVEOS          = 1062, /* s[] */
00272     RPMTAG_AUTOREQPROV          = 1063, /* s internal */
00273     RPMTAG_RPMVERSION           = 1064, /* s */
00274     RPMTAG_TRIGGERSCRIPTS       = 1065, /* s[] */
00275     RPMTAG_TRIGGERNAME          = 1066, /* s[] */
00276     RPMTAG_TRIGGERVERSION       = 1067, /* s[] */
00277     RPMTAG_TRIGGERFLAGS         = 1068, /* i[] */
00278     RPMTAG_TRIGGERINDEX         = 1069, /* i[] */
00279     RPMTAG_VERIFYSCRIPT         = 1079, /* s */
00280     RPMTAG_CHANGELOGTIME        = 1080, /* i[] */
00281     RPMTAG_CHANGELOGNAME        = 1081, /* s[] */
00282     RPMTAG_CHANGELOGTEXT        = 1082, /* s[] */
00283 /*@-enummemuse@*/
00284     RPMTAG_BROKENMD5            = 1083, /* internal - obsolete */
00285 /*@=enummemuse@*/
00286     RPMTAG_PREREQ               = 1084, /* internal */
00287     RPMTAG_PREINPROG            = 1085, /* s */
00288     RPMTAG_POSTINPROG           = 1086, /* s */
00289     RPMTAG_PREUNPROG            = 1087, /* s */
00290     RPMTAG_POSTUNPROG           = 1088, /* s */
00291     RPMTAG_BUILDARCHS           = 1089, /* s[] */
00292     RPMTAG_OBSOLETENAME         = 1090, /* s[] */
00293 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME    /* s[] */
00294 #define RPMTAG_O        RPMTAG_OBSOLETENAME     /* s[] */
00295     RPMTAG_VERIFYSCRIPTPROG     = 1091, /* s */
00296     RPMTAG_TRIGGERSCRIPTPROG    = 1092, /* s[] */
00297     RPMTAG_DOCDIR               = 1093, /* internal */
00298     RPMTAG_COOKIE               = 1094, /* s */
00299     RPMTAG_FILEDEVICES          = 1095, /* i[] */
00300     RPMTAG_FILEINODES           = 1096, /* i[] */
00301     RPMTAG_FILELANGS            = 1097, /* s[] */
00302     RPMTAG_PREFIXES             = 1098, /* s[] */
00303     RPMTAG_INSTPREFIXES         = 1099, /* s[] */
00304     RPMTAG_TRIGGERIN            = 1100, /* internal */
00305     RPMTAG_TRIGGERUN            = 1101, /* internal */
00306     RPMTAG_TRIGGERPOSTUN        = 1102, /* internal */
00307     RPMTAG_AUTOREQ              = 1103, /* internal */
00308     RPMTAG_AUTOPROV             = 1104, /* internal */
00309 /*@-enummemuse@*/
00310     RPMTAG_CAPABILITY           = 1105, /* i legacy - obsolete */
00311 /*@=enummemuse@*/
00312     RPMTAG_SOURCEPACKAGE        = 1106, /* i legacy - obsolete */
00313 /*@-enummemuse@*/
00314     RPMTAG_OLDORIGFILENAMES     = 1107, /* internal - obsolete */
00315 /*@=enummemuse@*/
00316     RPMTAG_BUILDPREREQ          = 1108, /* internal */
00317     RPMTAG_BUILDREQUIRES        = 1109, /* internal */
00318     RPMTAG_BUILDCONFLICTS       = 1110, /* internal */
00319 /*@-enummemuse@*/
00320     RPMTAG_BUILDMACROS          = 1111, /* s[] srpms only */
00321 /*@=enummemuse@*/
00322     RPMTAG_PROVIDEFLAGS         = 1112, /* i[] */
00323     RPMTAG_PROVIDEVERSION       = 1113, /* s[] */
00324     RPMTAG_OBSOLETEFLAGS        = 1114, /* i[] */
00325     RPMTAG_OBSOLETEVERSION      = 1115, /* s[] */
00326     RPMTAG_DIRINDEXES           = 1116, /* i[] */
00327     RPMTAG_BASENAMES            = 1117, /* s[] */
00328     RPMTAG_DIRNAMES             = 1118, /* s[] */
00329     RPMTAG_ORIGDIRINDEXES       = 1119, /* i[] relocation */
00330     RPMTAG_ORIGBASENAMES        = 1120, /* s[] relocation */
00331     RPMTAG_ORIGDIRNAMES         = 1121, /* s[] relocation */
00332     RPMTAG_OPTFLAGS             = 1122, /* s */
00333     RPMTAG_DISTURL              = 1123, /* s */
00334     RPMTAG_PAYLOADFORMAT        = 1124, /* s */
00335     RPMTAG_PAYLOADCOMPRESSOR    = 1125, /* s */
00336     RPMTAG_PAYLOADFLAGS         = 1126, /* s */
00337     RPMTAG_INSTALLCOLOR         = 1127, /* i transaction color when installed */
00338     RPMTAG_INSTALLTID           = 1128, /* i[] */
00339     RPMTAG_REMOVETID            = 1129, /* i[] */
00340 /*@-enummemuse@*/
00341     RPMTAG_SHA1RHN              = 1130, /* internal - obsolete */
00342 /*@=enummemuse@*/
00343     RPMTAG_RHNPLATFORM          = 1131, /* s deprecated */
00344     RPMTAG_PLATFORM             = 1132, /* s */
00345     RPMTAG_PATCHESNAME          = 1133, /* s[] deprecated placeholder (SuSE) */
00346     RPMTAG_PATCHESFLAGS         = 1134, /* i[] deprecated placeholder (SuSE) */
00347     RPMTAG_PATCHESVERSION       = 1135, /* s[] deprecated placeholder (SuSE) */
00348     RPMTAG_CACHECTIME           = 1136, /* i rpmcache(8) only */
00349     RPMTAG_CACHEPKGPATH         = 1137, /* s rpmcache(8) only */
00350     RPMTAG_CACHEPKGSIZE         = 1138, /* i rpmcache(8) only */
00351     RPMTAG_CACHEPKGMTIME        = 1139, /* i rpmcache(8) only */
00352     RPMTAG_FILECOLORS           = 1140, /* i[] */
00353     RPMTAG_FILECLASS            = 1141, /* i[] */
00354     RPMTAG_CLASSDICT            = 1142, /* s[] */
00355     RPMTAG_FILEDEPENDSX         = 1143, /* i[] */
00356     RPMTAG_FILEDEPENDSN         = 1144, /* i[] */
00357     RPMTAG_DEPENDSDICT          = 1145, /* i[] */
00358     RPMTAG_SOURCEPKGID          = 1146, /* x */
00359     RPMTAG_FILECONTEXTS         = 1147, /* s[] */
00360     RPMTAG_FSCONTEXTS           = 1148, /* s[] extension */
00361     RPMTAG_RECONTEXTS           = 1149, /* s[] extension */
00362     RPMTAG_POLICIES             = 1150, /* s[] selinux *.te policy file. */
00363     RPMTAG_PRETRANS             = 1151, /* s */
00364     RPMTAG_POSTTRANS            = 1152, /* s */
00365     RPMTAG_PRETRANSPROG         = 1153, /* s */
00366     RPMTAG_POSTTRANSPROG        = 1154, /* s */
00367     RPMTAG_DISTTAG              = 1155, /* s */
00368     RPMTAG_SUGGESTSNAME         = 1156, /* s[] extension */
00369 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME     /* s[] */
00370     RPMTAG_SUGGESTSVERSION      = 1157, /* s[] extension */
00371     RPMTAG_SUGGESTSFLAGS        = 1158, /* i[] extension */
00372     RPMTAG_ENHANCESNAME         = 1159, /* s[] extension placeholder */
00373 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME     /* s[] */
00374     RPMTAG_ENHANCESVERSION      = 1160, /* s[] extension placeholder */
00375     RPMTAG_ENHANCESFLAGS        = 1161, /* i[] extension placeholder */
00376     RPMTAG_PRIORITY             = 1162, /* i[] extension placeholder */
00377     RPMTAG_CVSID                = 1163, /* s */
00378 #define RPMTAG_SVNID    RPMTAG_CVSID    /* s */
00379     RPMTAG_BLINKPKGID           = 1164, /* s[] */
00380     RPMTAG_BLINKHDRID           = 1165, /* s[] */
00381     RPMTAG_BLINKNEVRA           = 1166, /* s[] */
00382     RPMTAG_FLINKPKGID           = 1167, /* s[] */
00383     RPMTAG_FLINKHDRID           = 1168, /* s[] */
00384     RPMTAG_FLINKNEVRA           = 1169, /* s[] */
00385     RPMTAG_PACKAGEORIGIN        = 1170, /* s */
00386     RPMTAG_TRIGGERPREIN         = 1171, /* internal */
00387     RPMTAG_BUILDSUGGESTS        = 1172, /* internal */
00388     RPMTAG_BUILDENHANCES        = 1173, /* internal */
00389     RPMTAG_SCRIPTSTATES         = 1174, /* i[] scriptlet exit codes */
00390     RPMTAG_SCRIPTMETRICS        = 1175, /* i[] scriptlet execution times */
00391     RPMTAG_BUILDCPUCLOCK        = 1176, /* i */
00392     RPMTAG_FILEDIGESTALGOS      = 1177, /* i[] */
00393     RPMTAG_VARIANTS             = 1178, /* s[] */
00394     RPMTAG_XMAJOR               = 1179, /* i */
00395     RPMTAG_XMINOR               = 1180, /* i */
00396     RPMTAG_REPOTAG              = 1181, /* s */
00397     RPMTAG_KEYWORDS             = 1182, /* s[] */
00398     RPMTAG_BUILDPLATFORMS       = 1183, /* s[] */
00399     RPMTAG_PACKAGECOLOR         = 1184, /* i */
00400     RPMTAG_PACKAGEPREFCOLOR     = 1185, /* i (unimplemented) */
00401     RPMTAG_XATTRSDICT           = 1186, /* s[] (unimplemented) */
00402     RPMTAG_FILEXATTRSX          = 1187, /* i[] (unimplemented) */
00403     RPMTAG_DEPATTRSDICT         = 1188, /* s[] (unimplemented) */
00404     RPMTAG_CONFLICTATTRSX       = 1189, /* i[] (unimplemented) */
00405     RPMTAG_OBSOLETEATTRSX       = 1190, /* i[] (unimplemented) */
00406     RPMTAG_PROVIDEATTRSX        = 1191, /* i[] (unimplemented) */
00407     RPMTAG_REQUIREATTRSX        = 1192, /* i[] (unimplemented) */
00408     RPMTAG_BUILDPROVIDES        = 1193, /* internal */
00409     RPMTAG_BUILDOBSOLETES       = 1194, /* internal */
00410     RPMTAG_DBINSTANCE           = 1195, /* i */
00411     RPMTAG_NVRA                 = 1196, /* s */
00412     RPMTAG_FILEPATHS            = 1197, /* s[] */
00413     RPMTAG_ORIGPATHS            = 1198, /* s[] */
00414     RPMTAG_RPMLIBVERSION        = 1199, /* i */
00415     RPMTAG_RPMLIBTIMESTAMP      = 1200, /* i */
00416     RPMTAG_RPMLIBVENDOR         = 1201, /* i */
00417     RPMTAG_CLASS                = 1202, /* s arbitrary */
00418     RPMTAG_TRACK                = 1203, /* s internal arbitrary */
00419     RPMTAG_TRACKPROG            = 1204, /* s internal arbitrary */
00420     RPMTAG_SANITYCHECK          = 1205, /* s */
00421     RPMTAG_SANITYCHECKPROG      = 1206, /* s */
00422     RPMTAG_FILESTAT             = 1207, /* s[] stat(2) from metadata extension*/
00423     RPMTAG_STAT                 = 1208, /* s[] stat(2) from disk extension */
00424     RPMTAG_ORIGINTID            = 1209, /* i[] */
00425     RPMTAG_ORIGINTIME           = 1210, /* i[] */
00426     RPMTAG_HEADERSTARTOFF       = 1211, /* l */
00427     RPMTAG_HEADERENDOFF         = 1212, /* l */
00428     RPMTAG_PACKAGETIME          = 1213, /* l */
00429     RPMTAG_PACKAGESIZE          = 1214, /* l */
00430     RPMTAG_PACKAGEDIGEST        = 1215, /* s */
00431     RPMTAG_PACKAGESTAT          = 1216, /* x */
00432     RPMTAG_PACKAGEBASEURL       = 1217, /* s */
00433     RPMTAG_DISTEPOCH            = 1218, /* s */
00434 #define RPMTAG_D RPMTAG_DISTEPOCH       /* s */
00435 
00436     RPMTAG_CONFLICTYAMLENTRY    = 1219, /* s[] */
00437     RPMTAG_OBSOLETEYAMLENTRY    = 1220, /* s[] */
00438     RPMTAG_PROVIDEYAMLENTRY     = 1221, /* s[] */
00439     RPMTAG_REQUIREYAMLENTRY     = 1222, /* s[] */
00440 
00441     RPMTAG_FILEDIGESTALGO       = 5011, /* i file checksum algorithm */
00442     RPMTAG_BUGURL               = 5012, /* s */
00443 
00444 /*@-enummemuse@*/
00445     RPMTAG_FIRSTFREE_TAG,       
00446 /*@=enummemuse@*/
00447 
00448     RPMTAG_PACKAGETRANSFLAGS    = 0x4efaafd9, /* s[] arbitrary */
00449     RPMTAG_PACKAGEDEPFLAGS      = 0x748a8314, /* s[] arbitrary */
00450 
00451     RPMTAG_BUILDPREPPROG        = 0x4ba37c9e, /* s[] arbitrary */
00452     RPMTAG_BUILDPREP            = 0x799c0b4d, /* s[] arbitrary */
00453     RPMTAG_BUILDBUILDPROG       = 0x6fb46014, /* s[] arbitrary */
00454     RPMTAG_BUILDBUILD           = 0x5bae1a5a, /* s[] arbitrary */
00455     RPMTAG_BUILDINSTALLPROG     = 0x70d4ab6f, /* s[] arbitrary */
00456     RPMTAG_BUILDINSTALL         = 0x567f5983, /* s[] arbitrary */
00457     RPMTAG_BUILDCHECKPROG       = 0x488a60ce, /* s[] arbitrary */
00458     RPMTAG_BUILDCHECK           = 0x7f3b97b5, /* s[] arbitrary */
00459     RPMTAG_BUILDCLEANPROG       = 0x42c93d41, /* s[] arbitrary */
00460     RPMTAG_BUILDCLEAN           = 0x566042bf, /* s[] arbitrary */
00461 
00462     RPMTAG_LASTARBITRARY_TAG    = 0x80000000  
00463 };
00464 
00465 #define RPMTAG_EXTERNAL_TAG             1000000
00466 
00470 enum rpmSigTag_e {
00471     RPMSIGTAG_SIZE      = 1000, 
00472     RPMSIGTAG_LEMD5_1   = 1001, 
00473     RPMSIGTAG_PGP       = 1002, 
00474     RPMSIGTAG_LEMD5_2   = 1003, 
00475     RPMSIGTAG_MD5       = 1004, 
00476     RPMSIGTAG_GPG       = 1005, 
00477     RPMSIGTAG_PGP5      = 1006, 
00478     RPMSIGTAG_PAYLOADSIZE = 1007,
00479     RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,     
00480     RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,     
00481     RPMSIGTAG_SHA1      = RPMTAG_SHA1HEADER,    
00482     RPMSIGTAG_DSA       = RPMTAG_DSAHEADER,     
00483     RPMSIGTAG_RSA       = RPMTAG_RSAHEADER,     
00484     RPMSIGTAG_PADDING   = 0x3fffffff            
00485 };
00486 
00489 typedef enum rpmTag_e rpmTag;
00490 
00493 typedef enum rpmSigTag_e rpmSigTag;
00494 
00497 /*@-typeuse -fielduse@*/
00498 #if !defined(SWIG)
00499 struct _HE_s {
00500     rpmTag tag;
00501     rpmTagType t;
00502 /*@owned@*/ /*@null@*/
00503     rpmTagData p;
00504     rpmTagCount c;
00505     int ix;
00506     unsigned int freeData       : 1;
00507     unsigned int avail          : 1;
00508     unsigned int append         : 1;
00509 };
00510 #endif
00511 
00514 typedef struct _HE_s HE_s;
00515 
00518 typedef struct tagStore_s * tagStore_t;
00519 
00522 typedef /*@abstract@*/ const struct headerTagTableEntry_s * headerTagTableEntry;
00523 
00524 #if defined(_RPMTAG_INTERNAL)
00525 
00530 #if !defined(SWIG)
00531 struct headerTagTableEntry_s {
00532 /*@observer@*/ /*@relnull@*/
00533     const char * name;          
00534     rpmTag val;                 
00535     rpmTagType type;            
00536 };
00537 #endif
00538 
00541 struct tagStore_s {
00542 /*@only@*/
00543     const char * str;           
00544     rpmTag tag;                 
00545     rpmiob iob;                 
00546 };  
00547 #endif  /* _RPMTAG_INTERNAL */
00548 
00552 /*@-redecl@*/
00553 /*@observer@*/ /*@unchecked@*/
00554 extern headerTagTableEntry rpmTagTable;
00555 /*@=redecl@*/
00556 
00560 /*@-redecl@*/
00561 /*@unchecked@*/
00562 extern int rpmTagTableSize;
00563 
00564 /*@unchecked@*/
00565 extern headerTagIndices rpmTags;
00566 /*@=redecl@*/
00567 
00568 #if defined(_RPMTAG_INTERNAL)
00569 
00571 #if !defined(SWIG)
00572 struct headerTagIndices_s {
00573 /*@relnull@*/
00574     int (*loadIndex) (headerTagTableEntry ** ipp, size_t * np,
00575                 int (*cmp) (const void * avp, const void * bvp))
00576         /*@ modifies *ipp, *np */;      
00577 /*@relnull@*/
00578     headerTagTableEntry * byName;       
00579     size_t byNameSize;                  
00580     int (*byNameCmp) (const void * avp, const void * bvp)
00581         /*@*/;                          
00582     rpmTag (*tagValue) (const char * name)
00583         /*@*/;                          
00584 /*@relnull@*/
00585     headerTagTableEntry * byValue;      
00586     size_t byValueSize;                 
00587     int (*byValueCmp) (const void * avp, const void * bvp)
00588         /*@*/;                          
00589     const char * (*tagName) (rpmTag value)
00590         /*@*/;                          
00591     rpmTag (*tagType) (rpmTag value)
00592         /*@*/;                          
00593     size_t nameBufLen;                  
00594 /*@relnull@*/
00595     const char ** aTags;                
00596 /*@owned@*/ /*@null@*/
00597     char * nameBuf;                     /* Name buffer. */
00598 /*@only@*/
00599     char * (*tagCanonicalize) (const char * s)
00600         /*@*/;                          
00601     rpmTag (*tagGenerate) (const char * s)
00602         /*@*/;                          
00603 };
00604 #endif
00605 #endif  /* _RPMTAG_INTERNAL */
00606 
00612 /*@observer@*/
00613 const char * tagName(rpmTag tag)
00614         /*@*/;
00615 
00622 unsigned int tagType(rpmTag tag)
00623         /*@*/;
00624 
00630 rpmTag tagValue(const char * tagstr)
00631         /*@*/;
00632 
00638 /*@only@*/
00639 char * tagCanonicalize(const char * s)
00640         /*@*/;
00641 
00647 rpmTag tagGenerate(const char * s)
00648         /*@*/;
00649 
00654 void tagClean(/*@null@*/ headerTagIndices _rpmTags)
00655         /*@globals rpmTags @*/
00656         /*@modifies _rpmTags, rpmTags @*/;
00657 
00664 /*@null@*/
00665 tagStore_t tagStoreFree(/*@only@*//*@null@*/tagStore_t dbiTags, size_t dbiNTags)
00666         /*@modifies dbiTags @*/;
00667 
00668 #if defined(_RPMTAG_INTERNAL)
00669 
00671 typedef enum headerSprintfExtensionType_e {
00672     HEADER_EXT_LAST = 0,        
00673     HEADER_EXT_FORMAT,          
00674     HEADER_EXT_MORE,            
00675     HEADER_EXT_TAG              
00676 } headerSprintfExtensionType;
00677 
00685 typedef /*only@*/ char * (*headerTagFormatFunction) (HE_t he, /*@null@*/ const char ** av)
00686         /*@modifies he @*/;
00687 
00696 typedef int (*headerTagTagFunction) (Header h, HE_t he)
00697         /*@modifies he @*/;
00698 
00702 #if !defined(SWIG)
00703 struct headerSprintfExtension_s {
00704     headerSprintfExtensionType type;            
00705 /*@observer@*/ /*@null@*/
00706     const char * name;                          
00707     union {
00708 /*@observer@*/ /*@null@*/
00709         void * generic;                         
00710         headerTagFormatFunction fmtFunction; 
00711         headerTagTagFunction tagFunction; 
00712         headerSprintfExtension * more;  
00713     } u;
00714 };
00715 #endif
00716 #endif  /* _RPMTAG_INTERNAL */
00717 
00721 /*@unchecked@*/ /*@observer@*/
00722 extern headerSprintfExtension headerDefaultFormats;
00723 
00727 /*@unchecked@*/ /*@observer@*/
00728 extern headerSprintfExtension headerCompoundFormats;
00729 
00736 void rpmDisplayQueryTags(/*@null@*/ FILE * fp,
00737                 /*@null@*/ headerTagTableEntry _rpmTagTable,
00738                 /*@null@*/ headerSprintfExtension _rpmHeaderFormats)
00739         /*@globals fileSystem, internalState @*/
00740         /*@modifies *fp, fileSystem, internalState @*/;
00741 
00753 /*@only@*/ /*@null@*/
00754 char * headerSprintf(Header h, const char * fmt,
00755                 /*@null@*/ headerTagTableEntry tags,
00756                 /*@null@*/ headerSprintfExtension exts,
00757                 /*@null@*/ /*@out@*/ errmsg_t * errmsg)
00758         /*@globals headerCompoundFormats, fileSystem, internalState @*/
00759         /*@modifies h, *errmsg, fileSystem, internalState @*/;
00760 
00769 int headerGet(Header h, HE_t he, unsigned int flags)
00770         /*@globals internalState @*/
00771         /*@modifies he, internalState @*/;
00772 #define HEADERGET_NOEXTENSION   (1 << 0) 
00773 #define HEADERGET_NOI18NSTRING  (1 << 1) 
00783 /*@mayexit@*/
00784 int headerPut(Header h, HE_t he, /*@unused@*/ unsigned int flags)
00785         /*@modifies h @*/;
00786 
00795 /*@mayexit@*/
00796 int headerDel(Header h, HE_t he, /*@unused@*/ unsigned int flags)
00797         /*@modifies h @*/;
00798 
00807 int headerMod(Header h, HE_t he, /*@unused@*/ unsigned int flags)
00808         /*@modifies h @*/;
00809 
00815 /*@null@*/
00816 HeaderIterator headerFini(/*@only@*/ HeaderIterator hi)
00817         /*@globals fileSystem @*/
00818         /*@modifies hi, fileSystem */;
00819 
00825 HeaderIterator headerInit(Header h)
00826         /*@globals fileSystem @*/
00827         /*@modifies h, fileSystem */;
00828 
00836 int headerNext(HeaderIterator hi, HE_t he, /*@unused@*/ unsigned int flags)
00837         /*@globals internalState @*/
00838         /*@modifies hi, he, internalState @*/;
00839 
00845 Header headerLink(Header h)
00846         /*@modifies h @*/;
00847 #define headerLink(_h)        \
00848     ((Header)rpmioLinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00849 
00855 /*@null@*/
00856 Header headerUnlink(/*@killref@*/ /*@null@*/ Header h)
00857         /*@modifies h @*/;
00858 #define headerUnlink(_h)        \
00859     ((Header)rpmioUnlinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00860 
00866 /*@null@*/
00867 Header headerFree(/*@killref@*/ /*@null@*/ Header h)
00868         /*@modifies h @*/;
00869 #define headerFree(_h)        \
00870     ((Header)rpmioFreePoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00871 
00876 Header headerNew(void)
00877         /*@globals fileSystem @*/
00878         /*@modifies fileSystem @*/;
00879 
00885 size_t headerSizeof(/*@null@*/ Header h)
00886         /*@modifies h @*/;
00887 
00894 /*@only@*/ /*@null@*/
00895 void * headerUnload(Header h, /*@out@*/ /*@null@*/ size_t * lenp)
00896         /*@globals internalState @*/
00897         /*@modifies h, *lenp, internalState @*/;
00898 
00907 /*@null@*/
00908 Header headerReload(/*@only@*/ Header h, int tag)
00909         /*@globals fileSystem, internalState @*/
00910         /*@modifies h, fileSystem, internalState @*/;
00911 
00917 /*@null@*/
00918 Header headerCopy(Header h)
00919         /*@globals fileSystem, internalState @*/
00920         /*@modifies h, fileSystem, internalState @*/;
00921 
00927 /*@null@*/
00928 Header headerLoad(/*@kept@*/ void * uh)
00929         /*@globals fileSystem, internalState @*/
00930         /*@modifies uh, fileSystem, internalState @*/;
00931 
00937 /*@null@*/
00938 Header headerCopyLoad(const void * uh)
00939         /*@globals fileSystem, internalState @*/
00940         /*@modifies fileSystem, internalState @*/;
00941 
00948 int headerIsEntry(/*@null@*/ Header h, rpmTag tag)
00949         /*@*/;
00950 
00971 int headerAddI18NString(Header h, rpmTag tag, const char * string,
00972                 const char * lang)
00973         /*@modifies h @*/;
00974 
00981 void headerCopyTags(Header headerFrom, Header headerTo, rpmTag * tagstocopy)
00982         /*@globals internalState @*/
00983         /*@modifies headerTo, internalState @*/;
00984 
00992 int headerGetMagic(/*@null@*/ Header h, unsigned char **magicp, size_t *nmagicp)
00993         /*@modifies *magicp, *nmagicp @*/;
00994 
01002 int headerSetMagic(/*@null@*/ Header h, unsigned char * magic, size_t nmagic)
01003         /*@modifies h @*/;
01004 
01010 /*@observer@*/ /*@null@*/
01011 const char * headerGetOrigin(/*@null@*/ Header h)
01012         /*@*/;
01013 
01020 int headerSetOrigin(/*@null@*/ Header h, const char * origin)
01021         /*@modifies h @*/;
01022 
01028 /*@observer@*/ /*@null@*/
01029 const char * headerGetParent(/*@null@*/ Header h)
01030         /*@*/;
01031 
01038 int headerSetParent(/*@null@*/ Header h, const char * parent)
01039         /*@modifies h @*/;
01040 
01046 /*@observer@*/ /*@null@*/
01047 const char * headerGetBaseURL(/*@null@*/ Header h)
01048         /*@*/;
01049 
01056 int headerSetBaseURL(/*@null@*/ Header h, const char * baseurl)
01057         /*@modifies h @*/;
01058 
01064 struct stat * headerGetStatbuf(/*@null@*/ Header h)
01065         /*@*/;
01066 
01073 int headerSetStatbuf(/*@null@*/ Header h, struct stat * st)
01074         /*@modifies h @*/;
01075 
01081 /*@null@*/
01082 const char * headerGetDigest(/*@null@*/ Header h)
01083         /*@*/;
01084 
01091 int headerSetDigest(/*@null@*/ Header h, const char * digest)
01092         /*@modifies h @*/;
01093 
01099 /*@null@*/
01100 void * headerGetRpmdb(/*@null@*/ Header h)
01101         /*@*/;
01102 
01109 /*@null@*/
01110 void * headerSetRpmdb(/*@null@*/ Header h, /*@null@*/ void * rpmdb)
01111         /*@modifies h @*/;
01112 
01118 uint32_t headerGetInstance(/*@null@*/ Header h)
01119         /*@*/;
01120 
01127 uint32_t headerSetInstance(/*@null@*/ Header h, uint32_t instance)
01128         /*@modifies h @*/;
01129 
01135 rpmuint32_t headerGetStartOff(/*@null@*/ Header h)
01136         /*@*/;
01137 
01144 rpmuint32_t headerSetStartOff(/*@null@*/ Header h, rpmuint32_t startoff)
01145         /*@modifies h @*/;
01146 
01152 rpmuint32_t headerGetEndOff(/*@null@*/ Header h)
01153         /*@*/;
01154 
01161 rpmuint32_t headerSetEndOff(/*@null@*/ Header h, rpmuint32_t endoff)
01162         /*@modifies h @*/;
01163 
01170 /*@null@*/
01171 void * headerGetStats(Header h, int opx)
01172         /*@*/;
01173 
01179 int headerMacrosLoad(Header h)
01180         /*@globals internalState @*/
01181         /*@modifies internalState @*/;
01182 
01188 int headerMacrosUnload(Header h)
01189         /*@globals internalState @*/
01190         /*@modifies internalState @*/;
01191 
01202 int headerNEVRA(Header h,
01203                 /*@null@*/ /*@out@*/ const char ** np,
01204                 /*@null@*/ /*@out@*/ /*@unused@*/ const char ** ep,
01205                 /*@null@*/ /*@out@*/ const char ** vp,
01206                 /*@null@*/ /*@out@*/ const char ** rp,
01207                 /*@null@*/ /*@out@*/ const char ** ap)
01208         /*@globals internalState @*/
01209         /*@modifies h, *np, *vp, *rp, *ap, internalState @*/;
01210 
01216 rpmuint32_t hGetColor(Header h)
01217         /*@globals internalState @*/
01218         /*@modifies h, internalState @*/;
01219 
01226 void headerMergeLegacySigs(Header h, const Header sigh)
01227         /*@globals fileSystem, internalState @*/
01228         /*@modifies h, sigh, fileSystem, internalState @*/;
01229 
01237 Header headerRegenSigHeader(const Header h, int noArchiveSize)
01238         /*@globals fileSystem, internalState @*/
01239         /*@modifies h, fileSystem, internalState @*/;
01240 
01241 #ifdef __cplusplus
01242 }
01243 #endif
01244 
01245 #endif  /* H_RPMTAG */