Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

rpmdb/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

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 headerToken_sHeader
typedef enum rpmTagType_e rpmTagType
typedef rpmDataType_u rpmTagData
typedef int_32 rpmTagCount
typedef _HE_sHE_t
typedef rpmDataType_u hRET_t
typedef int_32hTAG_t
typedef int_32hTYP_t
typedef const void * hPTR_t
typedef int_32hCNT_t
typedef _HE_s HE_s
typedef headerIterator_sHeaderIterator
typedef headerTagTableEntry_sheaderTagTableEntry
 Associate tag names with numeric values.
typedef 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 headerSprintfExtension_sheaderSprintfExtension
 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 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

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


Define Documentation

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

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(), and regionSwab().

#define HEADER_IMMUTABLE   63
 

Definition at line 352 of file header.h.

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

#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:
h header
tag tag
type tag value data type
p tag value(s)
c number 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:
h header
opx per-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.

typedef struct headerTagIndices_s* headerTagIndices
 

Definition at line 224 of file header.h.

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

Prototype for headerFreeData() vector.

Parameters:
data address of data (or NULL)
type type 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:
h header
tag tag
Return values:
*type tag value data type (or NULL)
*p tag value(s) (or NULL)
*c number 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:
h header
tag tag
type tag value data type
p tag value(s)
c number 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:
h header
tag tag
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  ) 
 

Define per-header macros.

Parameters:
h header
Returns:
0 always

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.

Parameters:
h header
Returns:
0 always

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

uint_32 hGetColor Header  h  ) 
 

Return header color.

Parameters:
h header
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:
h header
Return values:
np name 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:
h header
Return values:
np name 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().


Generated on Tue Dec 27 22:20:23 2016 for rpm by  doxygen 1.4.4