rpm  4.5
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
header.h File Reference

An rpm header carries all information about a package. More...

#include "rpmio.h"
#include "hdrinline.h"
Include dependency graph for header.h:
This graph shows which files directly or indirectly include this file:

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
 

Macros

#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_sHeader
 
typedef enum rpmTagType_e rpmTagType
 
typedef union rpmDataType_u rpmTagData
 
typedef int_32 rpmTagCount
 
typedef struct _HE_sHE_t
 
typedef union rpmDataType_u hRET_t
 
typedef int_32hTAG_t
 
typedef int_32hTYP_t
 
typedef const void * hPTR_t
 
typedef int_32hCNT_t
 
typedef struct _HE_s HE_s
 
typedef struct headerIterator_sHeaderIterator
 
typedef struct
headerTagTableEntry_s
headerTagTableEntry
 Associate tag names with numeric values.
 
typedef struct headerTagIndices_sheaderTagIndices
 
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_sHV_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.
 

Detailed Description

An rpm header carries all information about a package.

A header is a collection of data elements called tags. Each tag has a data type, and includes 1 or more values.

Historical Issues

Here's a brief description of features/incompatibilities that have been added to headers and tags.

Development Issues

Here's a brief description of future features/incompatibilities that will be added to headers.

Definition in file header.h.

Macro Definition Documentation

#define HEADER_I18NTABLE   100
#define HEADER_IMAGE   61

Header private tags.

Note
General use tags should start at 1000 (RPM's tag space starts there).

Definition at line 350 of file header.h.

Referenced by copyEntry(), headerCopy(), headerLoad(), and regionSwab().

#define HEADER_IMMUTABLE   63

Definition at line 352 of file header.h.

Referenced by headerReload().

#define HEADER_REGIONS   64

Definition at line 353 of file header.h.

#define HEADER_SIGBASE   256

Definition at line 355 of file header.h.

Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().

#define HEADER_SIGNATURES   62

Definition at line 351 of file header.h.

Referenced by headerReload().

#define HEADER_TAGBASE   1000

Definition at line 356 of file header.h.

Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().

#define RPM_MAX_TYPE   11

Definition at line 127 of file header.h.

Referenced by rpmDisplayQueryTags().

#define RPM_MIN_TYPE   0

Definition at line 126 of file header.h.

#define RPM_UINT16_TYPE   RPM_INT16_TYPE

Definition at line 130 of file header.h.

Referenced by yamlFormat().

#define RPM_UINT32_TYPE   RPM_INT32_TYPE

Definition at line 131 of file header.h.

Referenced by yamlFormat().

#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

Definition at line 129 of file header.h.

Referenced by yamlFormat().

Typedef Documentation

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.

Parameters
hheader
tagtag
typetag value data type
ptag value(s)
cnumber of values
Returns
1 on success, 0 on failure

Definition at line 404 of file header.h.

typedef int_32* hCNT_t

Definition at line 183 of file header.h.

typedef void*(* HDRgetstats)(Header h, int opx)

Return header stats accumulator structure.

Parameters
hheader
opxper-header accumulator index (aka rpmtsOpX)
Returns
per-header accumulator pointer

Definition at line 878 of file header.h.

typedef struct _HE_s HE_s

Definition at line 201 of file header.h.

Definition at line 224 of file header.h.

typedef void*(* HFD_t)(const void *data, rpmTagType type)

Prototype for headerFreeData() vector.

Parameters
dataaddress of data (or NULL)
typetype of data (or -1 to force free)
Returns
NULL always

Definition at line 366 of file header.h.

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).

Parameters
hheader
tagtag
Return values
*typetag value data type (or NULL)
*ptag value(s) (or NULL)
*cnumber of values (or NULL)
Returns
1 on success, 0 on failure

Definition at line 383 of file header.h.

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.

Parameters
hheader
tagtag
typetag value data type
ptag value(s)
cnumber of values
Returns
1 on success, 0 on failure

Definition at line 419 of file header.h.

typedef const void* hPTR_t

Definition at line 182 of file header.h.

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

Prototype for headerRemoveEntry() vector.

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

Parameters
hheader
tagtag
Returns
0 on success, 1 on failure (INCONSISTENT)

Definition at line 433 of file header.h.

typedef int_32* hTYP_t

Definition at line 181 of file header.h.

typedef short int int_16

Definition at line 91 of file header.h.

typedef int int_32

Definition at line 90 of file header.h.

typedef long long int int_64

Definition at line 89 of file header.h.

typedef char int_8

Definition at line 92 of file header.h.

typedef unsigned short uint_16

Definition at line 97 of file header.h.

typedef unsigned int uint_32

Definition at line 96 of file header.h.

typedef unsigned long long int uint_64

Definition at line 95 of file header.h.

typedef unsigned char uint_8

Definition at line 98 of file header.h.

Function Documentation

int headerMacrosLoad ( Header  h)
int headerMacrosUnload ( Header  h)
uint_32 hGetColor ( Header  h)

Return header color.

Parameters
hheader
Returns
header color

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.

Parameters
hheader
Return values
npname tag value
Returns
name-version-release string

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.

Parameters
hheader
Return values
npname tag value
Returns
name-version-release string

Definition at line 213 of file hdrNVR.c.

References headerGetEntry(), headerNVR(), RPMTAG_ARCH, stpcpy(), and xcalloc().

Referenced by checkPackageSet(), handleInstInstalledFiles(), rpmteChain(), and rpmtsAddInstallElement().