From: Panu Matilainen Date: Tue, 21 Sep 2010 09:23:18 +0000 (+0300) Subject: Use proper types for tag and format extension functions X-Git-Tag: tznext/4.11.0.1.tizen20130304~1688 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b0d62148a9090fb442fc7bf993f5ef3253c4b0fe;p=tools%2Flibrpm-tizen.git Use proper types for tag and format extension functions - Stuff the tag prototypes into misc.h in lack of better place - Actually use the headerTagFooFunction prototypes instead of void * --- diff --git a/lib/formats.c b/lib/formats.c index 499c5d0..c377370 100644 --- a/lib/formats.c +++ b/lib/formats.c @@ -26,15 +26,12 @@ struct headerFormatFunc_s { rpmtdFormats fmt; /*!< Value of extension */ const char *name; /*!< Name of extension. */ - void *func; /*!< Pointer to formatter function. */ + headerTagFormatFunction func; /*!< Pointer to formatter function. */ }; /* forward declarations */ static const struct headerFormatFunc_s rpmHeaderFormats[]; -void *rpmHeaderFormatFuncByName(const char *fmt); -void *rpmHeaderFormatFuncByValue(rpmtdFormats fmt); - /** * barebones string representation with no extra formatting * @param td tag data container @@ -655,10 +652,10 @@ static char * expandFormat(rpmtd td, char * formatPrefix) return val; } -void *rpmHeaderFormatFuncByName(const char *fmt) +headerTagFormatFunction rpmHeaderFormatFuncByName(const char *fmt) { const struct headerFormatFunc_s * ext; - void *func = NULL; + headerTagFormatFunction func = NULL; for (ext = rpmHeaderFormats; ext->name != NULL; ext++) { if (rstreq(ext->name, fmt)) { @@ -669,10 +666,10 @@ void *rpmHeaderFormatFuncByName(const char *fmt) return func; } -void *rpmHeaderFormatFuncByValue(rpmtdFormats fmt) +headerTagFormatFunction rpmHeaderFormatFuncByValue(rpmtdFormats fmt) { const struct headerFormatFunc_s * ext; - void *func = NULL; + headerTagFormatFunction func = NULL; for (ext = rpmHeaderFormats; ext->name != NULL; ext++) { if (fmt == ext->fmt) { diff --git a/lib/header.c b/lib/header.c index 91dd6bd..55b2d17 100644 --- a/lib/header.c +++ b/lib/header.c @@ -13,6 +13,7 @@ #include #include #include "lib/header_internal.h" +#include "lib/misc.h" /* tag function proto */ #include "debug.h" @@ -99,19 +100,6 @@ static const size_t headerMaxbytes = (32*1024*1024); (((_e)->info.tag >= RPMTAG_HEADERIMAGE) && ((_e)->info.tag < RPMTAG_HEADERREGIONS)) #define ENTRY_IN_REGION(_e) ((_e)->info.offset < 0) -/** \ingroup header - * HEADER_EXT_TAG format function prototype. - * This is allowed to fail, which indicates the tag doesn't exist. - * - * @param h header - * @retval td tag data container - * @param flags modifier flags - * @return 0 on success - */ -typedef int (*headerTagTagFunction) (Header h, rpmtd td, headerGetFlags hgflags); - -extern void *rpmHeaderTagFunc(rpmTag tag); - /* Convert a 64bit value to network byte order. */ static uint64_t htonll( uint64_t n ) { uint32_t *i = (uint32_t*)&n; diff --git a/lib/headerfmt.c b/lib/headerfmt.c index 453ed02..7e86b97 100644 --- a/lib/headerfmt.c +++ b/lib/headerfmt.c @@ -8,6 +8,7 @@ #include #include #include +#include "lib/misc.h" /* format function protos */ #include "debug.h" @@ -16,19 +17,6 @@ #define PARSER_IN_EXPR 2 /** \ingroup header - * HEADER_EXT_FORMAT format function prototype. - * This will only ever be passed RPM_INT32_TYPE or RPM_STRING_TYPE to - * help keep things simple. - * - * @param td tag data container - * @param formatPrefix - * @return formatted string - */ -typedef char * (*headerTagFormatFunction) (rpmtd td, char * formatPrefix); - -extern void *rpmHeaderFormatFuncByName(const char *fmt); - -/** \ingroup header */ typedef struct sprintfTag_s * sprintfTag; struct sprintfTag_s { diff --git a/lib/misc.h b/lib/misc.h index 58a5e70..76c22e1 100644 --- a/lib/misc.h +++ b/lib/misc.h @@ -8,6 +8,7 @@ #include #include +#include /* for headerGetFlags typedef, duh.. */ #ifdef __cplusplus extern "C" { @@ -25,6 +26,19 @@ char * rpmFFlagsString(uint32_t fflags, const char *pad); RPM_GNUC_INTERNAL unsigned int hashFunctionString(const char * string); + +typedef char * (*headerTagFormatFunction) (rpmtd td, char * formatPrefix); +typedef int (*headerTagTagFunction) (Header h, rpmtd td, headerGetFlags hgflags); + +RPM_GNUC_INTERNAL +headerTagTagFunction rpmHeaderTagFunc(rpmTag tag); + +RPM_GNUC_INTERNAL +headerTagFormatFunction rpmHeaderFormatFuncByName(const char *fmt); + +RPM_GNUC_INTERNAL +headerTagFormatFunction rpmHeaderFormatFuncByValue(rpmtdFormats fmt); + /* * These may be called w/ a NULL argument to flush the cache -- they return * -1 if the user can't be found. diff --git a/lib/rpmtd.c b/lib/rpmtd.c index fc7af73..0d023a2 100644 --- a/lib/rpmtd.c +++ b/lib/rpmtd.c @@ -3,13 +3,10 @@ #include #include #include +#include "lib/misc.h" /* format function prototypes */ #include "debug.h" -typedef char * (*headerTagFormatFunction) (rpmtd td, char *formatPrefix); - -extern void *rpmHeaderFormatFuncByValue(rpmtdFormats fmt); - rpmtd rpmtdNew(void) { rpmtd td = xmalloc(sizeof(*td)); diff --git a/lib/tagexts.c b/lib/tagexts.c index 78515c7..9249dd0 100644 --- a/lib/tagexts.c +++ b/lib/tagexts.c @@ -10,19 +10,18 @@ #include #include #include +#include "lib/misc.h" /* tag function proto */ #include "debug.h" struct headerTagFunc_s { rpmTag tag; /*!< Tag of extension. */ - void *func; /*!< Pointer to formatter function. */ + headerTagTagFunction func; /*!< Pointer to formatter function. */ }; /* forward declarations */ static const struct headerTagFunc_s rpmHeaderTagExtensions[]; -void *rpmHeaderTagFunc(rpmTag tag); - /** \ingroup rpmfi * Retrieve file names from header. * @@ -716,10 +715,10 @@ static int filestatusTag(Header h, rpmtd td, headerGetFlags hgflags) return (fc > 0); } -void *rpmHeaderTagFunc(rpmTag tag) +headerTagTagFunction rpmHeaderTagFunc(rpmTag tag) { const struct headerTagFunc_s * ext; - void *func = NULL; + headerTagTagFunction func = NULL; for (ext = rpmHeaderTagExtensions; ext->func != NULL; ext++) { if (ext->tag == tag) {