From 62813daf2c4aaec675652d9c1131a58dfa634e38 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Fri, 3 Oct 2014 15:39:47 +0200 Subject: Avoid exporting non-public symbols --- configure.ac | 7 +++- include/plist/plist.h | 111 +++++++++++++++++++++++--------------------------- src/base64.h | 5 +-- src/bplist.c | 4 +- src/bytearray.h | 7 ++-- src/common.h | 8 ---- src/hashtable.h | 9 ++-- src/plist.c | 96 +++++++++++++++++++++---------------------- src/plist.h | 22 +++++++--- src/ptrarray.h | 9 ++-- src/xplist.c | 4 +- test/Makefile.am | 2 +- 12 files changed, 141 insertions(+), 143 deletions(-) diff --git a/configure.ac b/configure.ac index a149dd9..2bb18a2 100644 --- a/configure.ac +++ b/configure.ac @@ -102,9 +102,14 @@ fi AM_CONDITIONAL([HAVE_CYTHON],[test "x$CYTHON_SUB" = "xcython"]) AC_SUBST([CYTHON_SUB]) -AS_COMPILER_FLAGS(GLOBAL_CFLAGS, "-Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter") +AS_COMPILER_FLAGS(GLOBAL_CFLAGS, "-Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter -fvisibility=hidden") AC_SUBST(GLOBAL_CFLAGS) +case "$GLOBAL_CFLAGS" in + *-fvisibility=hidden*) + AC_DEFINE([HAVE_FVISIBILITY], [1], [Define if compiled with -fvisibility=hidden]) +esac + m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AC_OUTPUT([ diff --git a/include/plist/plist.h b/include/plist/plist.h index 7dbc4ae..c66545a 100644 --- a/include/plist/plist.h +++ b/include/plist/plist.h @@ -39,15 +39,8 @@ extern "C" typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; -#ifdef plist_EXPORTS - #define PLIST_API __declspec( dllexport ) -#else - #define PLIST_API __declspec( dllimport ) -#endif - #else #include -#define PLIST_API #endif #ifdef __llvm__ @@ -130,7 +123,7 @@ extern "C" * @return the created plist * @sa #plist_type */ - PLIST_API plist_t plist_new_dict(void); + plist_t plist_new_dict(void); /** * Create a new root plist_t type #PLIST_ARRAY @@ -138,7 +131,7 @@ extern "C" * @return the created plist * @sa #plist_type */ - PLIST_API plist_t plist_new_array(void); + plist_t plist_new_array(void); /** * Create a new plist_t type #PLIST_STRING @@ -147,7 +140,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_string(const char *val); + plist_t plist_new_string(const char *val); /** * Create a new plist_t type #PLIST_BOOLEAN @@ -156,7 +149,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_bool(uint8_t val); + plist_t plist_new_bool(uint8_t val); /** * Create a new plist_t type #PLIST_UINT @@ -165,7 +158,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_uint(uint64_t val); + plist_t plist_new_uint(uint64_t val); /** * Create a new plist_t type #PLIST_REAL @@ -174,7 +167,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_real(double val); + plist_t plist_new_real(double val); /** * Create a new plist_t type #PLIST_DATA @@ -184,7 +177,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_data(const char *val, uint64_t length); + plist_t plist_new_data(const char *val, uint64_t length); /** * Create a new plist_t type #PLIST_DATE @@ -194,7 +187,7 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_date(int32_t sec, int32_t usec); + plist_t plist_new_date(int32_t sec, int32_t usec); /** * Create a new plist_t type #PLIST_UID @@ -203,14 +196,14 @@ extern "C" * @return the created item * @sa #plist_type */ - PLIST_API plist_t plist_new_uid(uint64_t val); + plist_t plist_new_uid(uint64_t val); /** * Destruct a plist_t node and all its children recursively * * @param plist the plist to free */ - PLIST_API void plist_free(plist_t plist); + void plist_free(plist_t plist); /** * Return a copy of passed node and it's children @@ -218,7 +211,7 @@ extern "C" * @param node the plist to copy * @return copied plist */ - PLIST_API plist_t plist_copy(plist_t node); + plist_t plist_copy(plist_t node); /******************************************** @@ -233,7 +226,7 @@ extern "C" * @param node the node of type #PLIST_ARRAY * @return size of the #PLIST_ARRAY node */ - PLIST_API uint32_t plist_array_get_size(plist_t node); + uint32_t plist_array_get_size(plist_t node); /** * Get the nth item in a #PLIST_ARRAY node. @@ -242,7 +235,7 @@ extern "C" * @param n the index of the item to get. Range is [0, array_size[ * @return the nth item or NULL if node is not of type #PLIST_ARRAY */ - PLIST_API plist_t plist_array_get_item(plist_t node, uint32_t n); + plist_t plist_array_get_item(plist_t node, uint32_t n); /** * Get the index of an item. item must be a member of a #PLIST_ARRAY node. @@ -250,7 +243,7 @@ extern "C" * @param node the node * @return the node index */ - PLIST_API uint32_t plist_array_get_item_index(plist_t node); + uint32_t plist_array_get_item_index(plist_t node); /** * Set the nth item in a #PLIST_ARRAY node. @@ -260,7 +253,7 @@ extern "C" * @param item the new item at index n. The array is responsible for freeing item when it is no longer needed. * @param n the index of the item to get. Range is [0, array_size[. Assert if n is not in range. */ - PLIST_API void plist_array_set_item(plist_t node, plist_t item, uint32_t n); + void plist_array_set_item(plist_t node, plist_t item, uint32_t n); /** * Append a new item at the end of a #PLIST_ARRAY node. @@ -268,7 +261,7 @@ extern "C" * @param node the node of type #PLIST_ARRAY * @param item the new item. The array is responsible for freeing item when it is no longer needed. */ - PLIST_API void plist_array_append_item(plist_t node, plist_t item); + void plist_array_append_item(plist_t node, plist_t item); /** * Insert a new item at position n in a #PLIST_ARRAY node. @@ -277,7 +270,7 @@ extern "C" * @param item the new item to insert. The array is responsible for freeing item when it is no longer needed. * @param n The position at which the node will be stored. Range is [0, array_size[. Assert if n is not in range. */ - PLIST_API void plist_array_insert_item(plist_t node, plist_t item, uint32_t n); + void plist_array_insert_item(plist_t node, plist_t item, uint32_t n); /** * Remove an existing position in a #PLIST_ARRAY node. @@ -286,7 +279,7 @@ extern "C" * @param node the node of type #PLIST_ARRAY * @param n The position to remove. Range is [0, array_size[. Assert if n is not in range. */ - PLIST_API void plist_array_remove_item(plist_t node, uint32_t n); + void plist_array_remove_item(plist_t node, uint32_t n); /******************************************** * * @@ -300,7 +293,7 @@ extern "C" * @param node the node of type #PLIST_DICT * @return size of the #PLIST_DICT node */ - PLIST_API uint32_t plist_dict_get_size(plist_t node); + uint32_t plist_dict_get_size(plist_t node); /** * Create an iterator of a #PLIST_DICT node. @@ -309,7 +302,7 @@ extern "C" * @param node the node of type #PLIST_DICT * @param iter iterator of the #PLIST_DICT node */ - PLIST_API void plist_dict_new_iter(plist_t node, plist_dict_iter *iter); + void plist_dict_new_iter(plist_t node, plist_dict_iter *iter); /** * Increment iterator of a #PLIST_DICT node. @@ -321,7 +314,7 @@ extern "C" * @param val a location to store the value, or NULL. The caller should *not* * free the returned value. */ - PLIST_API void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val); + void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val); /** * Get key associated to an item. Item must be member of a dictionary @@ -329,7 +322,7 @@ extern "C" * @param node the node * @param key a location to store the key. The caller is responsible for freeing the returned string. */ - PLIST_API void plist_dict_get_item_key(plist_t node, char **key); + void plist_dict_get_item_key(plist_t node, char **key); /** * Get the nth item in a #PLIST_DICT node. @@ -339,7 +332,7 @@ extern "C" * @return the item or NULL if node is not of type #PLIST_DICT. The caller should not free * the returned node. */ - PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key); + plist_t plist_dict_get_item(plist_t node, const char* key); /** * Set item identified by key in a #PLIST_DICT node. @@ -350,7 +343,7 @@ extern "C" * @param item the new item associated to key * @param key the identifier of the item to set. */ - PLIST_API void plist_dict_set_item(plist_t node, const char* key, plist_t item); + void plist_dict_set_item(plist_t node, const char* key, plist_t item); /** * Insert a new item into a #PLIST_DICT node. @@ -362,7 +355,7 @@ extern "C" * @param key The identifier of the item to insert. */ PLIST_WARN_DEPRECATED("use plist_dict_set_item instead") - PLIST_API void plist_dict_insert_item(plist_t node, const char* key, plist_t item); + void plist_dict_insert_item(plist_t node, const char* key, plist_t item); /** * Remove an existing position in a #PLIST_DICT node. @@ -371,7 +364,7 @@ extern "C" * @param node the node of type #PLIST_DICT * @param key The identifier of the item to remove. Assert if identifier is not present. */ - PLIST_API void plist_dict_remove_item(plist_t node, const char* key); + void plist_dict_remove_item(plist_t node, const char* key); /** * Merge a dictionary into another. This will add all key/value pairs @@ -381,7 +374,7 @@ extern "C" * @param target pointer to an existing node of type #PLIST_DICT * @param source node of type #PLIST_DICT that should be merged into target */ - PLIST_API void plist_dict_merge(plist_t *target, plist_t source); + void plist_dict_merge(plist_t *target, plist_t source); /******************************************** @@ -395,7 +388,7 @@ extern "C" * * @param node the parent (NULL if node is root) */ - PLIST_API plist_t plist_get_parent(plist_t node); + plist_t plist_get_parent(plist_t node); /** * Get the #plist_type of a node. @@ -403,7 +396,7 @@ extern "C" * @param node the node * @return the type of the node */ - PLIST_API plist_type plist_get_node_type(plist_t node); + plist_type plist_get_node_type(plist_t node); /** * Get the value of a #PLIST_KEY node. @@ -413,7 +406,7 @@ extern "C" * @param val a pointer to a C-string. This function allocates the memory, * caller is responsible for freeing it. */ - PLIST_API void plist_get_key_val(plist_t node, char **val); + void plist_get_key_val(plist_t node, char **val); /** * Get the value of a #PLIST_STRING node. @@ -423,7 +416,7 @@ extern "C" * @param val a pointer to a C-string. This function allocates the memory, * caller is responsible for freeing it. Data is UTF-8 encoded. */ - PLIST_API void plist_get_string_val(plist_t node, char **val); + void plist_get_string_val(plist_t node, char **val); /** * Get the value of a #PLIST_BOOLEAN node. @@ -432,7 +425,7 @@ extern "C" * @param node the node * @param val a pointer to a uint8_t variable. */ - PLIST_API void plist_get_bool_val(plist_t node, uint8_t * val); + void plist_get_bool_val(plist_t node, uint8_t * val); /** * Get the value of a #PLIST_UINT node. @@ -441,7 +434,7 @@ extern "C" * @param node the node * @param val a pointer to a uint64_t variable. */ - PLIST_API void plist_get_uint_val(plist_t node, uint64_t * val); + void plist_get_uint_val(plist_t node, uint64_t * val); /** * Get the value of a #PLIST_REAL node. @@ -450,7 +443,7 @@ extern "C" * @param node the node * @param val a pointer to a double variable. */ - PLIST_API void plist_get_real_val(plist_t node, double *val); + void plist_get_real_val(plist_t node, double *val); /** * Get the value of a #PLIST_DATA node. @@ -461,7 +454,7 @@ extern "C" * caller is responsible for freeing it. * @param length the length of the buffer */ - PLIST_API void plist_get_data_val(plist_t node, char **val, uint64_t * length); + void plist_get_data_val(plist_t node, char **val, uint64_t * length); /** * Get the value of a #PLIST_DATE node. @@ -471,7 +464,7 @@ extern "C" * @param sec a pointer to an int32_t variable. Represents the number of seconds since 01/01/2001. * @param usec a pointer to an int32_t variable. Represents the number of microseconds */ - PLIST_API void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec); + void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec); /** * Get the value of a #PLIST_UID node. @@ -480,7 +473,7 @@ extern "C" * @param node the node * @param val a pointer to a uint64_t variable. */ - PLIST_API void plist_get_uid_val(plist_t node, uint64_t * val); + void plist_get_uid_val(plist_t node, uint64_t * val); /******************************************** @@ -496,7 +489,7 @@ extern "C" * @param node the node * @param val the key value */ - PLIST_API void plist_set_key_val(plist_t node, const char *val); + void plist_set_key_val(plist_t node, const char *val); /** * Set the value of a node. @@ -506,7 +499,7 @@ extern "C" * @param val the string value. The string is copied when set and will be * freed by the node. */ - PLIST_API void plist_set_string_val(plist_t node, const char *val); + void plist_set_string_val(plist_t node, const char *val); /** * Set the value of a node. @@ -515,7 +508,7 @@ extern "C" * @param node the node * @param val the boolean value */ - PLIST_API void plist_set_bool_val(plist_t node, uint8_t val); + void plist_set_bool_val(plist_t node, uint8_t val); /** * Set the value of a node. @@ -524,7 +517,7 @@ extern "C" * @param node the node * @param val the unsigned integer value */ - PLIST_API void plist_set_uint_val(plist_t node, uint64_t val); + void plist_set_uint_val(plist_t node, uint64_t val); /** * Set the value of a node. @@ -533,7 +526,7 @@ extern "C" * @param node the node * @param val the real value */ - PLIST_API void plist_set_real_val(plist_t node, double val); + void plist_set_real_val(plist_t node, double val); /** * Set the value of a node. @@ -544,7 +537,7 @@ extern "C" * be freed by the node. * @param length the length of the buffer */ - PLIST_API void plist_set_data_val(plist_t node, const char *val, uint64_t length); + void plist_set_data_val(plist_t node, const char *val, uint64_t length); /** * Set the value of a node. @@ -554,7 +547,7 @@ extern "C" * @param sec the number of seconds since 01/01/2001 * @param usec the number of microseconds */ - PLIST_API void plist_set_date_val(plist_t node, int32_t sec, int32_t usec); + void plist_set_date_val(plist_t node, int32_t sec, int32_t usec); /** * Set the value of a node. @@ -563,7 +556,7 @@ extern "C" * @param node the node * @param val the unsigned integer value */ - PLIST_API void plist_set_uid_val(plist_t node, uint64_t val); + void plist_set_uid_val(plist_t node, uint64_t val); /******************************************** @@ -580,7 +573,7 @@ extern "C" * caller is responsible for freeing it. Data is UTF-8 encoded. * @param length a pointer to an uint32_t variable. Represents the length of the allocated buffer. */ - PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length); + void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length); /** * Export the #plist_t structure to binary format. @@ -590,7 +583,7 @@ extern "C" * caller is responsible for freeing it. * @param length a pointer to an uint32_t variable. Represents the length of the allocated buffer. */ - PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length); + void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length); /** * Import the #plist_t structure from XML format. @@ -599,7 +592,7 @@ extern "C" * @param length length of the buffer to read. * @param plist a pointer to the imported plist. */ - PLIST_API void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * plist); + void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * plist); /** * Import the #plist_t structure from binary format. @@ -608,7 +601,7 @@ extern "C" * @param length length of the buffer to read. * @param plist a pointer to the imported plist. */ - PLIST_API void plist_from_bin(const char *plist_bin, uint32_t length, plist_t * plist); + void plist_from_bin(const char *plist_bin, uint32_t length, plist_t * plist); /******************************************** @@ -626,7 +619,7 @@ extern "C" * @param length length of the path to access * @return the value to access. */ - PLIST_API plist_t plist_access_path(plist_t plist, uint32_t length, ...); + plist_t plist_access_path(plist_t plist, uint32_t length, ...); /** * Variadic version of #plist_access_path. @@ -636,7 +629,7 @@ extern "C" * @param v list of array's index and dic'st key * @return the value to access. */ - PLIST_API plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v); + plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v); /** * Compare two node values @@ -645,7 +638,7 @@ extern "C" * @param node_r rigth node to compare * @return TRUE is type and value match, FALSE otherwise. */ - PLIST_API char plist_compare_node_value(plist_t node_l, plist_t node_r); + char plist_compare_node_value(plist_t node_l, plist_t node_r); /*@}*/ diff --git a/src/base64.h b/src/base64.h index dbaf104..6eee33b 100644 --- a/src/base64.h +++ b/src/base64.h @@ -21,9 +21,8 @@ #ifndef BASE64_H #define BASE64_H #include -#include "common.h" -_PLIST_INTERNAL char *base64encode(const unsigned char *buf, size_t *size); -_PLIST_INTERNAL unsigned char *base64decode(const char *buf, size_t *size); +char *base64encode(const unsigned char *buf, size_t *size); +unsigned char *base64decode(const char *buf, size_t *size); #endif diff --git a/src/bplist.c b/src/bplist.c index 181c150..bb3465b 100644 --- a/src/bplist.c +++ b/src/bplist.c @@ -599,7 +599,7 @@ static void* copy_plist_data(const void* src) return dstdata; } -void plist_from_bin(const char *plist_bin, uint32_t length, plist_t * plist) +PLIST_API void plist_from_bin(const char *plist_bin, uint32_t length, plist_t * plist) { char *trailer = NULL; @@ -1095,7 +1095,7 @@ static uint16_t *plist_utf8_to_utf16(char *unistr, long size, long *items_read, } -void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length) +PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length) { ptrarray_t* objects = NULL; hashtable_t* ref_table = NULL; diff --git a/src/bytearray.h b/src/bytearray.h index 3e67d7e..1613143 100644 --- a/src/bytearray.h +++ b/src/bytearray.h @@ -21,7 +21,6 @@ #ifndef BYTEARRAY_H #define BYTEARRAY_H #include -#include "common.h" typedef struct bytearray_t { void *data; @@ -29,8 +28,8 @@ typedef struct bytearray_t { size_t capacity; } bytearray_t; -_PLIST_INTERNAL bytearray_t *byte_array_new(); -_PLIST_INTERNAL void byte_array_free(bytearray_t *ba); -_PLIST_INTERNAL void byte_array_append(bytearray_t *ba, void *buf, size_t len); +bytearray_t *byte_array_new(); +void byte_array_free(bytearray_t *ba); +void byte_array_append(bytearray_t *ba, void *buf, size_t len); #endif diff --git a/src/common.h b/src/common.h index c71ef4a..657e049 100644 --- a/src/common.h +++ b/src/common.h @@ -17,12 +17,4 @@ #endif #endif -#if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__CYGWIN__) && !defined(WIN32) -# define _PLIST_INTERNAL __attribute__((visibility("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define _PLIST_INTERNAL __hidden -#else /* not gcc >= 4 and not Sun Studio >= 8 */ -# define _PLIST_INTERNAL -#endif /* GNUC >= 4 */ - #endif diff --git a/src/hashtable.h b/src/hashtable.h index 8c72c82..c28de91 100644 --- a/src/hashtable.h +++ b/src/hashtable.h @@ -21,7 +21,6 @@ #ifndef HASHTABLE_H #define HASHTABLE_H #include -#include "common.h" typedef struct hashentry_t { void *key; @@ -39,10 +38,10 @@ typedef struct hashtable_t { compare_func_t compare_func; } hashtable_t; -_PLIST_INTERNAL hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func); -_PLIST_INTERNAL void hash_table_destroy(hashtable_t *ht); +hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func); +void hash_table_destroy(hashtable_t *ht); -_PLIST_INTERNAL void hash_table_insert(hashtable_t* ht, void *key, void *value); -_PLIST_INTERNAL void* hash_table_lookup(hashtable_t* ht, void *key); +void hash_table_insert(hashtable_t* ht, void *key, void *value); +void* hash_table_lookup(hashtable_t* ht, void *key); #endif diff --git a/src/plist.c b/src/plist.c index 317a758..c38b6eb 100644 --- a/src/plist.c +++ b/src/plist.c @@ -87,14 +87,14 @@ static int plist_free_node(node_t* node) return node_index; } -plist_t plist_new_dict(void) +PLIST_API plist_t plist_new_dict(void) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_DICT; return plist_new_node(data); } -plist_t plist_new_array(void) +PLIST_API plist_t plist_new_array(void) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_ARRAY; @@ -111,7 +111,7 @@ static plist_t plist_new_key(const char *val) return plist_new_node(data); } -plist_t plist_new_string(const char *val) +PLIST_API plist_t plist_new_string(const char *val) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_STRING; @@ -120,7 +120,7 @@ plist_t plist_new_string(const char *val) return plist_new_node(data); } -plist_t plist_new_bool(uint8_t val) +PLIST_API plist_t plist_new_bool(uint8_t val) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_BOOLEAN; @@ -129,7 +129,7 @@ plist_t plist_new_bool(uint8_t val) return plist_new_node(data); } -plist_t plist_new_uint(uint64_t val) +PLIST_API plist_t plist_new_uint(uint64_t val) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_UINT; @@ -138,7 +138,7 @@ plist_t plist_new_uint(uint64_t val) return plist_new_node(data); } -plist_t plist_new_uid(uint64_t val) +PLIST_API plist_t plist_new_uid(uint64_t val) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_UID; @@ -147,7 +147,7 @@ plist_t plist_new_uid(uint64_t val) return plist_new_node(data); } -plist_t plist_new_real(double val) +PLIST_API plist_t plist_new_real(double val) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_REAL; @@ -156,7 +156,7 @@ plist_t plist_new_real(double val) return plist_new_node(data); } -plist_t plist_new_data(const char *val, uint64_t length) +PLIST_API plist_t plist_new_data(const char *val, uint64_t length) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_DATA; @@ -166,7 +166,7 @@ plist_t plist_new_data(const char *val, uint64_t length) return plist_new_node(data); } -plist_t plist_new_date(int32_t sec, int32_t usec) +PLIST_API plist_t plist_new_date(int32_t sec, int32_t usec) { plist_data_t data = plist_new_plist_data(); data->type = PLIST_DATE; @@ -176,7 +176,7 @@ plist_t plist_new_date(int32_t sec, int32_t usec) return plist_new_node(data); } -void plist_free(plist_t plist) +PLIST_API void plist_free(plist_t plist) { if (plist) { @@ -231,14 +231,14 @@ static void plist_copy_node(node_t *node, void *parent_node_ptr) node_iterator_destroy(ni); } -plist_t plist_copy(plist_t node) +PLIST_API plist_t plist_copy(plist_t node) { plist_t copied = NULL; plist_copy_node(node, &copied); return copied; } -uint32_t plist_array_get_size(plist_t node) +PLIST_API uint32_t plist_array_get_size(plist_t node) { uint32_t ret = 0; if (node && PLIST_ARRAY == plist_get_node_type(node)) @@ -248,7 +248,7 @@ uint32_t plist_array_get_size(plist_t node) return ret; } -plist_t plist_array_get_item(plist_t node, uint32_t n) +PLIST_API plist_t plist_array_get_item(plist_t node, uint32_t n) { plist_t ret = NULL; if (node && PLIST_ARRAY == plist_get_node_type(node)) @@ -258,7 +258,7 @@ plist_t plist_array_get_item(plist_t node, uint32_t n) return ret; } -uint32_t plist_array_get_item_index(plist_t node) +PLIST_API uint32_t plist_array_get_item_index(plist_t node) { plist_t father = plist_get_parent(node); if (PLIST_ARRAY == plist_get_node_type(father)) @@ -268,7 +268,7 @@ uint32_t plist_array_get_item_index(plist_t node) return 0; } -void plist_array_set_item(plist_t node, plist_t item, uint32_t n) +PLIST_API void plist_array_set_item(plist_t node, plist_t item, uint32_t n) { if (node && PLIST_ARRAY == plist_get_node_type(node)) { @@ -286,7 +286,7 @@ void plist_array_set_item(plist_t node, plist_t item, uint32_t n) return; } -void plist_array_append_item(plist_t node, plist_t item) +PLIST_API void plist_array_append_item(plist_t node, plist_t item) { if (node && PLIST_ARRAY == plist_get_node_type(node)) { @@ -295,7 +295,7 @@ void plist_array_append_item(plist_t node, plist_t item) return; } -void plist_array_insert_item(plist_t node, plist_t item, uint32_t n) +PLIST_API void plist_array_insert_item(plist_t node, plist_t item, uint32_t n) { if (node && PLIST_ARRAY == plist_get_node_type(node)) { @@ -304,7 +304,7 @@ void plist_array_insert_item(plist_t node, plist_t item, uint32_t n) return; } -void plist_array_remove_item(plist_t node, uint32_t n) +PLIST_API void plist_array_remove_item(plist_t node, uint32_t n) { if (node && PLIST_ARRAY == plist_get_node_type(node)) { @@ -317,7 +317,7 @@ void plist_array_remove_item(plist_t node, uint32_t n) return; } -uint32_t plist_dict_get_size(plist_t node) +PLIST_API uint32_t plist_dict_get_size(plist_t node) { uint32_t ret = 0; if (node && PLIST_DICT == plist_get_node_type(node)) @@ -327,7 +327,7 @@ uint32_t plist_dict_get_size(plist_t node) return ret; } -void plist_dict_new_iter(plist_t node, plist_dict_iter *iter) +PLIST_API void plist_dict_new_iter(plist_t node, plist_dict_iter *iter) { if (iter && *iter == NULL) { @@ -337,7 +337,7 @@ void plist_dict_new_iter(plist_t node, plist_dict_iter *iter) return; } -void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val) +PLIST_API void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val) { uint32_t* iter_int = (uint32_t*) iter; @@ -368,7 +368,7 @@ void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_ return; } -void plist_dict_get_item_key(plist_t node, char **key) +PLIST_API void plist_dict_get_item_key(plist_t node, char **key) { plist_t father = plist_get_parent(node); if (PLIST_DICT == plist_get_node_type(father)) @@ -377,7 +377,7 @@ void plist_dict_get_item_key(plist_t node, char **key) } } -plist_t plist_dict_get_item(plist_t node, const char* key) +PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key) { plist_t ret = NULL; @@ -403,7 +403,7 @@ plist_t plist_dict_get_item(plist_t node, const char* key) return ret; } -void plist_dict_set_item(plist_t node, const char* key, plist_t item) +PLIST_API void plist_dict_set_item(plist_t node, const char* key, plist_t item) { if (node && PLIST_DICT == plist_get_node_type(node)) { node_t* old_item = plist_dict_get_item(node, key); @@ -422,12 +422,12 @@ void plist_dict_set_item(plist_t node, const char* key, plist_t item) return; } -void plist_dict_insert_item(plist_t node, const char* key, plist_t item) +PLIST_API void plist_dict_insert_item(plist_t node, const char* key, plist_t item) { plist_dict_set_item(node, key, item); } -void plist_dict_remove_item(plist_t node, const char* key) +PLIST_API void plist_dict_remove_item(plist_t node, const char* key) { if (node && PLIST_DICT == plist_get_node_type(node)) { @@ -442,7 +442,7 @@ void plist_dict_remove_item(plist_t node, const char* key) return; } -void plist_dict_merge(plist_t *target, plist_t source) +PLIST_API void plist_dict_merge(plist_t *target, plist_t source) { if (!target || !*target || (plist_get_node_type(*target) != PLIST_DICT) || !source || (plist_get_node_type(source) != PLIST_DICT)) return; @@ -466,7 +466,7 @@ void plist_dict_merge(plist_t *target, plist_t source) free(it); } -plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v) +PLIST_API plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v) { plist_t current = plist; plist_type type = PLIST_NONE; @@ -490,7 +490,7 @@ plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v) return current; } -plist_t plist_access_path(plist_t plist, uint32_t length, ...) +PLIST_API plist_t plist_access_path(plist_t plist, uint32_t length, ...) { plist_t ret = NULL; va_list v; @@ -545,12 +545,12 @@ static void plist_get_type_and_value(plist_t node, plist_type * type, void *valu } } -plist_t plist_get_parent(plist_t node) +PLIST_API plist_t plist_get_parent(plist_t node) { return node ? (plist_t) ((node_t*) node)->parent : NULL; } -plist_type plist_get_node_type(plist_t node) +PLIST_API plist_type plist_get_node_type(plist_t node) { if (node) { @@ -561,7 +561,7 @@ plist_type plist_get_node_type(plist_t node) return PLIST_NONE; } -void plist_get_key_val(plist_t node, char **val) +PLIST_API void plist_get_key_val(plist_t node, char **val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -570,7 +570,7 @@ void plist_get_key_val(plist_t node, char **val) assert(length == strlen(*val)); } -void plist_get_string_val(plist_t node, char **val) +PLIST_API void plist_get_string_val(plist_t node, char **val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -579,7 +579,7 @@ void plist_get_string_val(plist_t node, char **val) assert(length == strlen(*val)); } -void plist_get_bool_val(plist_t node, uint8_t * val) +PLIST_API void plist_get_bool_val(plist_t node, uint8_t * val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -588,7 +588,7 @@ void plist_get_bool_val(plist_t node, uint8_t * val) assert(length == sizeof(uint8_t)); } -void plist_get_uint_val(plist_t node, uint64_t * val) +PLIST_API void plist_get_uint_val(plist_t node, uint64_t * val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -597,7 +597,7 @@ void plist_get_uint_val(plist_t node, uint64_t * val) assert(length == sizeof(uint64_t)); } -void plist_get_uid_val(plist_t node, uint64_t * val) +PLIST_API void plist_get_uid_val(plist_t node, uint64_t * val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -606,7 +606,7 @@ void plist_get_uid_val(plist_t node, uint64_t * val) assert(length == sizeof(uint64_t)); } -void plist_get_real_val(plist_t node, double *val) +PLIST_API void plist_get_real_val(plist_t node, double *val) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -615,14 +615,14 @@ void plist_get_real_val(plist_t node, double *val) assert(length == sizeof(double)); } -void plist_get_data_val(plist_t node, char **val, uint64_t * length) +PLIST_API void plist_get_data_val(plist_t node, char **val, uint64_t * length) { plist_type type = plist_get_node_type(node); if (PLIST_DATA == type) plist_get_type_and_value(node, &type, (void *) val, length); } -void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec) +PLIST_API void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec) { plist_type type = plist_get_node_type(node); uint64_t length = 0; @@ -695,7 +695,7 @@ int plist_data_compare(const void *a, const void *b) return FALSE; } -char plist_compare_node_value(plist_t node_l, plist_t node_r) +PLIST_API char plist_compare_node_value(plist_t node_l, plist_t node_r) { return plist_data_compare(node_l, node_r); } @@ -757,42 +757,42 @@ static void plist_set_element_val(plist_t node, plist_type type, const void *val } } -void plist_set_key_val(plist_t node, const char *val) +PLIST_API void plist_set_key_val(plist_t node, const char *val) { plist_set_element_val(node, PLIST_KEY, val, strlen(val)); } -void plist_set_string_val(plist_t node, const char *val) +PLIST_API void plist_set_string_val(plist_t node, const char *val) { plist_set_element_val(node, PLIST_STRING, val, strlen(val)); } -void plist_set_bool_val(plist_t node, uint8_t val) +PLIST_API void plist_set_bool_val(plist_t node, uint8_t val) { plist_set_element_val(node, PLIST_BOOLEAN, &val, sizeof(uint8_t)); } -void plist_set_uint_val(plist_t node, uint64_t val) +PLIST_API void plist_set_uint_val(plist_t node, uint64_t val) { plist_set_element_val(node, PLIST_UINT, &val, sizeof(uint64_t)); } -void plist_set_uid_val(plist_t node, uint64_t val) +PLIST_API void plist_set_uid_val(plist_t node, uint64_t val) { plist_set_element_val(node, PLIST_UID, &val, sizeof(uint64_t)); } -void plist_set_real_val(plist_t node, double val) +PLIST_API void plist_set_real_val(plist_t node, double val) { plist_set_element_val(node, PLIST_REAL, &val, sizeof(double)); } -void plist_set_data_val(plist_t node, const char *val, uint64_t length) +PLIST_API void plist_set_data_val(plist_t node, const char *val, uint64_t length) { plist_set_element_val(node, PLIST_DATA, val, length); } -void plist_set_date_val(plist_t node, int32_t sec, int32_t usec) +PLIST_API void plist_set_date_val(plist_t node, int32_t sec, int32_t usec) { struct timeval val = { sec, usec }; plist_set_element_val(node, PLIST_DATE, &val, sizeof(struct timeval)); diff --git a/src/plist.h b/src/plist.h index 2a9a3b5..822144d 100644 --- a/src/plist.h +++ b/src/plist.h @@ -22,8 +22,11 @@ #ifndef PLIST_H #define PLIST_H +#ifdef HAVE_CONFIG_H +#include +#endif + #include "plist/plist.h" -#include "common.h" #include #include @@ -34,6 +37,15 @@ #pragma warning(disable:4244) #endif +#ifdef WIN32 + #define PLIST_API __declspec( dllexport ) +#else + #ifdef HAVE_FVISIBILITY + #define PLIST_API __attribute__((visibility("default"))) + #else + #define PLIST_API + #endif +#endif struct plist_data_s { @@ -52,10 +64,10 @@ struct plist_data_s typedef struct plist_data_s *plist_data_t; -_PLIST_INTERNAL plist_t plist_new_node(plist_data_t data); -_PLIST_INTERNAL plist_data_t plist_get_data(const plist_t node); -_PLIST_INTERNAL plist_data_t plist_new_plist_data(void); -_PLIST_INTERNAL int plist_data_compare(const void *a, const void *b); +plist_t plist_new_node(plist_data_t data); +plist_data_t plist_get_data(const plist_t node); +plist_data_t plist_new_plist_data(void); +int plist_data_compare(const void *a, const void *b); #endif diff --git a/src/ptrarray.h b/src/ptrarray.h index 84f9ef0..e8a3c88 100644 --- a/src/ptrarray.h +++ b/src/ptrarray.h @@ -21,7 +21,6 @@ #ifndef PTRARRAY_H #define PTRARRAY_H #include -#include "common.h" typedef struct ptrarray_t { void **pdata; @@ -30,8 +29,8 @@ typedef struct ptrarray_t { size_t capacity_step; } ptrarray_t; -_PLIST_INTERNAL ptrarray_t *ptr_array_new(int capacity); -_PLIST_INTERNAL void ptr_array_free(ptrarray_t *pa); -_PLIST_INTERNAL void ptr_array_add(ptrarray_t *pa, void *data); -_PLIST_INTERNAL void* ptr_array_index(ptrarray_t *pa, size_t index); +ptrarray_t *ptr_array_new(int capacity); +void ptr_array_free(ptrarray_t *pa); +void ptr_array_add(ptrarray_t *pa, void *data); +void* ptr_array_index(ptrarray_t *pa, size_t index); #endif diff --git a/src/xplist.c b/src/xplist.c index a889cb5..4c106aa 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -513,7 +513,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) } } -void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length) +PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length) { xmlDocPtr plist_doc = NULL; xmlNodePtr root_node = NULL; @@ -555,7 +555,7 @@ void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length) } } -void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * plist) +PLIST_API void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * plist) { xmlDocPtr plist_doc = xmlParseMemory(plist_xml, length); xmlNodePtr root_node = xmlDocGetRootElement(plist_doc); diff --git a/test/Makefile.am b/test/Makefile.am index 3bd3e5d..77122be 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -4,7 +4,7 @@ AM_LDFLAGS = noinst_PROGRAMS = plist_cmp plist_test plist_cmp_SOURCES = plist_cmp.c -plist_cmp_LDADD = $(top_builddir)/src/libplist.la +plist_cmp_LDADD = $(top_builddir)/src/libplist.la $(top_builddir)/libcnary/libcnary.la plist_test_SOURCES = plist_test.c plist_test_LDADD = $(top_builddir)/src/libplist.la -- cgit v1.1-32-gdbae