HEADER.


Files

file  formats.c
file  package.c
file  rpmlib.h
 In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not.
file  hdrinline.h
file  header.c
file  header.h
 An rpm header carries all information about a package.
file  header_internal.c
file  header_internal.h

Data Structures

struct  headerToken_s
 The Header data structure. More...

Typedefs

typedef enum rpmTag_e rpmTag
typedef const char * errmsg_t
typedef int_32hTAG_t
typedef headerToken_sHeader
typedef headerIterator_sHeaderIterator
typedef headerTagTableEntry_sheaderTagTableEntry
 Associate tag names with numeric values.
typedef char *(*) headerTagFormatFunction (int_32 type, const void *data, char *formatPrefix, int padding, int element)
 HEADER_EXT_TAG format function prototype.
typedef int(*) headerTagTagFunction (Header h, hTYP_t type, hPTR_t *data, hCNT_t count, int *freeData)
 HEADER_EXT_FORMAT format function prototype.
typedef headerSprintfExtension_sheaderSprintfExtension
 Define header tag output formats.
typedef enum rpmTagType_e rpmTagType
 The basic types of data in tags from headers.
typedef enum rpmSubTagType_e rpmSubTagType
 New rpm data types under consideration/development.
typedef enum rpmTagReturnType_e rpmTagReturnType
 Identify how to return the header data type.
typedef Header(*) HDRnew (void)
 Create new (empty) header instance.
typedef Header(*) HDRfree (Header h)
 Dereference a header instance.
typedef Header(*) HDRlink (Header h)
 Reference a header instance.
typedef Header(*) HDRunlink (Header h)
 Dereference a header instance.
typedef void(*) HDRsort (Header h)
 Sort tags in header.
typedef void(*) HDRunsort (Header h)
 Restore tags in header to original ordering.
typedef unsigned int(*) HDRsizeof (Header h, enum hMagic magicp)
 Return size of on-disk header representation in bytes.
typedef void *(*) HDRunload (Header h)
 Convert header to on-disk representation.
typedef Header(*) HDRreload (Header h, int tag)
 Convert header to on-disk representation, and then reload.
typedef Header(*) HDRcopy (Header h)
 Duplicate a header.
typedef Header(*) HDRload (void *uh)
 Convert header to in-memory representation.
typedef Header(*) HDRcopyload (const void *uh)
 Make a copy and convert header to in-memory representation.
typedef Header(*) HDRread (FD_t fd, enum hMagic magicp)
 Read (and load) header from file handle.
typedef int(*) HDRwrite (FD_t fd, Header h, enum hMagic magicp)
 Write (with unload) header to file handle.
typedef int(*) HDRisentry (Header h, int_32 tag)
 Check if tag is in header.
typedef void *(*) HDRfreetag (Header h, const void *data, rpmTagType type)
 Free data allocated when retrieved from header.
typedef int(*) HDRget (Header h, int_32 tag, hTYP_t type, void **p, hCNT_t c)
 Retrieve tag value.
typedef int(*) HDRgetmin (Header h, int_32 tag, hTYP_t type, hPTR_t *p, hCNT_t c)
 Retrieve tag value using header internal array.
