#include "rpmio.h"
#include "hdrinline.h"
Go to the source code of this file.
Data Structures | |
union | rpmDataType_u |
struct | _HE_s |
struct | headerTagTableEntry_s |
struct | headerTagIndices_s |
struct | headerSprintfExtension_s |
struct | HV_s |
Defines | |
#define | RPM_MIN_TYPE 0 |
#define | RPM_MAX_TYPE 11 |
#define | RPM_UINT8_TYPE RPM_INT8_TYPE |
#define | RPM_UINT16_TYPE RPM_INT16_TYPE |
#define | RPM_UINT32_TYPE RPM_INT32_TYPE |
#define | RPM_UINT64_TYPE RPM_INT64_TYPE |
#define | HEADER_IMAGE 61 |
Header private tags. | |
#define | HEADER_SIGNATURES 62 |
#define | HEADER_IMMUTABLE 63 |
#define | HEADER_REGIONS 64 |
#define | HEADER_I18NTABLE 100 |
#define | HEADER_SIGBASE 256 |
#define | HEADER_TAGBASE 1000 |
Typedefs | |
typedef long long int | int_64 |
typedef int | int_32 |
typedef short int | int_16 |
typedef char | int_8 |
typedef unsigned long long int | uint_64 |
typedef unsigned int | uint_32 |
typedef unsigned short | uint_16 |
typedef unsigned char | uint_8 |
typedef const char * | errmsg_t |
typedef struct headerToken_s * | Header |
typedef enum rpmTagType_e | rpmTagType |
typedef union rpmDataType_u | rpmTagData |
typedef int_32 | rpmTagCount |
typedef struct _HE_s * | HE_t |
typedef union rpmDataType_u | hRET_t |
typedef int_32 * | hTAG_t |
typedef int_32 * | hTYP_t |
typedef const void * | hPTR_t |
typedef int_32 * | hCNT_t |
typedef struct _HE_s | HE_s |
typedef struct headerIterator_s * | HeaderIterator |
typedef struct headerTagTableEntry_s * | headerTagTableEntry |
Associate tag names with numeric values. | |
typedef struct headerTagIndices_s * | headerTagIndices |
typedef char *(* | headerTagFormatFunction )(HE_t he, const char **av) |
HEADER_EXT_TAG format function prototype. | |
typedef int(* | headerTagTagFunction )(Header h, HE_t he) |
HEADER_EXT_FORMAT format function prototype. | |
typedef struct headerSprintfExtension_s * | headerSprintfExtension |
Define header tag output formats. | |
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 void *(* | HFD_t )(const void *data, rpmTagType type) |
Prototype for headerFreeData() vector. | |
typedef int(* | HGE_t )(Header h, int_32 tag, rpmTagType *type, void *p, int_32 *c) |
Prototype for headerGetEntry() vector. | |
typedef int(* | HAE_t )(Header h, int_32 tag, rpmTagType type, const void *p, int_32 c) |
Prototype for headerAddEntry() vector. | |
typedef int(* | HME_t )(Header h, int_32 tag, rpmTagType type, const void *p, int_32 c) |
Prototype for headerModifyEntry() vector. | |
typedef int(* | HRE_t )(Header h, int_32 tag) |
Prototype for headerRemoveEntry() vector. | |
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 )(void *_fd, enum hMagic magicp) |
Read (and load) header from file handle. | |
typedef int(* | HDRwrite )(void *_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(* | HDRext )(Header h, int_32 tag, hTYP_t type, hRET_t *p, hCNT_t c) |
Retrieve extension or tag value. | |
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, void *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 *exts, 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 int(* | HDRgetmagic )(Header h, unsigned char **magicp, size_t *nmagicp) |
Return header magic. | |
typedef int(* | HDRsetmagic )(Header h, unsigned char *magic, size_t nmagic) |
Store header magic. | |
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 void *(* | HDRgetstats )(Header h, int opx) |
Return header stats accumulator structure. | |
typedef struct HV_s * | HV_t |
Header method vectors. | |
Enumerations | |
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 | 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 | 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 | |
static void * | headerFreeData (const void *data, rpmTagType type) |
Free data allocated when retrieved from header. | |
int | headerMacrosLoad (Header h) |
Define per-header macros. | |
int | headerMacrosUnload (Header h) |
Define per-header macros. | |
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 * | hGetNEVR (Header h, const char **np) |
Return (malloc'd) header name-version-release string. | |
char * | hGetNEVRA (Header h, const char **np) |
Return (malloc'd) header name-version-release.arch string. | |
uint_32 | hGetColor (Header h) |
Return header color. | |
Variables | |
struct headerSprintfExtension_s | headerDefaultFormats [] |
Supported default header tag output formats. |
A header is a collection of data elements called tags. Each tag has a data type, and includes 1 or more values.
Definition in file header.h.
#define HEADER_I18NTABLE 100 |
Definition at line 354 of file header.h.
Referenced by hdrKeyList(), headerFindI18NString(), headerGetLangs(), initSourceHeader(), and regionSwab().
#define HEADER_IMAGE 61 |
Header private tags.
Definition at line 350 of file header.h.
Referenced by copyEntry(), and regionSwab().
#define HEADER_SIGBASE 256 |
Definition at line 355 of file header.h.
Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().
#define HEADER_TAGBASE 1000 |
Definition at line 356 of file header.h.
Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().
#define RPM_MAX_TYPE 11 |
#define RPM_UINT16_TYPE RPM_INT16_TYPE |
#define RPM_UINT32_TYPE RPM_INT32_TYPE |
#define RPM_UINT64_TYPE RPM_INT64_TYPE |
Definition at line 132 of file header.h.
Referenced by digestFormat(), pkgmtimeTag(), pkgsizeTag(), rpnFormat(), and yamlFormat().
#define RPM_UINT8_TYPE RPM_INT8_TYPE |
typedef int(* HAE_t)(Header h, int_32 tag, rpmTagType type, const void *p, int_32 c) |
Prototype for headerAddEntry() vector.
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.
h | header | |
tag | tag | |
type | tag value data type | |
p | tag value(s) | |
c | number of values |
typedef void*(* HDRgetstats)(Header h, int opx) |
typedef struct headerTagIndices_s* headerTagIndices |
typedef void*(* HFD_t)(const void *data, rpmTagType type) |
Prototype for headerFreeData() vector.
data | address of data (or NULL) | |
type | type of data (or -1 to force free) |
typedef int(* HGE_t)(Header h, int_32 tag,rpmTagType *type,void *p,int_32 *c) |
Prototype for headerGetEntry() vector.
Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE entry is present).
h | header | |
tag | tag |
*type | tag value data type (or NULL) | |
*p | tag value(s) (or NULL) | |
*c | number of values (or NULL) |
typedef int(* HME_t)(Header h, int_32 tag, rpmTagType type, const void *p, int_32 c) |
Prototype for headerModifyEntry() vector.
If there are multiple entries with this tag, the first one gets replaced.
h | header | |
tag | tag | |
type | tag value data type | |
p | tag value(s) | |
c | number of values |
Prototype for headerRemoveEntry() vector.
Delete tag in header. Removes all entries of type tag from the header, returns 1 if none were found.
h | header | |
tag | tag |
int headerMacrosLoad | ( | Header | h | ) |
Define per-header macros.
h | header |
Definition at line 29 of file hdrNVR.c.
References _free(), addMacro(), body(), headerFreeData(), headerGetEntryMinMemory(), tagMacro::macroname, RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT8_TYPE, RPM_NULL_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmExpand(), tagMacro::tag, and tagMacros.
Referenced by processBinaryFiles(), and rpmInstallSourcePackage().
int headerMacrosUnload | ( | Header | h | ) |
Define per-header macros.
h | header |
Definition at line 84 of file hdrNVR.c.
References _free(), body(), delMacro(), headerFreeData(), headerGetEntryMinMemory(), tagMacro::macroname, RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT8_TYPE, RPM_NULL_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmExpand(), tagMacro::tag, and tagMacros.
Referenced by processBinaryFiles().
Return header color.
h | header |
Definition at line 240 of file hdrNVR.c.
References headerGetEntryMinMemory(), and RPMTAG_FILECOLORS.
Referenced by rpmdbAdd(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), and rpmtsAddUpgrades().
char* hGetNEVR | ( | Header | h, | |
const char ** | np | |||
) |
Return (malloc'd) header name-version-release string.
h | header |
np | name tag value |
Definition at line 194 of file hdrNVR.c.
References headerNVR(), stpcpy(), and xcalloc().
Referenced by addTE(), and ensureOlder().
char* hGetNEVRA | ( | Header | h, | |
const char ** | np | |||
) |
Return (malloc'd) header name-version-release.arch string.
h | header |
np | name tag value |
Definition at line 213 of file hdrNVR.c.
References headerGetEntry(), headerNVR(), RPMTAG_ARCH, stpcpy(), and xcalloc().
Referenced by checkPackageSet(), handleInstInstalledFiles(), rpmteChain(), and rpmtsAddInstallElement().