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

struct  headerTagTableEntry_s
struct  headerTagIndices_s
struct  headerSprintfExtension_s
union  hRET_s
struct  HE_s
struct  HV_s

Defines

#define RPM_MIN_TYPE   0
#define RPM_MAX_TYPE   11
#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 int_32hTAG_t
typedef int_32hTYP_t
typedef const void * hPTR_t
typedef int_32hCNT_t
typedef headerToken_sHeader
typedef headerIterator_sHeaderIterator
typedef headerTagTableEntry_sheaderTagTableEntry
 Associate tag names with numeric values.
typedef headerTagIndices_sheaderTagIndices
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 hRET_shRET_t
typedef HE_sHE_t
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.

Enumerations

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

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 303 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 299 of file header.h.

Referenced by copyEntry(), and regionSwab().

#define HEADER_IMMUTABLE   63
 

Definition at line 301 of file header.h.

#define HEADER_REGIONS   64
 

Definition at line 302 of file header.h.

#define HEADER_SIGBASE   256
 

Definition at line 304 of file header.h.

Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().

#define HEADER_SIGNATURES   62
 

Definition at line 300 of file header.h.

#define HEADER_TAGBASE   1000
 

Definition at line 305 of file header.h.

Referenced by headerMergeLegacySigs(), and headerRegenSigHeader().

#define RPM_MAX_TYPE   11
 

Definition at line 260 of file header.h.

Referenced by rpmDisplayQueryTags().

#define RPM_MIN_TYPE   0
 

Definition at line 259 of file header.h.


Typedef Documentation

typedef int_32* hCNT_t
 

Definition at line 111 of file header.h.

typedef struct HE_s* HE_t
 

Definition at line 328 of file header.h.

typedef struct headerTagIndices_s* headerTagIndices
 

Definition at line 136 of file header.h.

typedef const void* hPTR_t
 

Definition at line 110 of file header.h.

typedef union hRET_s* hRET_t
 

Definition at line 310 of file header.h.

typedef int_32* hTYP_t
 

Definition at line 109 of file header.h.

typedef short int int_16
 

Definition at line 92 of file header.h.

typedef int int_32
 

Definition at line 91 of file header.h.

typedef long long int int_64
 

Definition at line 90 of file header.h.

typedef char int_8
 

Definition at line 93 of file header.h.

typedef unsigned short uint_16
 

Definition at line 98 of file header.h.

typedef unsigned int uint_32
 

Definition at line 97 of file header.h.

typedef unsigned long long int uint_64
 

Definition at line 96 of file header.h.

typedef unsigned char uint_8
 

Definition at line 99 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(), and rpmtsAddInstallElement().

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 Sat Oct 1 21:48:49 2011 for rpm by  doxygen 1.4.4