typedef int(*) HDRadd (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Add tag to header.
typedef int(*) HDRappend (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Append element to tag array in header.
typedef int(*) HDRaddorappend (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Add or append element to tag array in header.
typedef int(*) HDRaddi18n (Header h, int_32 tag, const char *string, const char *lang)
 Add locale specific tag to header.
typedef int(*) HDRmodify (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Modify tag in header.
typedef int(*) HDRremove (Header h, int_32 tag)
 Delete tag in header.
typedef char *(*) HDRsprintf (Header h, const char *fmt, const struct headerTagTableEntry_s *tags, const struct headerSprintfExtension_s *extensions, errmsg_t *errmsg)
 Return formatted output string from header tags.
typedef void(*) HDRcopytags (Header headerFrom, Header headerTo, hTAG_t tagstocopy)
 Duplicate tag values from one header into another.
typedef HeaderIterator(*) HDRfreeiter (HeaderIterator hi)
 Destroy header tag iterator.
typedef HeaderIterator(*) HDRinititer (Header h)
 Create header tag iterator.
typedef int(*) HDRnextiter (HeaderIterator hi, hTAG_t tag, hTYP_t type, hPTR_t *p, hCNT_t c)
 Return next tag from header.
typedef const char *(*) HDRgetorigin (Header h)
 Return header origin (e.g path or URL).
typedef int(*) HDRsetorigin (Header h, const char *origin)
 Store header origin (e.g path or URL).
typedef int(*) HDRgetinstance (Header h)
 Return header instance (if from rpmdb).
typedef int(*) HDRsetinstance (Header h, int instance)
 Store header instance (e.g path or URL).
typedef HV_sHV_t
 Header method vectors.
typedef entryInfo_sentryInfo
 Description of tag data.
typedef indexEntry_sindexEntry
 A single tag from a Header.
typedef sprintfTag_ssprintfTag
typedef rpmec_srpmec
 Extension cache.
typedef sprintfToken_ssprintfToken

Enumerations

enum  rpmTag_e {
  RPMTAG_HEADERIMAGE = HEADER_IMAGE, RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES, RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE, RPMTAG_HEADERREGIONS = HEADER_REGIONS,
  RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE, RPMTAG_SIG_BASE = HEADER_SIGBASE, RPMTAG_SIGSIZE = RPMTAG_SIG_BASE+1, RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE+2,
  RPMTAG_SIGPGP = RPMTAG_SIG_BASE+3, RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE+4, RPMTAG_SIGMD5 = RPMTAG_SIG_BASE+5, RPMTAG_SIGGPG = RPMTAG_SIG_BASE+6,
  RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE+7, RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE+8, RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE+9, RPMTAG_PUBKEYS = RPMTAG_SIG_BASE+10,
  RPMTAG_DSAHEADER = RPMTAG_SIG_BASE+11, RPMTAG_RSAHEADER = RPMTAG_SIG_BASE+12, RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE+13, RPMTAG_NAME = 1000,
  RPMTAG_VERSION = 1001, RPMTAG_RELEASE = 1002, RPMTAG_EPOCH = 1003, RPMTAG_SUMMARY = 1004,
  RPMTAG_DESCRIPTION = 1005, RPMTAG_BUILDTIME = 1006, RPMTAG_BUILDHOST = 1007, RPMTAG_INSTALLTIME = 1008,
  RPMTAG_SIZE = 1009, RPMTAG_DISTRIBUTION = 1010, RPMTAG_VENDOR = 1011, RPMTAG_GIF = 1012,
  RPMTAG_XPM = 1013, RPMTAG_LICENSE = 1014, RPMTAG_PACKAGER = 1015, RPMTAG_GROUP = 1016,
  RPMTAG_CHANGELOG = 1017, RPMTAG_SOURCE = 1018, RPMTAG_PATCH = 1019, RPMTAG_URL = 1020,
  RPMTAG_OS = 1021, RPMTAG_ARCH = 1022, RPMTAG_PREIN = 1023, RPMTAG_POSTIN = 1024,
  RPMTAG_PREUN = 1025, RPMTAG_POSTUN = 1026, RPMTAG_OLDFILENAMES = 1027, RPMTAG_FILESIZES = 1028,
  RPMTAG_FILESTATES = 1029, RPMTAG_FILEMODES = 1030, RPMTAG_FILEUIDS = 1031, RPMTAG_FILEGIDS = 1032,
  RPMTAG_FILERDEVS = 1033, RPMTAG_FILEMTIMES = 1034, RPMTAG_FILEDIGESTS = 1035, RPMTAG_FILELINKTOS = 1036,
  RPMTAG_FILEFLAGS = 1037, RPMTAG_ROOT = 1038, RPMTAG_FILEUSERNAME = 1039, RPMTAG_FILEGROUPNAME = 1040,
  RPMTAG_EXCLUDE = 1041, RPMTAG_EXCLUSIVE = 1042, RPMTAG_ICON = 1043, RPMTAG_SOURCERPM = 1044,
  RPMTAG_FILEVERIFYFLAGS = 1045, RPMTAG_ARCHIVESIZE = 1046, RPMTAG_PROVIDENAME = 1047, RPMTAG_REQUIREFLAGS = 1048,
  RPMTAG_REQUIRENAME = 1049, RPMTAG_REQUIREVERSION = 1050, RPMTAG_NOSOURCE = 1051, RPMTAG_NOPATCH = 1052,
  RPMTAG_CONFLICTFLAGS = 1053, RPMTAG_CONFLICTNAME = 1054, RPMTAG_CONFLICTVERSION = 1055, RPMTAG_DEFAULTPREFIX = 1056,
  RPMTAG_BUILDROOT = 1057, RPMTAG_INSTALLPREFIX = 1058, RPMTAG_EXCLUDEARCH = 1059, RPMTAG_EXCLUDEOS = 1060,
  RPMTAG_EXCLUSIVEARCH = 1061, RPMTAG_EXCLUSIVEOS = 1062, RPMTAG_AUTOREQPROV = 1063, RPMTAG_RPMVERSION = 1064,
  RPMTAG_TRIGGERSCRIPTS = 1065, RPMTAG_TRIGGERNAME = 1066, RPMTAG_TRIGGERVERSION = 1067, RPMTAG_TRIGGERFLAGS = 1068,
  RPMTAG_TRIGGERINDEX = 1069, RPMTAG_VERIFYSCRIPT = 1079, RPMTAG_CHANGELOGTIME = 1080, RPMTAG_CHANGELOGNAME = 1081,
  RPMTAG_CHANGELOGTEXT = 1082, RPMTAG_BROKENMD5 = 1083, RPMTAG_PREREQ = 1084, RPMTAG_PREINPROG = 1085,
  RPMTAG_POSTINPROG = 1086, RPMTAG_PREUNPROG = 1087, RPMTAG_POSTUNPROG = 1088, RPMTAG_BUILDARCHS = 1089,
  RPMTAG_OBSOLETENAME = 1090, RPMTAG_VERIFYSCRIPTPROG = 1091, RPMTAG_TRIGGERSCRIPTPROG = 1092, RPMTAG_DOCDIR = 1093,
  RPMTAG_COOKIE = 1094, RPMTAG_FILEDEVICES = 1095, RPMTAG_FILEINODES = 1096, RPMTAG_FILELANGS = 1097,
  RPMTAG_PREFIXES = 1098, RPMTAG_INSTPREFIXES = 1099, RPMTAG_TRIGGERIN = 1100, RPMTAG_TRIGGERUN = 1101,
  RPMTAG_TRIGGERPOSTUN = 1102, RPMTAG_AUTOREQ = 1103, RPMTAG_AUTOPROV = 1104, RPMTAG_CAPABILITY = 1105,
  RPMTAG_SOURCEPACKAGE = 1106, RPMTAG_OLDORIGFILENAMES = 1107, RPMTAG_BUILDPREREQ = 1108, RPMTAG_BUILDREQUIRES = 1109,
  RPMTAG_BUILDCONFLICTS = 1110, RPMTAG_BUILDMACROS = 1111, RPMTAG_PROVIDEFLAGS = 1112, RPMTAG_PROVIDEVERSION = 1113,
  RPMTAG_OBSOLETEFLAGS = 1114, RPMTAG_OBSOLETEVERSION = 1115, RPMTAG_DIRINDEXES = 1116, RPMTAG_BASENAMES = 1117,
  RPMTAG_DIRNAMES = 1118, RPMTAG_ORIGDIRINDEXES = 1119, RPMTAG_ORIGBASENAMES = 1120, RPMTAG_ORIGDIRNAMES = 1121,
  RPMTAG_OPTFLAGS = 1122, RPMTAG_DISTURL = 1123, RPMTAG_PAYLOADFORMAT = 1124, RPMTAG_PAYLOADCOMPRESSOR = 1125,
  RPMTAG_PAYLOADFLAGS = 1126, RPMTAG_INSTALLCOLOR = 1127, RPMTAG_INSTALLTID = 1128, RPMTAG_REMOVETID = 1129,
  RPMTAG_SHA1RHN = 1130, RPMTAG_RHNPLATFORM = 1131, RPMTAG_PLATFORM = 1132, RPMTAG_PATCHESNAME = 1133,
  RPMTAG_PATCHESFLAGS = 1134, RPMTAG_PATCHESVERSION = 1135, RPMTAG_CACHECTIME = 1136, RPMTAG_CACHEPKGPATH = 1137,
  RPMTAG_CACHEPKGSIZE = 1138, RPMTAG_CACHEPKGMTIME = 1139, RPMTAG_FILECOLORS = 1140, RPMTAG_FILECLASS = 1141,
  RPMTAG_CLASSDICT = 1142, RPMTAG_FILEDEPENDSX = 1143, RPMTAG_FILEDEPENDSN = 1144, RPMTAG_DEPENDSDICT = 1145,
  RPMTAG_SOURCEPKGID = 1146, RPMTAG_FILECONTEXTS = 1147, RPMTAG_FSCONTEXTS = 1148, RPMTAG_RECONTEXTS = 1149,
  RPMTAG_POLICIES = 1150, RPMTAG_PRETRANS = 1151, RPMTAG_POSTTRANS = 1152, RPMTAG_PRETRANSPROG = 1153,
  RPMTAG_POSTTRANSPROG = 1154, RPMTAG_DISTTAG = 1155, RPMTAG_SUGGESTSNAME = 1156, RPMTAG_SUGGESTSVERSION = 1157,
  RPMTAG_SUGGESTSFLAGS = 1158, RPMTAG_ENHANCESNAME = 1159, RPMTAG_ENHANCESVERSION = 1160, RPMTAG_ENHANCESFLAGS = 1161,
  RPMTAG_PRIORITY = 1162, RPMTAG_CVSID = 1163, RPMTAG_BLINKPKGID = 1164, RPMTAG_BLINKHDRID = 1165,
  RPMTAG_BLINKNEVRA = 1166, RPMTAG_FLINKPKGID = 1167, RPMTAG_FLINKHDRID = 1168, RPMTAG_FLINKNEVRA = 1169,
  RPMTAG_PACKAGEORIGIN = 1170, RPMTAG_TRIGGERPREIN = 1171, RPMTAG_BUILDSUGGESTS = 1172, RPMTAG_BUILDENHANCES = 1173,
  RPMTAG_SCRIPTSTATES = 1174, RPMTAG_SCRIPTMETRICS = 1175, RPMTAG_BUILDCPUCLOCK = 1176, RPMTAG_FILEDIGESTALGOS = 1177,
  RPMTAG_VARIANTS = 1178, RPMTAG_XMAJOR = 1179, RPMTAG_XMINOR = 1180, RPMTAG_REPOTAG = 1181,
  RPMTAG_KEYWORDS = 1182, RPMTAG_BUILDPLATFORMS = 1183, RPMTAG_PACKAGECOLOR = 1184, RPMTAG_PACKAGEPREFCOLOR = 1185,
  RPMTAG_XATTRSDICT = 1186, RPMTAG_FILEXATTRSX = 1187, RPMTAG_DEPATTRSDICT = 1188, RPMTAG_CONFLICTATTRSX = 1189,
  RPMTAG_OBSOLETEATTRSX = 1190, RPMTAG_PROVIDEATTRSX = 1191, RPMTAG_REQUIREATTRSX = 1192, RPMTAG_BUILDPROVIDES = 1193,
  RPMTAG_BUILDOBSOLETES = 1194, RPMTAG_FIRSTFREE_TAG
}
enum  headerSprintfExtensionType { HEADER_EXT_LAST = 0, HEADER_EXT_FORMAT, HEADER_EXT_MORE, HEADER_EXT_TAG }
enum  hMagic { HEADER_MAGIC_NO = 0, HEADER_MAGIC_YES = 1 }
 Include calculation for 8 bytes of (magic, 0)? More...
enum  rpmTagType_e {
  RPM_NULL_TYPE = 0, RPM_CHAR_TYPE = 1, RPM_INT8_TYPE = 2, RPM_INT16_TYPE = 3,
  RPM_INT32_TYPE = 4, RPM_INT64_TYPE = 5, RPM_STRING_TYPE = 6, RPM_BIN_TYPE = 7,
  RPM_STRING_ARRAY_TYPE = 8, RPM_I18NSTRING_TYPE = 9, RPM_ASN1_TYPE = 10, RPM_OPENPGP_TYPE = 11,
  RPM_MASK_TYPE = 0x0000ffff
}
 The basic types of data in tags from headers. More...
enum  rpmSubTagType_e { RPM_REGION_TYPE = -10, RPM_BIN_ARRAY_TYPE = -11, RPM_XREF_TYPE = -12 }
 New rpm data types under consideration/development. More...
enum  rpmTagReturnType_e {
  RPM_ANY_RETURN_TYPE = 0, RPM_SCALAR_RETURN_TYPE = 0x00010000, RPM_ARRAY_RETURN_TYPE = 0x00020000, RPM_MAPPING_RETURN_TYPE = 0x00040000,
  RPM_MASK_RETURN_TYPE = 0xffff0000
}
 Identify how to return the header data type. More...

Functions

void headerMergeLegacySigs (Header h, const Header sigh)
 Translate and merge legacy signature tags into header.
Header headerRegenSigHeader (const Header h, int noArchiveSize)
 Regenerate signature header.
static HV_t h2hv (Header h)
static Header headerNew (void)
 Create new (empty) header instance.
static Header headerFree (Header h)
 Dereference a header instance.
static Header headerLink (Header h)
 Reference a header instance.
static Header headerUnlink (Header h)
 Dereference a header instance.
static void headerSort (Header h)
 Sort tags in header.
static void headerUnsort (Header h)
 Restore tags in header to original ordering.
static unsigned int headerSizeof (Header h, enum hMagic magicp)
 Return size of on-disk header representation in bytes.
static void * headerUnload (Header h)
 Convert header to on-disk representation.
static Header headerReload (Header h, int tag)
 Convert header to on-disk representation, and then reload.
static Header headerCopy (Header h)
 Duplicate a header.
static Header headerLoad (void *uh)
 Convert header to in-memory representation.
static Header headerCopyLoad (const void *uh)
 Make a copy and convert header to in-memory representation.
static Header headerRead (FD_t fd, enum hMagic magicp)
 Read (and load) header from file handle.
static int headerWrite (FD_t fd, Header h, enum hMagic magicp)
 Write (with unload) header to file handle.
static int headerIsEntry (Header h, int_32 tag)
 Check if tag is in header.
static void * headerFreeTag (Header h, const void *data, rpmTagType type)
 Free data allocated when retrieved from header.
static int headerGetEntry (Header h, int_32 tag, hTYP_t type, void **p, hCNT_t c)
 Retrieve tag value.
static int headerGetEntryMinMemory (Header h, int_32 tag, hTYP_t type, hPTR_t *p, hCNT_t c)
 Retrieve tag value using header internal array.
static int headerAddEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Add tag to header.
static int headerAppendEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Append element to tag array in header.
static int headerAddOrAppendEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Add or append element to tag array in header.
static int headerAddI18NString (Header h, int_32 tag, const char *string, const char *lang)
 Add locale specific tag to header.
static int headerModifyEntry (Header h, int_32 tag, int_32 type, const void *p, int_32 c)
 Modify tag in header.
static int headerRemoveEntry (Header h, int_32 tag)
 Delete tag in header.
static char * headerSprintf (Header h, const char *fmt, const struct headerTagTableEntry_s *tbltags, const struct headerSprintfExtension_s *extensions, errmsg_t *errmsg)
 Return formatted output string from header tags.
static void headerCopyTags (Header headerFrom, Header headerTo, hTAG_t tagstocopy)
 Duplicate tag values from one header into another.
static HeaderIterator headerFreeIterator (HeaderIterator hi)
 Destroy header tag iterator.
static HeaderIterator headerInitIterator (Header h)
 Create header tag iterator.
static int headerNextIterator (HeaderIterator hi, hTAG_t tag, hTYP_t type, hPTR_t *p, hCNT_t c)
 Return next tag from header.
static const char * headerGetOrigin (Header h)
 Return header origin (e.g path or URL).
static int headerSetOrigin (Header h, const char *origin)
 Store header origin (e.g path or URL).
static int headerGetInstance (Header h)
 Return header instance (if from rpmdb).
static int headerSetInstance (Header h, int instance)
 Store header instance (e.g path or URL).
static int regionSwab (indexEntry entry, int il, int dl, entryInfo pe, unsigned char *dataStart, const unsigned char *dataEnd, int regionid)
 Swap int_32 and int_16 arrays within header region.
static void * doHeaderUnload (Header h, int *lengthPtr)
 
Parameters:
h header

static int copyEntry (const indexEntry entry, hTYP_t type, hPTR_t *p, hCNT_t c, int minMem)
 Retrieve data from header entry.
static void * headerFreeData (const void *data, rpmTagType type)
 Free data allocated when retrieved from header.
int headerNVR (Header h, const char **np, const char **vp, const char **rp)
 Return name, version, release strings from header.
int headerNEVRA (Header h, const char **np, const char **ep, const char **vp, const char **rp, const char **ap)
 Return name, epoch, version, release, arch strings from header.
char ** headerGetLangs (Header h)
 Return array of locales found in header.
int headerGetRawEntry (Header h, int_32 tag, hTYP_t type, hPTR_t *p, hCNT_t c)
 Retrieve tag value with type match.
static int headerUsageCount (Header h)
 Return header reference count.
void headerDump (Header h, FILE *f, int flags, const struct headerTagTableEntry_s *tags)
 Dump a header in human readable format (for debugging).

Variables

HV_shdrVec
 Header methods for rpm headers.
static unsigned char header_magic [8]
static int typeAlign [16]
 Alignment needed for header data types.
static int typeSizes [16]
 Size of header data types.
static size_t headerMaxbytes = (32*1024*1024)
 Maximum no.
headerSprintfExtension_s headerDefaultFormats []
 Supported default header tag output formats.

Typedef Documentation

typedef struct entryInfo_s* entryInfo

Description of tag data.

Definition at line 25 of file header_internal.h.

typedef const char* errmsg_t

Definition at line 104 of file header.h.

typedef int(*) HDRadd(Header h, int_32 tag, int_32 type, const void *p, int_32 c)

Add tag to header.

Duplicate tags are okay, but only defined for iteration (with the exceptions noted below). While you are allowed to add i18n string arrays through this function, you probably don't mean to. See headerAddI18NString() instead.

Parameters:
h header
tag tag
type tag value data type
p pointer to tag value(s)
c number of values
Returns:
1 on success, 0 on failure

Definition at line 554 of file header.h.

typedef int(*) HDRaddi18n(Header h, int_32 tag, const char *string, const char *lang)

Add locale specific tag to header.

A NULL lang is interpreted as the C locale. Here are the rules:

 *	- If the tag isn't in the header, it's added with the passed string
 *	   as new value.
 *	- If the tag occurs multiple times in entry, which tag is affected
 *	   by the operation is undefined.
 *	- If the tag is in the header w/ this language, the entry is
 *	   *replaced* (like headerModifyEntry()).
 * 
This function is intended to just "do the right thing". If you need more fine grained control use headerAddEntry() and headerModifyEntry().

Parameters:
h header
tag tag
string tag value
lang locale
Returns:
1 on success, 0 on failure

Definition at line 610 of file header.h.

typedef int(*) HDRaddorappend(Header h, int_32 tag, int_32 type, const void *p, int_32 c)

Add or append element to tag array in header.

Todo:
Arg "p" should have const.
Parameters:
h header
tag tag
type tag value data type
p pointer to tag value(s)
c number of values
Returns:
1 on success, 0 on failure

Definition at line 586 of file header.h.

typedef int(*) HDRappend(Header h, int_32 tag, int_32 type, const void *p, int_32 c)

Append element to tag array in header.

Appends item p to entry w/ tag and type as passed. Won't work on RPM_STRING_TYPE. Any pointers into header memory returned from headerGetEntryMinMemory() for this entry are invalid after this call has been made!

Parameters:
h header
tag tag
type tag value data type
p pointer to tag value(s)
c number of values
Returns:
1 on success, 0 on failure

Definition at line 572 of file header.h.

typedef Header(*) HDRcopy(Header h)

Duplicate a header.

Parameters:
h header
Returns:
new header instance

Definition at line 435 of file header.h.

typedef Header(*) HDRcopyload(const void *uh)

Make a copy and convert header to in-memory representation.

Parameters:
uh on-disk header blob (i.e. with offsets)
Returns:
header

Definition at line 453 of file header.h.

typedef void(*) HDRcopytags(Header headerFrom, Header headerTo, hTAG_t tagstocopy)

Duplicate tag values from one header into another.

Parameters:
headerFrom source header
headerTo destination header
tagstocopy array of tags that are copied

Definition at line 666 of file header.h.

typedef Header(*) HDRfree(Header h)

Dereference a header instance.

Parameters:
h header
Returns:
NULL always

Definition at line 360 of file header.h.

typedef HeaderIterator(*) HDRfreeiter(HeaderIterator hi)

Destroy header tag iterator.

Parameters:
hi header tag iterator
Returns:
NULL always

Definition at line 675 of file header.h.

typedef void*(*) HDRfreetag(Header h,const void *data, rpmTagType type)

Free data allocated when retrieved from header.

Parameters:
h header
data address of data (or NULL)
type type of data (or -1 to force free)
Returns:
NULL always

Definition at line 496 of file header.h.

typedef int(*) HDRget(Header h, int_32 tag,hTYP_t type,void **p,hCNT_t c)

Retrieve tag value.

Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE entry is present).

Parameters:
h header
tag tag
Return values:
type address of tag value data type (or NULL)
p address of pointer to tag value(s) (or NULL)
c address of number of values (or NULL)
Returns:
1 on success, 0 on failure

Definition at line 514 of file header.h.

typedef int(*) HDRgetinstance(Header h)

Return header instance (if from rpmdb).

Parameters:
h header
Returns:
header instance

Definition at line 729 of file header.h.

typedef int(*) HDRgetmin(Header h, int_32 tag,hTYP_t type,hPTR_t *p,hCNT_t c)

Retrieve tag value using header internal array.

Get an entry using as little extra RAM as possible to return the tag value. This is only an issue for RPM_STRING_ARRAY_TYPE.

Parameters:
h header
tag tag
Return values:
type address of tag value data type (or NULL)
p address of pointer to tag value(s) (or NULL)
c address of number of values (or NULL)
Returns:
1 on success, 0 on failure

Definition at line 533 of file header.h.

typedef const char*(*) HDRgetorigin(Header h)

Return header origin (e.g path or URL).

Parameters:
h header
Returns:
header origin

Definition at line 710 of file header.h.

typedef HeaderIterator(*) HDRinititer(Header h)

Create header tag iterator.

Parameters:
h header
Returns:
header tag iterator

Definition at line 684 of file header.h.

typedef int(*) HDRisentry(Header h, int_32 tag)

Check if tag is in header.

Parameters:
h header
tag tag
Returns:
1 on success, 0 on failure

Definition at line 485 of file header.h.

typedef Header(*) HDRlink(Header h)

Reference a header instance.

Parameters:
h header
Returns:
referenced header instance

Definition at line 369 of file header.h.

typedef Header(*) HDRload(void *uh)

Convert header to in-memory representation.

Parameters:
uh on-disk header blob (i.e. with offsets)
Returns:
header

Definition at line 444 of file header.h.

typedef int(*) HDRmodify(Header h, int_32 tag, int_32 type, const void *p, int_32 c)

Modify tag in header.

If there are multiple entries with this tag, the first one gets replaced.

Parameters:
h header
tag tag
type tag value data type
p pointer to tag value(s)
c number of values
Returns:
1 on success, 0 on failure

Definition at line 625 of file header.h.

typedef Header(*) HDRnew(void)

Create new (empty) header instance.

Returns:
header

Definition at line 351 of file header.h.

typedef int(*) HDRnextiter(HeaderIterator hi,hTAG_t tag,hTYP_t type,hPTR_t *p,hCNT_t c)

Return next tag from header.

Parameters:
hi header tag iterator
Return values:
tag address of tag
type address of tag value data type
p address of pointer to tag value(s)
c address of number of values
Returns:
1 on success, 0 on failure

Definition at line 697 of file header.h.

typedef Header(*) HDRread(FD_t fd, enum hMagic magicp)

Read (and load) header from file handle.

Parameters:
fd file handle
magicp read (and verify) 8 bytes of (magic, 0)?
Returns:
header (or NULL on error)

Definition at line 463 of file header.h.

typedef Header(*) HDRreload(Header h, int tag)

Convert header to on-disk representation, and then reload.

This is used to insure that all header data is in one chunk.

Parameters:
h header (with pointers)
tag region tag
Returns:
on-disk header (with offsets)

Definition at line 426 of file header.h.

typedef int(*) HDRremove(Header h, int_32 tag)

Delete tag in header.

Removes all entries of type tag from the header, returns 1 if none were found.

Parameters:
h header
tag tag
Returns:
0 on success, 1 on failure (INCONSISTENT)

Definition at line 638 of file header.h.

typedef int(*) HDRsetinstance(Header h, int instance)

Store header instance (e.g path or URL).

Parameters:
h header