rpm  4.12.0.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 
61 void headerSort(Header h);
62 
67 void headerUnsort(Header h);
68 
75 unsigned int headerSizeof(Header h, int magicp);
76 
86 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate);
87 
94 void * headerUnload(Header h);
95 
102 void * headerExport(Header h, unsigned int * bsize);
103 
112 
119 
126 Header headerLoad(void * uh);
127 
134 Header headerCopyLoad(const void * uh);
135 
137  HEADERIMPORT_COPY = (1 << 0), /* Make copy of blob on import? */
138  HEADERIMPORT_FAST = (1 << 1), /* Faster but less safe? */
139 };
140 
142 
150 Header headerImport(void *blob, unsigned int bsize, headerImportFlags flags);
151 
158 Header headerRead(FD_t fd, int magicp);
159 
167 int headerWrite(FD_t fd, Header h, int magicp);
168 
175 int headerIsEntry(Header h, rpmTagVal tag);
176 
187  HEADERGET_DEFAULT = 0, /* legacy headerGetEntry() behavior */
188  HEADERGET_MINMEM = (1 << 0), /* pointers can refer to header memory */
189  HEADERGET_EXT = (1 << 1), /* lookup extension types too */
190  HEADERGET_RAW = (1 << 2), /* return raw contents (no i18n lookups) */
191  HEADERGET_ALLOC = (1 << 3), /* always allocate memory for all data */
192  HEADERGET_ARGV = (1 << 4), /* return string arrays NULL-terminated */
193 };
194 
196 
205 int headerGet(Header h, rpmTagVal tag, rpmtd td, headerGetFlags flags);
206 
207 
210  HEADERPUT_APPEND = (1 << 0),
211 };
212 
214 
223 int headerPut(Header h, rpmtd td, headerPutFlags flags);
224 
248 int headerPutString(Header h, rpmTagVal tag, const char *val);
249 int headerPutStringArray(Header h, rpmTagVal tag, const char **val, rpm_count_t size);
250 int headerPutBin(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size);
251 int headerPutChar(Header h, rpmTagVal tag, const char *val, rpm_count_t size);
252 int headerPutUint8(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size);
253 int headerPutUint16(Header h, rpmTagVal tag, const uint16_t *val, rpm_count_t size);
254 int headerPutUint32(Header h, rpmTagVal tag, const uint32_t *val, rpm_count_t size);
255 int headerPutUint64(Header h, rpmTagVal tag, const uint64_t *val, rpm_count_t size);
278 int headerAddI18NString(Header h, rpmTagVal tag, const char * string,
279  const char * lang);
280 
288 int headerMod(Header h, rpmtd td);
289 
299 int headerDel(Header h, rpmTagVal tag);
300 
310 char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg);
311 
318 void headerCopyTags(Header headerFrom, Header headerTo,
319  const rpmTagVal * tagstocopy);
320 
327 
334 
341 int headerNext(HeaderIterator hi, rpmtd td);
342 
349 
359 int headerNVR(Header h,
360  const char ** np,
361  const char ** vp,
362  const char ** rp);
363 
375 int headerNEVRA(Header h,
376  const char ** np,
377  uint32_t ** ep,
378  const char ** vp,
379  const char ** rp,
380  const char ** ap);
381 
389 char * headerGetNEVR(Header h, const char ** np );
390 
398 char * headerGetNEVRA(Header h, const char ** np );
399 
400 /* \ingroup header
401  * Return (malloc'd) header (epoch:)version-release string.
402  * @param h header
403  * @retval np name tag value (or NULL)
404  * @return (epoch:)version-release string
405  */
407 char * headerGetEVR(Header h, const char **np);
408 
415 char * headerGetAsString(Header h, rpmTagVal tag);
416 
423 const char * headerGetString(Header h, rpmTagVal tag);
424 
425 /* \ingroup header
426  * Return a simple number tag (or extension) from header
427  * @param h header
428  * @param tag tag to retrieve
429  * @return numeric tag value or 0 on failure
430  */
431 uint64_t headerGetNumber(Header h, rpmTagVal tag);
432 
440 
446 int headerIsSource(Header h);
447 
453 unsigned int headerGetInstance(Header h);
454 
455 typedef enum headerConvOps_e {
459 } headerConvOps;
460 
467 int headerConvert(Header h, int op);
468 
469 #ifdef __cplusplus
470 }
471 #endif
472 
473 #endif /* H_HEADER */
void * headerExport(Header h, unsigned int *bsize)
Export header to on-disk representation.
RPM_GNUC_DEPRECATED char * headerGetNEVRA(Header h, const char **np)
Return (malloc'd) header name-version-release.arch string.
Header headerNew(void)
Create new (empty) header instance.
int headerPutBin(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size)
HeaderIterator headerInitIterator(Header h)
Create header tag iterator.
RPM_GNUC_DEPRECATED int headerNVR(Header h, const char **np, const char **vp, const char **rp)
Return name, version, release strings from header.
RPM_GNUC_DEPRECATED char * headerGetEVR(Header h, const char **np)
unsigned int headerSizeof(Header h, int magicp)
Return size of on-disk header representation in bytes.
Header headerImport(void *blob, unsigned int bsize, headerImportFlags flags)
Import header to in-memory representation.
headerImportFlags_e
Definition: header.h:136
int headerPut(Header h, rpmtd td, headerPutFlags flags)
Add or append tag to header.
void headerCopyTags(Header headerFrom, Header headerTo, const rpmTagVal *tagstocopy)
Duplicate tag values from one header into another.
char * headerFormat(Header h, const char *fmt, errmsg_t *errmsg)
Return formatted output string from header tags.
Header headerFree(Header h)
Dereference a header instance.
HeaderIterator headerFreeIterator(HeaderIterator hi)
Destroy header tag iterator.
Header headerCopyLoad(const void *uh)
Make a copy and convert header to in-memory representation.
Header headerLink(Header h)
Reference a header instance.
#define RPM_GNUC_DEPRECATED
Definition: rpmutil.h:80
int headerDel(Header h, rpmTagVal tag)
Delete tag in header.
headerGetFlags_e
Modifier flags for headerGet() operation.
Definition: header.h:186
RPM_GNUC_DEPRECATED char * headerGetNEVR(Header h, const char **np)
Return (malloc'd) header name-version-release string.
uint32_t rpmFlags
Definition: rpmtypes.h:42
int headerPutString(Header h, rpmTagVal tag, const char *val)
Type-safe methods for inserting tag data to header.
int headerGet(Header h, rpmTagVal tag, rpmtd td, headerGetFlags flags)
Retrieve tag value.
const unsigned char rpm_header_magic[8]
Header magic value.
int headerPutStringArray(Header h, rpmTagVal tag, const char **val, rpm_count_t size)
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:98
uint64_t headerGetNumber(Header h, rpmTagVal tag)
uint32_t rpm_color_t
Definition: rpmtypes.h:38
rpmFlags headerImportFlags
Definition: header.h:141
int headerConvert(Header h, int op)
Convert header to/from (legacy) data presentation.
int headerPutUint8(Header h, rpmTagVal tag, const uint8_t *val, rpm_count_t size)
Header headerLoad(void *uh)
Convert header to in-memory representation.
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
struct headerIterator_s * HeaderIterator
Definition: rpmtypes.h:25
int headerVerifyInfo(int il, int dl, const void *pev, void *iv, int negate)
Perform simple sanity and range checks on header tag(s).
rpmTagVal headerNextTag(HeaderIterator hi)
Return next tag number from header.
uint32_t rpm_count_t
Definition: rpmtypes.h:29
Header headerCopy(Header h)
Duplicate a header.
int headerPutUint64(Header h, rpmTagVal tag, const uint64_t *val, rpm_count_t size)
Header headerReload(Header h, rpmTagVal tag)
Convert header to on-disk representation, and then reload.
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
Header headerRead(FD_t fd, int magicp)
Read (and load) header from file handle.
int headerMod(Header h, rpmtd td)
Modify tag in header.
rpmFlags headerPutFlags
Definition: header.h:213
char * headerGetAsString(Header h, rpmTagVal tag)
Return any non-array tag from header, converted to string.
int headerPutChar(Header h, rpmTagVal tag, const char *val, rpm_count_t size)
unsigned int headerGetInstance(Header h)
Return header instance, ie is the header from rpmdb.
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.
headerPutFlags_e
Definition: header.h:208
int headerNext(HeaderIterator hi, rpmtd td)
Return next tag contents from header.
rpmFlags headerGetFlags
Definition: header.h:195
Container for rpm tag data (from headers or extensions).
Definition: rpmtd.h:26
int headerIsSource(Header h)
Check if header is a source or binary package header.
int headerIsEntry(Header h, rpmTagVal tag)
Check if tag is in header.
void headerSort(Header h)
Sort tags in header.
RPM_GNUC_DEPRECATED rpm_color_t headerGetColor(Header h)
Return header color.
int headerAddI18NString(Header h, rpmTagVal tag, const char *string, const char *lang)
Add locale specific tag to header.
int headerWrite(FD_t fd, Header h, int magicp)
Write (with unload) header to file handle.
enum headerConvOps_e headerConvOps
const char * headerGetString(Header h, rpmTagVal tag)
Return a simple string tag from header.
void headerUnsort(Header h)
Restore tags in header to original ordering.
void * headerUnload(Header h)
Convert header to on-disk representation.
const char * errmsg_t
Definition: rpmtypes.h:17
int headerPutUint16(Header h, rpmTagVal tag, const uint16_t *val, rpm_count_t size)
hMagic
Include calculation for 8 bytes of (magic, 0)?
Definition: header.h:32
int headerPutUint32(Header h, rpmTagVal tag, const uint32_t *val, rpm_count_t size)
headerConvOps_e
Definition: header.h:455