summaryrefslogtreecommitdiff
path: root/rpmdb
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2007-10-10 14:25:29 +0300
committerPanu Matilainen <pmatilai@redhat.com>2007-10-10 14:25:29 +0300
commit8f9eea953f6e0d13cf622ce5ef5d958a55977282 (patch)
tree228dde954ad1f93128398078acbe91e685098d27 /rpmdb
parent67b68cbeb97831844dd06bc6e231a3d78f348bde (diff)
downloadrpm-8f9eea953f6e0d13cf622ce5ef5d958a55977282.tar.gz
rpm-8f9eea953f6e0d13cf622ce5ef5d958a55977282.tar.bz2
rpm-8f9eea953f6e0d13cf622ce5ef5d958a55977282.zip
Move per-header method typedefs etc out of main header.h
- new header_method.h include
Diffstat (limited to 'rpmdb')
-rw-r--r--rpmdb/header.h367
-rw-r--r--rpmdb/header_method.h378
2 files changed, 379 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.
diff --git a/rpmdb/header_method.h b/rpmdb/header_method.h
new file mode 100644
index 000000000..64b8899bb
--- /dev/null
+++ b/rpmdb/header_method.h
@@ -0,0 +1,378 @@
+#ifndef H_HEADER_METHOD
+#define H_HEADER_METHOD
+
+/** \ingroup header
+ * \file rpmdb/header_method.h
+ * Header method prototypes
+ */
+
+#include "header.h"
+
+/** \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;
+};
+
+#endif /* H_HEADER_METHOD */