rpm  4.8.1
header.h
Go to the documentation of this file.
1 #ifndef H_HEADER
2 #define H_HEADER
3 
13 /* RPM - Copyright (C) 1995-2001 Red Hat Software */
14 
15 #include <rpm/rpmio.h>
16 #include <rpm/rpmtypes.h>
17 #include <rpm/rpmtd.h>
18 #include <rpm/rpmutil.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
27 extern const unsigned char rpm_header_magic[8];
28 
32 enum hMagic {
35 };
36 
41 Header headerNew(void);
42 
49 
56 
63 
68 void headerSort(Header h);
69 
74 void headerUnsort(Header h);
75 
82 unsigned int headerSizeof(Header h, enum hMagic magicp);
83 
93 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate);
94 
100 void * headerUnload(Header h);
101 
110 
117 
123 Header headerLoad(void * uh);
124 
130 Header headerCopyLoad(const void * uh);
131 
138 Header headerRead(FD_t fd, enum hMagic magicp);
139 
147 int headerWrite(FD_t fd, Header h, enum hMagic magicp);
148 
155 int headerIsEntry(Header h, rpmTag tag);
156 
166 typedef enum headerGetFlags_e {
167  HEADERGET_DEFAULT = 0, /* legacy headerGetEntry() behavior */
168  HEADERGET_MINMEM = (1 << 0), /* pointers can refer to header memory */
169  HEADERGET_EXT = (1 << 1), /* lookup extension types too */
170  HEADERGET_RAW = (1 << 2), /* return raw contents (no i18n lookups) */
171  HEADERGET_ALLOC = (1 << 3), /* always allocate memory for all data */
172  HEADERGET_ARGV = (1 << 4), /* return string arrays NULL-terminated */
174 
183 int headerGet(Header h, rpmTag tag, rpmtd td, headerGetFlags flags);
184 
185 
186 typedef enum headerPutFlags_e {
188  HEADERPUT_APPEND = (1 << 0),
190 
199 int headerPut(Header h, rpmtd td, headerPutFlags flags);
200 
224 int headerPutString(Header h, rpmTag tag, const char *val);
225 int headerPutStringArray(Header h, rpmTag tag, const char **val, rpm_count_t size);
226 int headerPutBin(Header h, rpmTag tag, uint8_t *val, rpm_count_t size);
227 int headerPutChar(Header h, rpmTag tag, char *val, rpm_count_t size);
228 int headerPutUint8(Header h, rpmTag tag, uint8_t *val, rpm_count_t size);
229 int headerPutUint16(Header h, rpmTag tag, uint16_t *val, rpm_count_t size);
230 int headerPutUint32(Header h, rpmTag tag, uint32_t *val, rpm_count_t size);
231 int headerPutUint64(Header h, rpmTag tag, uint64_t *val, rpm_count_t size);
254 int headerAddI18NString(Header h, rpmTag tag, const char * string,
255  const char * lang);
256 
264 int headerMod(Header h, rpmtd td);
265 
275 int headerDel(Header h, rpmTag tag);
276 
286 char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
287 
294 void headerCopyTags(Header headerFrom, Header headerTo,
295  const rpmTag * tagstocopy);
296 
303 
310 
317 int headerNext(HeaderIterator hi, rpmtd td);
318 
325 
335 int headerNVR(Header h,
336  const char ** np,
337  const char ** vp,
338  const char ** rp);
339 
351 int headerNEVRA(Header h,
352  const char ** np,
353  uint32_t ** ep,
354  const char ** vp,
355  const char ** rp,
356  const char ** ap);
357 
365 char * headerGetNEVR(Header h, const char ** np );
366 
374 char * headerGetNEVRA(Header h, const char ** np );
375 
376 /* \ingroup header
377  * Return (malloc'd) header (epoch:)version-release string.
378  * @param h header
379  * @retval np name tag value (or NULL)
380  * @return (epoch:)version-release string
381  */
383 char * headerGetEVR(Header h, const char **np);
384 
391 char * headerGetAsString(Header h, rpmTag tag);
392 
399 const char * headerGetString(Header h, rpmTag tag);
400 
401 /* \ingroup header
402  * Return a simple number tag (or extension) from header
403  * @param h header
404  * @param tag tag to retrieve
405  * @return numeric tag value or 0 on failure
406  */
407 uint64_t headerGetNumber(Header h, rpmTag tag);
408 
416 
422 int headerIsSource(Header h);
423 
429 unsigned int headerGetInstance(Header h);
430 
431 typedef enum headerConvOps_e {
435 } headerConvOps;
436 
444 
445 #ifdef __cplusplus
446 }
447 #endif
448 
449 #endif /* H_HEADER */
unsigned int headerSizeof(Header h, enum hMagic magicp)
Return size of on-disk header representation in bytes.
int headerGet(Header h, rpmTag tag, rpmtd td, headerGetFlags flags)
Retrieve tag value.
int headerIsEntry(Header h, rpmTag tag)
Check if tag is in header.
Header headerReload(Header h, rpmTag tag)
Convert header to on-disk representation, and then reload.
HeaderIterator headerInitIterator(Header h)
Create header tag iterator.
int headerPutChar(Header h, rpmTag tag, char *val, rpm_count_t size)
Header headerRead(FD_t fd, enum hMagic magicp)
Read (and load) header from file handle.
Header headerCopyLoad(const void *uh)
Make a copy and convert header to in-memory representation.
RPM_GNUC_DEPRECATED char * headerGetEVR(Header h, const char **np)
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:82
int headerIsSource(Header h)
Check if header is a source or binary package header.
uint32_t rpm_count_t
Definition: rpmtypes.h:29
void headerCopyTags(Header headerFrom, Header headerTo, const rpmTag *tagstocopy)
Duplicate tag values from one header into another.
int headerPutUint8(Header h, rpmTag tag, uint8_t *val, rpm_count_t size)
int headerAddI18NString(Header h, rpmTag tag, const char *string, const char *lang)
Add locale specific tag to header.
RPM_GNUC_DEPRECATED int headerNVR(Header h, const char **np, const char **vp, const char **rp)
Return name, version, release strings from header.
enum rpmTag_e rpmTag
Tags identify data in package headers.
const char * headerGetString(Header h, rpmTag tag)
Return a simple string tag from header.
headerGetFlags_e
Modifier flags for headerGet() operation.
Definition: header.h:166
int headerConvert(Header h, headerConvOps op)
Convert header to/from (legacy) data presentation.
HeaderIterator headerFreeIterator(HeaderIterator hi)
Destroy header tag iterator.
#define RPM_GNUC_DEPRECATED
Definition: rpmutil.h:80
void headerSort(Header h)
Sort tags in header.
int headerNext(HeaderIterator hi, rpmtd td)
Return next tag contents from header.
unsigned int headerGetInstance(Header h)
Return header instance, ie is the header from rpmdb.
RPM_GNUC_DEPRECATED char * headerGetNEVR(Header h, const char **np)
Return (malloc&#39;d) header name-version-release string.
enum headerGetFlags_e headerGetFlags
Modifier flags for headerGet() operation.
int headerDel(Header h, rpmTag tag)
Delete tag in header.
int headerPutUint32(Header h, rpmTag tag, uint32_t *val, rpm_count_t size)
void headerUnsort(Header h)
Restore tags in header to original ordering.
RPM_GNUC_DEPRECATED char * headerGetNEVRA(Header h, const char **np)
Return (malloc&#39;d) header name-version-release.arch string.
Header headerFree(Header h)
Dereference a header instance.
RPM_GNUC_DEPRECATED rpm_color_t headerGetColor(Header h)
Return header color.
int headerPutUint64(Header h, rpmTag tag, uint64_t *val, rpm_count_t size)
int headerPutBin(Header h, rpmTag tag, uint8_t *val, rpm_count_t size)
int headerMod(Header h, rpmtd td)
Modify tag in header.
int headerPutUint16(Header h, rpmTag tag, uint16_t *val, rpm_count_t size)
Header headerLoad(void *uh)
Convert header to in-memory representation.
rpmTag headerNextTag(HeaderIterator hi)
Return next tag number from header.
int headerPut(Header h, rpmtd td, headerPutFlags flags)
Add or append tag to header.
void * headerUnload(Header h)
Convert header to on-disk representation.
int headerPutString(Header h, rpmTag tag, const char *val)
Type-safe methods for inserting tag data to header.
int headerWrite(FD_t fd, Header h, enum hMagic magicp)
Write (with unload) header to file handle.
headerPutFlags_e
Definition: header.h:186
char * headerGetAsString(Header h, rpmTag tag)
Return any non-array tag from header, converted to string.
uint32_t rpm_color_t
Definition: rpmtypes.h:36
Container for rpm tag data (from headers or extensions).
Definition: rpmtd.h:23
enum headerPutFlags_e headerPutFlags
struct headerIterator_s * HeaderIterator
Definition: rpmtypes.h:25
Header headerCopy(Header h)
Duplicate a header.
int headerVerifyInfo(int il, int dl, const void *pev, void *iv, int negate)
Perform simple sanity and range checks on header tag(s).
Header headerNew(void)
Create new (empty) header instance.
hMagic
Include calculation for 8 bytes of (magic, 0)?
Definition: header.h:32
Header headerLink(Header h)
Reference a header instance.
const unsigned char rpm_header_magic[8]
Header magic value.
RPM_GNUC_DEPRECATED int headerNEVRA(Header h, const char **np, uint32_t **ep, const char **vp, const char **rp, const char **ap)
Return name, epoch, version, release, arch strings from header.
char * headerFormat(Header h, const char *fmt, errmsg_t *errmsg)
Return formatted output string from header tags.
enum headerConvOps_e headerConvOps
Header headerUnlink(Header h)
Dereference a header instance.
int headerPutStringArray(Header h, rpmTag tag, const char **val, rpm_count_t size)
uint64_t headerGetNumber(Header h, rpmTag tag)
const char * errmsg_t
Definition: rpmtypes.h:17
headerConvOps_e
Definition: header.h:431
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24