summaryrefslogtreecommitdiff
path: root/rpmdb/header.h
diff options
context:
space:
mode:
Diffstat (limited to 'rpmdb/header.h')
-rw-r--r--rpmdb/header.h367
1 files changed, 1 insertions, 366 deletions
diff --git a/rpmdb/header.h b/rpmdb/header.h
index ef6cc7db3..1eee67b32 100644
--- a/rpmdb/header.h
+++ b/rpmdb/header.h
@@ -288,372 +288,7 @@ typedef struct HE_s {
hCNT_t cnt;
} * HE_t;
-/** \ingroup header
- * Create new (empty) header instance.
- * @return header
- */
-typedef
-Header (*HDRnew) (void);
-
-/** \ingroup header
- * Dereference a header instance.
- * @param h header
- * @return NULL always
- */
-typedef
-Header (*HDRfree) (Header h);
-
-/** \ingroup header
- * Reference a header instance.
- * @param h header
- * @return referenced header instance
- */
-typedef
-Header (*HDRlink) (Header h);
-
-/** \ingroup header
- * Dereference a header instance.
- * @param h header
- * @return NULL always
- */
-typedef
-Header (*HDRunlink) (Header h);
-
-/** \ingroup header
- * Sort tags in header.
- * @todo Eliminate from API.
- * @param h header
- */
-typedef
-void (*HDRsort) (Header h);
-
-/** \ingroup header
- * Restore tags in header to original ordering.
- * @todo Eliminate from API.
- * @param h header
- */
-typedef
-void (*HDRunsort) (Header h);
-
-/** \ingroup header
- * Return size of on-disk header representation in bytes.
- * @param h header
- * @param magicp include size of 8 bytes for (magic, 0)?
- * @return size of on-disk header
- */
-typedef
-unsigned int (*HDRsizeof) (Header h, enum hMagic magicp);
-
-/** \ingroup header
- * Convert header to on-disk representation.
- * @param h header (with pointers)
- * @return on-disk header blob (i.e. with offsets)
- */
-typedef
-void * (*HDRunload) (Header h);
-
-/** \ingroup header
- * Convert header to on-disk representation, and then reload.
- * This is used to insure that all header data is in one chunk.
- * @param h header (with pointers)
- * @param tag region tag
- * @return on-disk header (with offsets)
- */
-typedef
-Header (*HDRreload) (Header h, int tag);
-
-/** \ingroup header
- * Duplicate a header.
- * @param h header
- * @return new header instance
- */
-typedef
-Header (*HDRcopy) (Header h);
-
-/** \ingroup header
- * Convert header to in-memory representation.
- * @param uh on-disk header blob (i.e. with offsets)
- * @return header
- */
-typedef
-Header (*HDRload) (void * uh);
-
-/** \ingroup header
- * Make a copy and convert header to in-memory representation.
- * @param uh on-disk header blob (i.e. with offsets)
- * @return header
- */
-typedef
-Header (*HDRcopyload) (const void * uh);
-
-/** \ingroup header
- * Read (and load) header from file handle.
- * @param fd file handle
- * @param magicp read (and verify) 8 bytes of (magic, 0)?
- * @return header (or NULL on error)
- */
-typedef
-Header (*HDRread) (FD_t fd, enum hMagic magicp);
-
-/** \ingroup header
- * Write (with unload) header to file handle.
- * @param fd file handle
- * @param h header
- * @param magicp prefix write with 8 bytes of (magic, 0)?
- * @return 0 on success, 1 on error
- */
-typedef
-int (*HDRwrite) (FD_t fd, Header h, enum hMagic magicp);
-
-/** \ingroup header
- * Check if tag is in header.
- * @param h header
- * @param tag tag
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRisentry) (Header h, int_32 tag);
-
-/** \ingroup header
- * Free data allocated when retrieved from header.
- * @param h header
- * @param data address of data (or NULL)
- * @param type type of data (or -1 to force free)
- * @return NULL always
- */
-typedef
-void * (*HDRfreetag) (Header h,
- const void * data, rpmTagType type);
-
-/** \ingroup header
- * Retrieve tag value.
- * Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with
- * RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE
- * entry is present).
- *
- * @param h header
- * @param tag tag
- * @retval type address of tag value data type (or NULL)
- * @retval p address of pointer to tag value(s) (or NULL)
- * @retval c address of number of values (or NULL)
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRget) (Header h, int_32 tag,
- hTYP_t type,
- void ** p,
- hCNT_t c);
-
-/** \ingroup header
- * Retrieve tag value using header internal array.
- * Get an entry using as little extra RAM as possible to return the tag value.
- * This is only an issue for RPM_STRING_ARRAY_TYPE.
- *
- * @param h header
- * @param tag tag
- * @retval type address of tag value data type (or NULL)
- * @retval p address of pointer to tag value(s) (or NULL)
- * @retval c address of number of values (or NULL)
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRgetmin) (Header h, int_32 tag,
- hTYP_t type,
- hPTR_t * p,
- hCNT_t c);
-
-/** \ingroup header
- * Add tag to header.
- * Duplicate tags are okay, but only defined for iteration (with the
- * exceptions noted below). While you are allowed to add i18n string
- * arrays through this function, you probably don't mean to. See
- * headerAddI18NString() instead.
- *
- * @param h header
- * @param tag tag
- * @param type tag value data type
- * @param p pointer to tag value(s)
- * @param c number of values
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRadd) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
-
-/** \ingroup header
- * Append element to tag array in header.
- * Appends item p to entry w/ tag and type as passed. Won't work on
- * RPM_STRING_TYPE. Any pointers into header memory returned from
- * headerGetEntryMinMemory() for this entry are invalid after this
- * call has been made!
- *
- * @param h header
- * @param tag tag
- * @param type tag value data type
- * @param p pointer to tag value(s)
- * @param c number of values
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
-
-/** \ingroup header
- * Add or append element to tag array in header.
- * @todo Arg "p" should have const.
- * @param h header
- * @param tag tag
- * @param type tag value data type
- * @param p pointer to tag value(s)
- * @param c number of values
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRaddorappend) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
-
-/** \ingroup header
- * Add locale specific tag to header.
- * A NULL lang is interpreted as the C locale. Here are the rules:
- * \verbatim
- * - If the tag isn't in the header, it's added with the passed string
- * as new value.
- * - If the tag occurs multiple times in entry, which tag is affected
- * by the operation is undefined.
- * - If the tag is in the header w/ this language, the entry is
- * *replaced* (like headerModifyEntry()).
- * \endverbatim
- * This function is intended to just "do the right thing". If you need
- * more fine grained control use headerAddEntry() and headerModifyEntry().
- *
- * @param h header
- * @param tag tag
- * @param string tag value
- * @param lang locale
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRaddi18n) (Header h, int_32 tag, const char * string,
- const char * lang);
-
-/** \ingroup header
- * Modify tag in header.
- * If there are multiple entries with this tag, the first one gets replaced.
- * @param h header
- * @param tag tag
- * @param type tag value data type
- * @param p pointer to tag value(s)
- * @param c number of values
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRmodify) (Header h, int_32 tag, int_32 type, const void * p, int_32 c);
-
-/** \ingroup header
- * Delete tag in header.
- * Removes all entries of type tag from the header, returns 1 if none were
- * found.
- *
- * @param h header
- * @param tag tag
- * @return 0 on success, 1 on failure (INCONSISTENT)
- */
-typedef
-int (*HDRremove) (Header h, int_32 tag);
-
-/** \ingroup header
- * Return formatted output string from header tags.
- * The returned string must be free()d.
- *
- * @param h header
- * @param fmt format to use
- * @param tags array of tag name/value pairs
- * @param extensions chained table of formatting extensions.
- * @retval errmsg error message (if any)
- * @return formatted output string (malloc'ed)
- */
-typedef
-char * (*HDRsprintf) (Header h, const char * fmt,
- const struct headerTagTableEntry_s * tags,
- const struct headerSprintfExtension_s * extensions,
- errmsg_t * errmsg);
-
-/** \ingroup header
- * Duplicate tag values from one header into another.
- * @param headerFrom source header
- * @param headerTo destination header
- * @param tagstocopy array of tags that are copied
- */
-typedef
-void (*HDRcopytags) (Header headerFrom, Header headerTo, hTAG_t tagstocopy);
-
-/** \ingroup header
- * Destroy header tag iterator.
- * @param hi header tag iterator
- * @return NULL always
- */
-typedef
-HeaderIterator (*HDRfreeiter) (HeaderIterator hi);
-
-/** \ingroup header
- * Create header tag iterator.
- * @param h header
- * @return header tag iterator
- */
-typedef
-HeaderIterator (*HDRinititer) (Header h);
-
-/** \ingroup header
- * Return next tag from header.
- * @param hi header tag iterator
- * @retval tag address of tag
- * @retval type address of tag value data type
- * @retval p address of pointer to tag value(s)
- * @retval c address of number of values
- * @return 1 on success, 0 on failure
- */
-typedef
-int (*HDRnextiter) (HeaderIterator hi,
- hTAG_t tag,
- hTYP_t type,
- hPTR_t * p,
- hCNT_t c);
-
-/** \ingroup header
- * Header method vectors.
- */
-typedef struct HV_s * HV_t;
-struct HV_s {
- HDRlink hdrlink;
- HDRunlink hdrunlink;
- HDRfree hdrfree;
- HDRnew hdrnew;
- HDRsort hdrsort;
- HDRunsort hdrunsort;
- HDRsizeof hdrsizeof;
- HDRunload hdrunload;
- HDRreload hdrreload;
- HDRcopy hdrcopy;
- HDRload hdrload;
- HDRcopyload hdrcopyload;
- HDRread hdrread;
- HDRwrite hdrwrite;
- HDRisentry hdrisentry;
- HDRfreetag hdrfreetag;
- HDRget hdrget;
- HDRgetmin hdrgetmin;
- HDRadd hdradd;
- HDRappend hdrappend;
- HDRaddorappend hdraddorappend;
- HDRaddi18n hdraddi18n;
- HDRmodify hdrmodify;
- HDRremove hdrremove;
- HDRsprintf hdrsprintf;
- HDRcopytags hdrcopytags;
- HDRfreeiter hdrfreeiter;
- HDRinititer hdrinititer;
- HDRnextiter hdrnextiter;
- void * hdrvecs;
- void * hdrdata;
- int hdrversion;
-};
+#include "header_method.h"
/** \ingroup header
* Free data allocated when retrieved from header.