header.h
Go to the documentation of this file.
#ifndef H_HEADER
#define H_HEADER
/* RPM - Copyright (C) 1995-2001 Red Hat Software */
#include <rpm/rpmio.h>
#include <rpm/rpmtypes.h>
#include <rpm/rpmtd.h>
#include <rpm/rpmutil.h>
#ifdef __cplusplus
extern "C" {
#endif
extern const unsigned char rpm_header_magic[8];
enum hMagic {
HEADER_MAGIC_NO = 0,
HEADER_MAGIC_YES = 1
};
Header headerNew(void);
Header headerFree( Header h);
Header headerLink(Header h);
unsigned int headerSizeof(Header h, int magicp);
RPM_GNUC_DEPRECATED
void * headerUnload(Header h);
void * headerExport(Header h, unsigned int * bsize);
Header headerReload(Header h, rpmTagVal tag);
Header headerCopy(Header h);
RPM_GNUC_DEPRECATED
Header headerLoad(void * uh);
RPM_GNUC_DEPRECATED
Header headerCopyLoad(const void * uh);
enum headerImportFlags_e {
HEADERIMPORT_COPY = (1 << 0), /* Make copy of blob on import? */
HEADERIMPORT_FAST = (1 << 1), /* Faster but less safe? */
};
typedef rpmFlags headerImportFlags;
Header headerImport(void *blob, unsigned int bsize, headerImportFlags flags);
Header headerRead(FD_t fd, int magicp);
int headerWrite(FD_t fd, Header h, int magicp);
int headerIsEntry(Header h, rpmTagVal tag);
enum headerGetFlags_e {
HEADERGET_DEFAULT = 0, /* legacy headerGetEntry() behavior */
HEADERGET_MINMEM = (1 << 0), /* pointers can refer to header memory */
HEADERGET_EXT = (1 << 1), /* lookup extension types too */
HEADERGET_RAW = (1 << 2), /* return raw contents (no i18n lookups) */
HEADERGET_ALLOC = (1 << 3), /* always allocate memory for all data */
HEADERGET_ARGV = (1 << 4), /* return string arrays NULL-terminated */
};
typedef rpmFlags headerGetFlags;
int headerGet(Header h, rpmTagVal tag, rpmtd td, headerGetFlags flags);
enum headerPutFlags_e {
HEADERPUT_DEFAULT = 0,
HEADERPUT_APPEND = (1 << 0),
};
typedef rpmFlags headerPutFlags;
int headerPut(Header h, rpmtd td, headerPutFlags flags);
int headerPutBin(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size);
int headerPutString(Header h, rpmTagVal tag, const char *val);
int headerPutStringArray(Header h, rpmTagVal tag, const char **val, rpm_count_t size);
int headerPutChar(Header h, rpmTagVal tag, const char *val, rpm_count_t size);
int headerPutUint8(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size);
int headerPutUint16(Header h, rpmTagVal tag, const uint16_t *val, rpm_count_t size);
int headerPutUint32(Header h, rpmTagVal tag, const uint32_t *val, rpm_count_t size);
int headerPutUint64(Header h, rpmTagVal tag, const uint64_t *val, rpm_count_t size);
int headerAddI18NString(Header h, rpmTagVal tag, const char * string,
const char * lang);
int headerMod(Header h, rpmtd td);
int headerDel(Header h, rpmTagVal tag);
char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
void headerCopyTags(Header headerFrom, Header headerTo,
const rpmTagVal * tagstocopy);
HeaderIterator headerFreeIterator(HeaderIterator hi);
HeaderIterator headerInitIterator(Header h);
int headerNext(HeaderIterator hi, rpmtd td);
rpmTagVal headerNextTag(HeaderIterator hi);
char * headerGetAsString(Header h, rpmTagVal tag);
const char * headerGetString(Header h, rpmTagVal tag);
uint64_t headerGetNumber(Header h, rpmTagVal tag);
int headerIsSource(Header h);
unsigned int headerGetInstance(Header h);
typedef enum headerConvOps_e {
HEADERCONV_EXPANDFILELIST = 0,
HEADERCONV_COMPRESSFILELIST = 1,
HEADERCONV_RETROFIT_V3 = 2,
} headerConvOps;
int headerConvert(Header h, int op);
#ifdef __cplusplus
}
#endif
#endif /* H_HEADER */
headerFree
Header headerFree(Header h)
Dereference a header instance.
headerAddI18NString
int headerAddI18NString(Header h, rpmTagVal tag, const char *string, const char *lang)
Add locale specific tag to header.
headerPutUint64
int headerPutUint64(Header h, rpmTagVal tag, const uint64_t *val, rpm_count_t size)
headerMod
int headerMod(Header h, rpmtd td)
Modify tag in header.
headerPut
int headerPut(Header h, rpmtd td, headerPutFlags flags)
Add or append tag to header.
hMagic
hMagic
Include calculation for 8 bytes of (magic, 0)?
Definition: header.h:32
headerRead
Header headerRead(FD_t fd, int magicp)
Read (and load) header from file handle.
headerExport
void * headerExport(Header h, unsigned int *bsize)
Export header to on-disk representation.
headerGetString
const char * headerGetString(Header h, rpmTagVal tag)
Return a simple string tag from header.
headerCopyTags
void headerCopyTags(Header headerFrom, Header headerTo, const rpmTagVal *tagstocopy)
Duplicate tag values from one header into another.
headerIsSource
int headerIsSource(Header h)
Check if header is a source or binary package header.
headerPutStringArray
int headerPutStringArray(Header h, rpmTagVal tag, const char **val, rpm_count_t size)
headerDel
int headerDel(Header h, rpmTagVal tag)
Delete tag in header.
headerUnload
RPM_GNUC_DEPRECATED void * headerUnload(Header h)
Convert header to on-disk representation.
rpm_header_magic
const unsigned char rpm_header_magic[8]
Header magic value.
headerPutUint8
int headerPutUint8(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size)
headerGet
int headerGet(Header h, rpmTagVal tag, rpmtd td, headerGetFlags flags)
Retrieve tag value.
headerCopyLoad
RPM_GNUC_DEPRECATED Header headerCopyLoad(const void *uh)
Make a copy and convert header to in-memory representation.
headerGetNumber
uint64_t headerGetNumber(Header h, rpmTagVal tag)
Return a simple number tag (or extension) from header.
headerGetAsString
char * headerGetAsString(Header h, rpmTagVal tag)
Return any non-array tag from header, converted to string.
headerLoad
RPM_GNUC_DEPRECATED Header headerLoad(void *uh)
Convert header to in-memory representation.
headerFreeIterator
HeaderIterator headerFreeIterator(HeaderIterator hi)
Destroy header tag iterator.
headerPutString
int headerPutString(Header h, rpmTagVal tag, const char *val)
headerNext
int headerNext(HeaderIterator hi, rpmtd td)
Return next tag contents from header.
headerPutBin
int headerPutBin(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size)
Type-safe methods for inserting tag data to header.
headerPutChar
int headerPutChar(Header h, rpmTagVal tag, const char *val, rpm_count_t size)
headerPutUint32
int headerPutUint32(Header h, rpmTagVal tag, const uint32_t *val, rpm_count_t size)
headerPutUint16
int headerPutUint16(Header h, rpmTagVal tag, const uint16_t *val, rpm_count_t size)
headerGetInstance
unsigned int headerGetInstance(Header h)
Return header instance, ie is the header from rpmdb.
headerConvert
int headerConvert(Header h, int op)
Convert header to/from (legacy) data presentation.
headerLink
Header headerLink(Header h)
Reference a header instance.
headerNew
Header headerNew(void)
Create new (empty) header instance.
headerWrite
int headerWrite(FD_t fd, Header h, int magicp)
Write (with unload) header to file handle.
headerSizeof
unsigned int headerSizeof(Header h, int magicp)
Return size of on-disk header representation in bytes.
headerCopy
Header headerCopy(Header h)
Duplicate a header.
headerFormat
char * headerFormat(Header h, const char *fmt, errmsg_t *errmsg)
Return formatted output string from header tags.
headerGetFlags_e
headerGetFlags_e
Modifier flags for headerGet() operation.
Definition: header.h:166
headerInitIterator
HeaderIterator headerInitIterator(Header h)
Create header tag iterator.
headerReload
Header headerReload(Header h, rpmTagVal tag)
Convert header to on-disk representation, and then reload.
headerImport
Header headerImport(void *blob, unsigned int bsize, headerImportFlags flags)
Import header to in-memory representation.
headerNextTag
rpmTagVal headerNextTag(HeaderIterator hi)
Return next tag number from header.
headerIsEntry
int headerIsEntry(Header h, rpmTagVal tag)
Check if tag is in header.
HEADER_MAGIC_NO
@ HEADER_MAGIC_NO
Definition: header.h:33
HEADER_MAGIC_YES
@ HEADER_MAGIC_YES
Definition: header.h:34
HEADERGET_DEFAULT
@ HEADERGET_DEFAULT
Definition: header.h:167
HEADERGET_EXT
@ HEADERGET_EXT
Definition: header.h:169
HEADERGET_ARGV
@ HEADERGET_ARGV
Definition: header.h:172
HEADERGET_ALLOC
@ HEADERGET_ALLOC
Definition: header.h:171
HEADERGET_RAW
@ HEADERGET_RAW
Definition: header.h:170
HEADERGET_MINMEM
@ HEADERGET_MINMEM
Definition: header.h:168
HeaderIterator
struct headerIterator_s * HeaderIterator
Definition: rpmtypes.h:25
FD_t
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:99
rpm_count_t
uint32_t rpm_count_t
Definition: rpmtypes.h:29
rpmTagVal
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
rpmFlags
uint32_t rpmFlags
Definition: rpmtypes.h:42
Header
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
headerPutFlags_e
headerPutFlags_e
Definition: header.h:188
HEADERPUT_APPEND
@ HEADERPUT_APPEND
Definition: header.h:190
HEADERPUT_DEFAULT
@ HEADERPUT_DEFAULT
Definition: header.h:189
headerPutFlags
rpmFlags headerPutFlags
Definition: header.h:193
headerImportFlags
rpmFlags headerImportFlags
Definition: header.h:121
headerConvOps_e
headerConvOps_e
Definition: header.h:368
HEADERCONV_EXPANDFILELIST
@ HEADERCONV_EXPANDFILELIST
Definition: header.h:369
HEADERCONV_RETROFIT_V3
@ HEADERCONV_RETROFIT_V3
Definition: header.h:371
HEADERCONV_COMPRESSFILELIST
@ HEADERCONV_COMPRESSFILELIST
Definition: header.h:370
headerImportFlags_e
headerImportFlags_e
Definition: header.h:116
HEADERIMPORT_FAST
@ HEADERIMPORT_FAST
Definition: header.h:118
HEADERIMPORT_COPY
@ HEADERIMPORT_COPY
Definition: header.h:117
headerGetFlags
rpmFlags headerGetFlags
Definition: header.h:175
headerConvOps
enum headerConvOps_e headerConvOps
errmsg_t
const char * errmsg_t
Definition: rpmtypes.h:17
RPM_GNUC_DEPRECATED
#define RPM_GNUC_DEPRECATED
Definition: rpmutil.h:81
rpmtd_s
Container for rpm tag data (from headers or extensions).
Definition: rpmtd.h:32