41 #define RPM_MIN_TYPE 2
42 #define RPM_MAX_TYPE 9
43 #define RPM_MASK_TYPE 0x0000ffff
116 #define HEADER_IMAGE 61
117 #define HEADER_SIGNATURES 62
118 #define HEADER_IMMUTABLE 63
119 #define HEADER_REGIONS 64
120 #define HEADER_I18NTABLE 100
121 #define HEADER_SIGBASE 256
122 #define HEADER_TAGBASE 1000
160 #define RPMTAG_PKGID RPMTAG_SIGMD5
170 #define RPMTAG_HDRID RPMTAG_SHA1HEADER
174 #define RPMTAG_N RPMTAG_NAME
176 #define RPMTAG_V RPMTAG_VERSION
178 #define RPMTAG_R RPMTAG_RELEASE
180 #define RPMTAG_E RPMTAG_EPOCH
215 #define RPMTAG_FILEMD5S RPMTAG_FILEDIGESTS
232 #define RPMTAG_PROVIDES RPMTAG_PROVIDENAME
233 #define RPMTAG_P RPMTAG_PROVIDENAME
236 #define RPMTAG_REQUIRES RPMTAG_REQUIRENAME
242 #define RPMTAG_CONFLICTS RPMTAG_CONFLICTNAME
243 #define RPMTAG_C RPMTAG_CONFLICTNAME
273 #define RPMTAG_OBSOLETES RPMTAG_OBSOLETENAME
274 #define RPMTAG_O RPMTAG_OBSOLETENAME
349 #define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME
353 #define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME
358 #define RPMTAG_SVNID RPMTAG_CVSID
414 #define RPMTAG_D RPMTAG_DISTEPOCH
445 #define RPMTAG_EXTERNAL_TAG 1000000
479 #define RPMDBI_PACKAGES (rpmTag)0
480 #define RPMDBI_DEPCACHE (rpmTag)1
482 #define RPMDBI_ADDED (rpmTag)3
483 #define RPMDBI_REMOVED (rpmTag)4
484 #define RPMDBI_AVAILABLE (rpmTag)5
485 #define RPMDBI_HDLIST (rpmTag)6
486 #define RPMDBI_ARGLIST (rpmTag)7
487 #define RPMDBI_FTSWALK (rpmTag)8
488 #define RPMDBI_SEQNO (rpmTag)9
489 #define RPMDBI_BTREE (rpmTag)10
490 #define RPMDBI_HASH (rpmTag)11
491 #define RPMDBI_QUEUE (rpmTag)12
492 #define RPMDBI_RECNO (rpmTag)13
493 #define RPMDBI_HEAP (rpmTag)14
495 #define RPMDBI_REPACKAGES (rpmTag)16
496 #define RPMDBI_REPOSITORY (rpmTag)17
527 #if defined(_RPMTAG_INTERNAL)
534 struct headerTagTableEntry_s {
568 extern headerTagIndices
rpmTags;
571 #if defined(_RPMTAG_INTERNAL)
575 struct headerTagIndices_s {
577 int (*loadIndex) (headerTagTableEntry ** ipp,
size_t * np,
578 int (*
cmp) (
const void * avp,
const void * bvp))
581 headerTagTableEntry * byName;
583 int (*byNameCmp) (
const void * avp,
const void * bvp)
588 headerTagTableEntry * byValue;
590 int (*byValueCmp) (
const void * avp,
const void * bvp)
592 const char * (*tagName) (rpmTag value)
602 char * (*tagCanonicalize) (
const char * s)
616 const char *
tagName(rpmTag tag)
625 unsigned int tagType(rpmTag tag)
633 rpmTag
tagValue(
const char * tagstr)
668 tagStore_t
tagStoreFree(tagStore_t dbiTags,
size_t dbiNTags)
671 #if defined(_RPMTAG_INTERNAL)
674 typedef enum headerSprintfExtensionType_e {
679 } headerSprintfExtensionType;
688 typedef char * (*headerTagFormatFunction) (HE_t he,
const char ** av)
699 typedef int (*headerTagTagFunction) (Header h, HE_t he)
706 struct headerSprintfExtension_s {
707 headerSprintfExtensionType
type;
713 headerTagFormatFunction fmtFunction;
714 headerTagTagFunction tagFunction;
715 headerSprintfExtension * more;
758 headerTagTableEntry tags,
759 headerSprintfExtension exts,
775 #define HEADERGET_NOEXTENSION (1 << 0)
776 #define HEADERGET_NOI18NSTRING (1 << 1)
850 #define headerLink(_h) \
851 ((Header)rpmioLinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
861 #define headerUnlink(_h) \
862 ((Header)rpmioUnlinkPoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
872 #define headerFree(_h) \
873 ((Header)rpmioFreePoolItem((rpmioItem)(_h), __FUNCTION__, __FILE__, __LINE__))
954 #if defined(SUPPORT_I18NSTRING_TYPE)
975 int headerAddI18NString(Header h, rpmTag tag,
const char *
string,
986 void headerCopyTags(Header headerFrom, Header headerTo, rpmTag * tagstocopy)
997 int headerGetMagic( Header h,
unsigned char **magicp,
size_t *nmagicp)
1007 int headerSetMagic( Header h,
unsigned char * magic,
size_t nmagic)
int headerDel(Header h, HE_t he, unsigned int flags)
Remove tag container from header.
void headerMergeLegacySigs(Header h, const Header sigh)
Translate and merge legacy signature tags into header.
enum rpmTagReturnType_e rpmTagReturnType
Identify how to return the header data type.
headerTagTableEntry rpmTagTable
Automatically generated table of tag name/value pairs.
rpmuint32_t headerGetStartOff(Header h)
Return header starting byte offset.
Header headerRegenSigHeader(const Header h, int noArchiveSize)
Regenerate signature header.
void tagClean(headerTagIndices _rpmTags)
Free memory in header tag indices.
void headerCopyTags(Header headerFrom, Header headerTo, rpmTag *tagstocopy)
Duplicate tag values from one header into another.
rpmuint32_t hGetColor(Header h)
Return header color.
Header headerLoad(void *uh)
Convert header to in-memory representation.
enum rpmSigTag_e rpmSigTag
int headerNext(HeaderIterator hi, HE_t he, unsigned int flags)
Return next tag from header.
#define HEADER_SIGNATURES
struct headerToken_s * Header
#define HEADER_IMAGE
Header private tags.
const char * headerGetParent(Header h)
Return header parent identifier (e.g parent's NVRA).
rpmuint32_t headerGetEndOff(Header h)
Return header ending byte offset.
rpmTagReturnType_e
Identify how to return the header data type.
unsigned short rpmuint16_t
rpmSigTag_e
Tags found in signature header from package.
void * headerGetStats(Header h, int opx)
Return header stats accumulator structure.
int headerMacrosLoad(Header h)
Define per-header macros.
int headerSetMagic(Header h, unsigned char *magic, size_t nmagic)
Store header magic.
void * headerSetRpmdb(Header h, void *rpmdb)
Store rpmdb pointer.
uint32_t headerSetInstance(Header h, uint32_t instance)
Store header instance (e.g path or URL).
rpmTag tagValue(const char *tagstr)
Return tag value from name.
rpmTag tagGenerate(const char *s)
Generate a tag from arbitrary string.
rpmTag_e
Tags identify data in package headers.
enum rpmSubTagType_e rpmSubTagType
size_t headerSizeof(Header h)
Return size of on-disk header representation in bytes.
rpmuint32_t headerSetStartOff(Header h, rpmuint32_t startoff)
Store header starting byte offset.
rpmTagType_e
The basic types of data in tags from headers.
const char * headerGetOrigin(Header h)
Return header origin (e.g path or URL).
void rpmDisplayQueryTags(FILE *fp, headerTagTableEntry _rpmTagTable, headerSprintfExtension _rpmHeaderFormats)
Display list of tags that can be used in –queryformat.
void * headerUnload(Header h, size_t *lenp)
headerUnload.
rpmuint32_t headerSetEndOff(Header h, rpmuint32_t endoff)
Store header ending byte offset.
int headerGet(Header h, HE_t he, unsigned int flags)
Retrieve extension or tag value from a header.
unsigned char rpmuint8_t
Private int typedefs to avoid C99 portability issues.
Header headerCopy(Header h)
Duplicate a header.
unsigned int tagType(rpmTag tag)
Return tag data type from value.
const char * headerGetBaseURL(Header h)
Return header base URL (e.g path or URL).
static const struct headerTagTableEntry_s _rpmTagTable[]
unsigned long long rpmuint64_t
int headerPut(Header h, HE_t he, unsigned int flags)
Add or append tag container to header.
const char * tagName(rpmTag tag)
Return tag name from value.
HeaderIterator headerFini(HeaderIterator hi)
Destroy header tag container iterator.
struct stat * headerGetStatbuf(Header h)
Return header stat(2) buffer (of origin *.rpm file).
int headerIsEntry(Header h, rpmTag tag)
Check if tag is in header.
Header headerNew(void)
Create new (empty) header instance.
struct tagStore_s * tagStore_t
static struct headerTagIndices_s _rpmTags
struct rpmdb_s * rpmdb
Database of headers and tag value indices.
int headerSetBaseURL(Header h, const char *baseurl)
Store header base URL (e.g path or URL).
const struct headerSprintfExtension_s * headerSprintfExtension
enum rpmTagType_e rpmTagType
Header headerReload(Header h, rpmTag tag)
Convert header to on-disk representation, and then reload.
HeaderIterator headerInit(Header h)
Create header tag iterator.
const char const bson int mongo_write_concern int flags
headerSprintfExtension headerCompoundFormats
Supported default header extension/tag output formats.
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 * headerSprintf(Header h, const char *fmt, headerTagTableEntry tags, headerSprintfExtension exts, errmsg_t *errmsg)
Return formatted output string from header tags.
int headerSetStatbuf(Header h, struct stat *st)
Copy into header stat(2) buffer (of origin *.rpm file).
static int cmp(const void *arg1, const void *arg2)
int headerSetOrigin(Header h, const char *origin)
Store header origin (e.g path or URL).
int rpmTagTableSize
Number of entries in rpmTagTable.
char * tagCanonicalize(const char *s)
Canonicalize a rpmTag string.
tagStore_t tagStoreFree(tagStore_t dbiTags, size_t dbiNTags)
Destroy tagStore array.
const struct headerTagTableEntry_s * headerTagTableEntry
int headerMacrosUnload(Header h)
Define per-header macros.
const char * headerGetDigest(Header h)
Return digest of origin *.rpm file.
int headerSetDigest(Header h, const char *digest)
Store digest of origin *.rpm file.
headerSprintfExtension headerDefaultFormats
Supported default header tag output formats.
struct headerTagIndices_s * headerTagIndices
int headerGetMagic(Header h, unsigned char **magicp, size_t *nmagicp)
Return header magic.
Header headerCopyLoad(const void *uh)
Make a copy and convert header to in-memory representation.
uint32_t headerGetInstance(Header h)
Return header instance (if from rpmdb).
int headerMod(Header h, HE_t he, unsigned int flags)
Modify tag container in header.
void * headerGetRpmdb(Header h)
Return rpmdb pointer.
struct headerIterator_s * HeaderIterator
int headerSetParent(Header h, const char *parent)
Store header parent (e.g parent's NVRA).