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 struct headerToken_s * Header;
00022
00026 enum rpmTagType_e {
00027
00028
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
00038
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
00063 #if !defined(SWIG)
00064 union rpmDataType_u {
00065
00066 void * ptr;
00067 rpmuint8_t * ui8p;
00068 rpmuint16_t * ui16p;
00069 rpmuint32_t * ui32p;
00070 rpmuint64_t * ui64p;
00071
00072 const char * str;
00073 unsigned char * blob;
00074 const char ** argv;
00075 HE_t he;
00076 };
00077 #endif
00078
00079
00080
00083
00084 typedef enum rpmSubTagType_e {
00085 RPM_REGION_TYPE = -10,
00086 RPM_BIN_ARRAY_TYPE = -11,
00087 RPM_XREF_TYPE = -12
00088 } rpmSubTagType;
00089
00090
00094
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
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
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 struct headerIterator_s * HeaderIterator;
00126
00129 typedef struct headerTagIndices_s * headerTagIndices;
00130
00133 typedef const struct headerSprintfExtension_s * headerSprintfExtension;
00134
00138 #define RPMDBI_PACKAGES 0
00139 #define RPMDBI_DEPENDS 1
00140 #define RPMDBI_LABEL 2
00141 #define RPMDBI_ADDED 3
00142 #define RPMDBI_REMOVED 4
00143 #define RPMDBI_AVAILABLE 5
00144 #define RPMDBI_HDLIST 6
00145 #define RPMDBI_ARGLIST 7
00146 #define RPMDBI_FTSWALK 8
00147
00152 enum rpmTag_e {
00153
00154 RPMTAG_HEADERIMAGE = HEADER_IMAGE,
00155 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES,
00156 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE,
00157
00158 RPMTAG_HEADERREGIONS = HEADER_REGIONS,
00160 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE,
00161
00162
00163
00164
00165
00166 RPMTAG_SIG_BASE = HEADER_SIGBASE,
00167 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1,
00168 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2,
00169 RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3,
00170 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4,
00171 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5,
00172 #define RPMTAG_PKGID RPMTAG_SIGMD5
00173 RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6,
00174 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7,
00175
00176 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8,
00177 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9,
00178 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10,
00179 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11,
00180 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12,
00181 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13,
00182 #define RPMTAG_HDRID RPMTAG_SHA1HEADER
00183
00184 RPMTAG_NAME = 1000,
00185 #define RPMTAG_N RPMTAG_NAME
00186 RPMTAG_VERSION = 1001,
00187 #define RPMTAG_V RPMTAG_VERSION
00188 RPMTAG_RELEASE = 1002,
00189 #define RPMTAG_R RPMTAG_RELEASE
00190 RPMTAG_EPOCH = 1003,
00191 #define RPMTAG_E RPMTAG_EPOCH
00192 RPMTAG_SUMMARY = 1004,
00193 RPMTAG_DESCRIPTION = 1005,
00194 RPMTAG_BUILDTIME = 1006,
00195 RPMTAG_BUILDHOST = 1007,
00196 RPMTAG_INSTALLTIME = 1008,
00197 RPMTAG_SIZE = 1009,
00198 RPMTAG_DISTRIBUTION = 1010,
00199 RPMTAG_VENDOR = 1011,
00200 RPMTAG_GIF = 1012,
00201 RPMTAG_XPM = 1013,
00202 RPMTAG_LICENSE = 1014,
00203 RPMTAG_PACKAGER = 1015,
00204 RPMTAG_GROUP = 1016,
00205
00206 RPMTAG_CHANGELOG = 1017,
00207
00208 RPMTAG_SOURCE = 1018,
00209 RPMTAG_PATCH = 1019,
00210 RPMTAG_URL = 1020,
00211 RPMTAG_OS = 1021,
00212 RPMTAG_ARCH = 1022,
00213 RPMTAG_PREIN = 1023,
00214 RPMTAG_POSTIN = 1024,
00215 RPMTAG_PREUN = 1025,
00216 RPMTAG_POSTUN = 1026,
00217 RPMTAG_OLDFILENAMES = 1027,
00218 RPMTAG_FILESIZES = 1028,
00219 RPMTAG_FILESTATES = 1029,
00220 RPMTAG_FILEMODES = 1030,
00221 RPMTAG_FILEUIDS = 1031,
00222 RPMTAG_FILEGIDS = 1032,
00223 RPMTAG_FILERDEVS = 1033,
00224 RPMTAG_FILEMTIMES = 1034,
00225 RPMTAG_FILEDIGESTS = 1035,
00226 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS
00227 RPMTAG_FILELINKTOS = 1036,
00228 RPMTAG_FILEFLAGS = 1037,
00229
00230 RPMTAG_ROOT = 1038,
00231
00232 RPMTAG_FILEUSERNAME = 1039,
00233 RPMTAG_FILEGROUPNAME = 1040,
00234
00235 RPMTAG_EXCLUDE = 1041,
00236 RPMTAG_EXCLUSIVE = 1042,
00237
00238 RPMTAG_ICON = 1043,
00239 RPMTAG_SOURCERPM = 1044,
00240 RPMTAG_FILEVERIFYFLAGS = 1045,
00241 RPMTAG_ARCHIVESIZE = 1046,
00242 RPMTAG_PROVIDENAME = 1047,
00243 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
00244 #define RPMTAG_P RPMTAG_PROVIDENAME
00245 RPMTAG_REQUIREFLAGS = 1048,
00246 RPMTAG_REQUIRENAME = 1049,
00247 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME
00248 RPMTAG_REQUIREVERSION = 1050,
00249 RPMTAG_NOSOURCE = 1051,
00250 RPMTAG_NOPATCH = 1052,
00251 RPMTAG_CONFLICTFLAGS = 1053,
00252 RPMTAG_CONFLICTNAME = 1054,
00253 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME
00254 #define RPMTAG_C RPMTAG_CONFLICTNAME
00255 RPMTAG_CONFLICTVERSION = 1055,
00256 RPMTAG_DEFAULTPREFIX = 1056,
00257 RPMTAG_BUILDROOT = 1057,
00258 RPMTAG_INSTALLPREFIX = 1058,
00259 RPMTAG_EXCLUDEARCH = 1059,
00260 RPMTAG_EXCLUDEOS = 1060,
00261 RPMTAG_EXCLUSIVEARCH = 1061,
00262 RPMTAG_EXCLUSIVEOS = 1062,
00263 RPMTAG_AUTOREQPROV = 1063,
00264 RPMTAG_RPMVERSION = 1064,
00265 RPMTAG_TRIGGERSCRIPTS = 1065,
00266 RPMTAG_TRIGGERNAME = 1066,
00267 RPMTAG_TRIGGERVERSION = 1067,
00268 RPMTAG_TRIGGERFLAGS = 1068,
00269 RPMTAG_TRIGGERINDEX = 1069,
00270 RPMTAG_VERIFYSCRIPT = 1079,
00271 RPMTAG_CHANGELOGTIME = 1080,
00272 RPMTAG_CHANGELOGNAME = 1081,
00273 RPMTAG_CHANGELOGTEXT = 1082,
00274
00275 RPMTAG_BROKENMD5 = 1083,
00276
00277 RPMTAG_PREREQ = 1084,
00278 RPMTAG_PREINPROG = 1085,
00279 RPMTAG_POSTINPROG = 1086,
00280 RPMTAG_PREUNPROG = 1087,
00281 RPMTAG_POSTUNPROG = 1088,
00282 RPMTAG_BUILDARCHS = 1089,
00283 RPMTAG_OBSOLETENAME = 1090,
00284 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
00285 #define RPMTAG_O RPMTAG_OBSOLETENAME
00286 RPMTAG_VERIFYSCRIPTPROG = 1091,
00287 RPMTAG_TRIGGERSCRIPTPROG = 1092,
00288 RPMTAG_DOCDIR = 1093,
00289 RPMTAG_COOKIE = 1094,
00290 RPMTAG_FILEDEVICES = 1095,
00291 RPMTAG_FILEINODES = 1096,
00292 RPMTAG_FILELANGS = 1097,
00293 RPMTAG_PREFIXES = 1098,
00294 RPMTAG_INSTPREFIXES = 1099,
00295 RPMTAG_TRIGGERIN = 1100,
00296 RPMTAG_TRIGGERUN = 1101,
00297 RPMTAG_TRIGGERPOSTUN = 1102,
00298 RPMTAG_AUTOREQ = 1103,
00299 RPMTAG_AUTOPROV = 1104,
00300
00301 RPMTAG_CAPABILITY = 1105,
00302
00303 RPMTAG_SOURCEPACKAGE = 1106,
00304
00305 RPMTAG_OLDORIGFILENAMES = 1107,
00306
00307 RPMTAG_BUILDPREREQ = 1108,
00308 RPMTAG_BUILDREQUIRES = 1109,
00309 RPMTAG_BUILDCONFLICTS = 1110,
00310
00311 RPMTAG_BUILDMACROS = 1111,
00312
00313 RPMTAG_PROVIDEFLAGS = 1112,
00314 RPMTAG_PROVIDEVERSION = 1113,
00315 RPMTAG_OBSOLETEFLAGS = 1114,
00316 RPMTAG_OBSOLETEVERSION = 1115,
00317 RPMTAG_DIRINDEXES = 1116,
00318 RPMTAG_BASENAMES = 1117,
00319 RPMTAG_DIRNAMES = 1118,
00320 RPMTAG_ORIGDIRINDEXES = 1119,
00321 RPMTAG_ORIGBASENAMES = 1120,
00322 RPMTAG_ORIGDIRNAMES = 1121,
00323 RPMTAG_OPTFLAGS = 1122,
00324 RPMTAG_DISTURL = 1123,
00325 RPMTAG_PAYLOADFORMAT = 1124,
00326 RPMTAG_PAYLOADCOMPRESSOR = 1125,
00327 RPMTAG_PAYLOADFLAGS = 1126,
00328 RPMTAG_INSTALLCOLOR = 1127,
00329 RPMTAG_INSTALLTID = 1128,
00330 RPMTAG_REMOVETID = 1129,
00331
00332 RPMTAG_SHA1RHN = 1130,
00333
00334 RPMTAG_RHNPLATFORM = 1131,
00335 RPMTAG_PLATFORM = 1132,
00336 RPMTAG_PATCHESNAME = 1133,
00337 RPMTAG_PATCHESFLAGS = 1134,
00338 RPMTAG_PATCHESVERSION = 1135,
00339 RPMTAG_CACHECTIME = 1136,
00340 RPMTAG_CACHEPKGPATH = 1137,
00341 RPMTAG_CACHEPKGSIZE = 1138,
00342 RPMTAG_CACHEPKGMTIME = 1139,
00343 RPMTAG_FILECOLORS = 1140,
00344 RPMTAG_FILECLASS = 1141,
00345 RPMTAG_CLASSDICT = 1142,
00346 RPMTAG_FILEDEPENDSX = 1143,
00347 RPMTAG_FILEDEPENDSN = 1144,
00348 RPMTAG_DEPENDSDICT = 1145,
00349 RPMTAG_SOURCEPKGID = 1146,
00350 RPMTAG_FILECONTEXTS = 1147,
00351 RPMTAG_FSCONTEXTS = 1148,
00352 RPMTAG_RECONTEXTS = 1149,
00353 RPMTAG_POLICIES = 1150,
00354 RPMTAG_PRETRANS = 1151,
00355 RPMTAG_POSTTRANS = 1152,
00356 RPMTAG_PRETRANSPROG = 1153,
00357 RPMTAG_POSTTRANSPROG = 1154,
00358 RPMTAG_DISTTAG = 1155,
00359 RPMTAG_SUGGESTSNAME = 1156,
00360 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME
00361 RPMTAG_SUGGESTSVERSION = 1157,
00362 RPMTAG_SUGGESTSFLAGS = 1158,
00363 RPMTAG_ENHANCESNAME = 1159,
00364 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME
00365 RPMTAG_ENHANCESVERSION = 1160,
00366 RPMTAG_ENHANCESFLAGS = 1161,
00367 RPMTAG_PRIORITY = 1162,
00368 RPMTAG_CVSID = 1163,
00369 #define RPMTAG_SVNID RPMTAG_CVSID
00370 RPMTAG_BLINKPKGID = 1164,
00371 RPMTAG_BLINKHDRID = 1165,
00372 RPMTAG_BLINKNEVRA = 1166,
00373 RPMTAG_FLINKPKGID = 1167,
00374 RPMTAG_FLINKHDRID = 1168,
00375 RPMTAG_FLINKNEVRA = 1169,
00376 RPMTAG_PACKAGEORIGIN = 1170,
00377 RPMTAG_TRIGGERPREIN = 1171,
00378 RPMTAG_BUILDSUGGESTS = 1172,
00379 RPMTAG_BUILDENHANCES = 1173,
00380 RPMTAG_SCRIPTSTATES = 1174,
00381 RPMTAG_SCRIPTMETRICS = 1175,
00382 RPMTAG_BUILDCPUCLOCK = 1176,
00383 RPMTAG_FILEDIGESTALGOS = 1177,
00384 RPMTAG_VARIANTS = 1178,
00385 RPMTAG_XMAJOR = 1179,
00386 RPMTAG_XMINOR = 1180,
00387 RPMTAG_REPOTAG = 1181,
00388 RPMTAG_KEYWORDS = 1182,
00389 RPMTAG_BUILDPLATFORMS = 1183,
00390 RPMTAG_PACKAGECOLOR = 1184,
00391 RPMTAG_PACKAGEPREFCOLOR = 1185,
00392 RPMTAG_XATTRSDICT = 1186,
00393 RPMTAG_FILEXATTRSX = 1187,
00394 RPMTAG_DEPATTRSDICT = 1188,
00395 RPMTAG_CONFLICTATTRSX = 1189,
00396 RPMTAG_OBSOLETEATTRSX = 1190,
00397 RPMTAG_PROVIDEATTRSX = 1191,
00398 RPMTAG_REQUIREATTRSX = 1192,
00399 RPMTAG_BUILDPROVIDES = 1193,
00400 RPMTAG_BUILDOBSOLETES = 1194,
00401 RPMTAG_DBINSTANCE = 1195,
00402 RPMTAG_NVRA = 1196,
00403 RPMTAG_FILEPATHS = 1197,
00404 RPMTAG_ORIGPATHS = 1198,
00405 RPMTAG_RPMLIBVERSION = 1199,
00406 RPMTAG_RPMLIBTIMESTAMP = 1200,
00407 RPMTAG_RPMLIBVENDOR = 1201,
00408 RPMTAG_CLASS = 1202,
00409 RPMTAG_TRACK = 1203,
00410 RPMTAG_TRACKPROG = 1204,
00411 RPMTAG_SANITYCHECK = 1205,
00412 RPMTAG_SANITYCHECKPROG = 1206,
00413 RPMTAG_FILESTAT = 1207,
00414 RPMTAG_STAT = 1208,
00415 RPMTAG_ORIGINTID = 1209,
00416 RPMTAG_ORIGINTIME = 1210,
00417 RPMTAG_HEADERSTARTOFF = 1211,
00418 RPMTAG_HEADERENDOFF = 1212,
00419 RPMTAG_PACKAGETIME = 1213,
00420 RPMTAG_PACKAGESIZE = 1214,
00421 RPMTAG_PACKAGEDIGEST = 1215,
00422 RPMTAG_PACKAGESTAT = 1216,
00423 RPMTAG_PACKAGEBASEURL = 1217,
00424 RPMTAG_DISTEPOCH = 1218,
00425 #define RPMTAG_D RPMTAG_DISTEPOCH
00426
00427 RPMTAG_FILEDIGESTALGO = 5011,
00428
00429
00430 RPMTAG_FIRSTFREE_TAG,
00431
00432
00433 RPMTAG_PACKAGETRANSFLAGS = 0x4efaafd9,
00434 RPMTAG_PACKAGEDEPFLAGS = 0x748a8314,
00435
00436 RPMTAG_BUILDPREPPROG = 0x4ba37c9e,
00437 RPMTAG_BUILDPREP = 0x799c0b4d,
00438 RPMTAG_BUILDBUILDPROG = 0x6fb46014,
00439 RPMTAG_BUILDBUILD = 0x5bae1a5a,
00440 RPMTAG_BUILDINSTALLPROG = 0x70d4ab6f,
00441 RPMTAG_BUILDINSTALL = 0x567f5983,
00442 RPMTAG_BUILDCHECKPROG = 0x488a60ce,
00443 RPMTAG_BUILDCHECK = 0x7f3b97b5,
00444 RPMTAG_BUILDCLEANPROG = 0x42c93d41,
00445 RPMTAG_BUILDCLEAN = 0x566042bf,
00446
00447 RPMTAG_LASTARBITRARY_TAG = 0x80000000
00448 };
00449
00450 #define RPMTAG_EXTERNAL_TAG 1000000
00451
00455 enum rpmSigTag_e {
00456 RPMSIGTAG_SIZE = 1000,
00457 RPMSIGTAG_LEMD5_1 = 1001,
00458 RPMSIGTAG_PGP = 1002,
00459 RPMSIGTAG_LEMD5_2 = 1003,
00460 RPMSIGTAG_MD5 = 1004,
00461 RPMSIGTAG_GPG = 1005,
00462 RPMSIGTAG_PGP5 = 1006,
00463 RPMSIGTAG_PAYLOADSIZE = 1007,
00464 RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1,
00465 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2,
00466 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER,
00467 RPMSIGTAG_DSA = RPMTAG_DSAHEADER,
00468 RPMSIGTAG_RSA = RPMTAG_RSAHEADER,
00469 RPMSIGTAG_PADDING = 0x3fffffff
00470 };
00471
00474 typedef enum rpmTag_e rpmTag;
00475
00478 typedef enum rpmSigTag_e rpmSigTag;
00479
00482
00483 #if !defined(SWIG)
00484 struct _HE_s {
00485 rpmTag tag;
00486 rpmTagType t;
00487
00488 rpmTagData p;
00489 rpmTagCount c;
00490 int ix;
00491 unsigned int freeData : 1;
00492 unsigned int avail : 1;
00493 unsigned int append : 1;
00494 };
00495 #endif
00496
00499 typedef struct _HE_s HE_s;
00500
00503 typedef struct tagStore_s * tagStore_t;
00504
00507 typedef const struct headerTagTableEntry_s * headerTagTableEntry;
00508
00509 #if defined(_RPMTAG_INTERNAL)
00510
00515 #if !defined(SWIG)
00516 struct headerTagTableEntry_s {
00517
00518 const char * name;
00519 rpmTag val;
00520 rpmTagType type;
00521 };
00522 #endif
00523
00526 struct tagStore_s {
00527
00528 const char * str;
00529 rpmTag tag;
00530 rpmiob iob;
00531 };
00532 #endif
00533
00537
00538
00539 extern headerTagTableEntry rpmTagTable;
00540
00541
00545
00546
00547 extern int rpmTagTableSize;
00548
00549
00550 extern headerTagIndices rpmTags;
00551
00552
00553 #if defined(_RPMTAG_INTERNAL)
00554
00556 #if !defined(SWIG)
00557 struct headerTagIndices_s {
00558
00559 int (*loadIndex) (headerTagTableEntry ** ipp, size_t * np,
00560 int (*cmp) (const void * avp, const void * bvp))
00561 ;
00562
00563 headerTagTableEntry * byName;
00564 size_t byNameSize;
00565 int (*byNameCmp) (const void * avp, const void * bvp)
00566 ;
00567 rpmTag (*tagValue) (const char * name)
00568 ;
00569
00570 headerTagTableEntry * byValue;
00571 size_t byValueSize;
00572 int (*byValueCmp) (const void * avp, const void * bvp)
00573 ;
00574 const char * (*tagName) (rpmTag value)
00575 ;
00576 rpmTag (*tagType) (rpmTag value)
00577 ;
00578 size_t nameBufLen;
00579
00580 const char ** aTags;
00581
00582 char * nameBuf;
00583
00584 char * (*tagCanonicalize) (const char * s)
00585 ;
00586 rpmTag (*tagGenerate) (const char * s)
00587 ;
00588 };
00589 #endif
00590 #endif
00591
00597
00598 const char * tagName(rpmTag tag)
00599 ;
00600
00607 unsigned int tagType(rpmTag tag)
00608 ;
00609
00615 rpmTag tagValue(const char * tagstr)
00616 ;
00617
00623
00624 char * tagCanonicalize(const char * s)
00625 ;
00626
00632 rpmTag tagGenerate(const char * s)
00633 ;
00634
00639 void tagClean( headerTagIndices _rpmTags)
00640
00641 ;
00642
00649
00650 tagStore_t tagStoreFree(tagStore_t dbiTags, size_t dbiNTags)
00651 ;
00652
00653 #if defined(_RPMTAG_INTERNAL)
00654
00656 typedef enum headerSprintfExtensionType_e {
00657 HEADER_EXT_LAST = 0,
00658 HEADER_EXT_FORMAT,
00659 HEADER_EXT_MORE,
00660 HEADER_EXT_TAG
00661 } headerSprintfExtensionType;
00662
00670 typedef char * (*headerTagFormatFunction) (HE_t he, const char ** av)
00671 ;
00672
00681 typedef int (*headerTagTagFunction) (Header h, HE_t he)
00682 ;
00683
00687 #if !defined(SWIG)
00688 struct headerSprintfExtension_s {
00689 headerSprintfExtensionType type;
00690
00691 const char * name;
00692 union {
00693
00694 void * generic;
00695 headerTagFormatFunction fmtFunction;
00696 headerTagTagFunction tagFunction;
00697 headerSprintfExtension * more;
00698 } u;
00699 };
00700 #endif
00701 #endif
00702
00706
00707 extern headerSprintfExtension headerDefaultFormats;
00708
00712
00713 extern headerSprintfExtension headerCompoundFormats;
00714
00721 void rpmDisplayQueryTags( FILE * fp,
00722 headerTagTableEntry _rpmTagTable,
00723 headerSprintfExtension _rpmHeaderFormats)
00724
00725 ;
00726
00738
00739 char * headerSprintf(Header h, const char * fmt,
00740 headerTagTableEntry tags,
00741 headerSprintfExtension exts,
00742 errmsg_t * errmsg)
00743
00744 ;
00745
00754 int headerGet(Header h, HE_t he, unsigned int flags)
00755
00756 ;
00757 #define HEADERGET_NOEXTENSION (1 << 0)
00758 #define HEADERGET_NOI18NSTRING (1 << 1)
00768
00769 int headerPut(Header h, HE_t he, unsigned int flags)
00770 ;
00771
00780
00781 int headerDel(Header h, HE_t he, unsigned int flags)
00782 ;
00783
00792 int headerMod(Header h, HE_t he, unsigned int flags)
00793 ;
00794
00800
00801 HeaderIterator headerFini( HeaderIterator hi)
00802
00803 ;
00804
00810 HeaderIterator headerInit(Header h)
00811
00812 ;
00813
00821 int headerNext(HeaderIterator hi, HE_t he, unsigned int flags)
00822
00823 ;
00824
00830 Header headerLink(Header h)
00831 ;
00832 #define headerLink(_h) \
00833 ((Header)rpmioLinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00834
00840
00841 Header headerUnlink( Header h)
00842 ;
00843 #define headerUnlink(_h) \
00844 ((Header)rpmioUnlinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00845
00851
00852 Header headerFree( Header h)
00853 ;
00854 #define headerFree(_h) \
00855 ((Header)rpmioFreePoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
00856
00861 Header headerNew(void)
00862
00863 ;
00864
00870 size_t headerSizeof( Header h)
00871 ;
00872
00879
00880 void * headerUnload(Header h, size_t * lenp)
00881
00882 ;
00883
00892
00893 Header headerReload( Header h, int tag)
00894
00895 ;
00896
00902
00903 Header headerCopy(Header h)
00904
00905 ;
00906
00912
00913 Header headerLoad( void * uh)
00914
00915 ;
00916
00922
00923 Header headerCopyLoad(const void * uh)
00924
00925 ;
00926
00933 int headerIsEntry( Header h, rpmTag tag)
00934 ;
00935
00956 int headerAddI18NString(Header h, rpmTag tag, const char * string,
00957 const char * lang)
00958 ;
00959
00966 void headerCopyTags(Header headerFrom, Header headerTo, rpmTag * tagstocopy)
00967
00968 ;
00969
00977 int headerGetMagic( Header h, unsigned char **magicp, size_t *nmagicp)
00978 ;
00979
00987 int headerSetMagic( Header h, unsigned char * magic, size_t nmagic)
00988 ;
00989
00995
00996 const char * headerGetOrigin( Header h)
00997 ;
00998
01005 int headerSetOrigin( Header h, const char * origin)
01006 ;
01007
01013
01014 const char * headerGetBaseURL( Header h)
01015 ;
01016
01023 int headerSetBaseURL( Header h, const char * baseurl)
01024 ;
01025
01031 struct stat * headerGetStatbuf( Header h)
01032 ;
01033
01040 int headerSetStatbuf( Header h, struct stat * st)
01041 ;
01042
01048
01049 const char * headerGetDigest( Header h)
01050 ;
01051
01058 int headerSetDigest( Header h, const char * digest)
01059 ;
01060
01066
01067 void * headerGetRpmdb( Header h)
01068 ;
01069
01076
01077 void * headerSetRpmdb( Header h, void * rpmdb)
01078 ;
01079
01085 rpmuint32_t headerGetInstance( Header h)
01086 ;
01087
01094 rpmuint32_t headerSetInstance( Header h, rpmuint32_t instance)
01095 ;
01096
01102 rpmuint32_t headerGetStartOff( Header h)
01103 ;
01104
01111 rpmuint32_t headerSetStartOff( Header h, rpmuint32_t startoff)
01112 ;
01113
01119 rpmuint32_t headerGetEndOff( Header h)
01120 ;
01121
01128 rpmuint32_t headerSetEndOff( Header h, rpmuint32_t endoff)
01129 ;
01130
01137
01138 void * headerGetStats(Header h, int opx)
01139 ;
01140
01146 int headerMacrosLoad(Header h)
01147
01148 ;
01149
01155 int headerMacrosUnload(Header h)
01156
01157 ;
01158
01169 int headerNEVRA(Header h,
01170 const char ** np,
01171 const char ** ep,
01172 const char ** vp,
01173 const char ** rp,
01174 const char ** ap)
01175
01176 ;
01177
01183 rpmuint32_t hGetColor(Header h)
01184
01185 ;
01186
01193 void headerMergeLegacySigs(Header h, const Header sigh)
01194
01195 ;
01196
01204 Header headerRegenSigHeader(const Header h, int noArchiveSize)
01205
01206 ;
01207
01208 #ifdef __cplusplus
01209 }
01210 #endif
01211
01212 #endif