From 7f30afc6e548ca73065588f3dbe35e86ab53ca3c Mon Sep 17 00:00:00 2001 From: Eric Haszlakiewicz Date: Sat, 23 Nov 2019 20:31:14 -0500 Subject: Fix some Windows compile issues, add JSON_EXPORT's, fix bogus character escapes, define __func__ and omit unistd.h if needed. --- debug.h | 20 ++++++++++++++------ json_object.c | 2 +- json_object.h | 8 ++++---- random_seed.c | 4 +++- strerror_override_private.h | 2 +- tests/test_json_pointer.c | 4 ++-- tests/test_printbuf.c | 7 ++++++- tests/test_util_file.c | 4 +++- 8 files changed, 34 insertions(+), 17 deletions(-) diff --git a/debug.h b/debug.h index 07fcc38..2dc0830 100644 --- a/debug.h +++ b/debug.h @@ -23,14 +23,22 @@ extern "C" { #endif -extern void mc_set_debug(int debug); -extern int mc_get_debug(void); +#ifndef JSON_EXPORT +#if defined(_MSC_VER) +#define JSON_EXPORT __declspec(dllexport) +#else +#define JSON_EXPORT extern +#endif +#endif + +JSON_EXPORT void mc_set_debug(int debug); +JSON_EXPORT int mc_get_debug(void); -extern void mc_set_syslog(int syslog); +JSON_EXPORT void mc_set_syslog(int syslog); -extern void mc_debug(const char *msg, ...); -extern void mc_error(const char *msg, ...); -extern void mc_info(const char *msg, ...); +JSON_EXPORT void mc_debug(const char *msg, ...); +JSON_EXPORT void mc_error(const char *msg, ...); +JSON_EXPORT void mc_info(const char *msg, ...); #ifndef __STRING #define __STRING(x) #x diff --git a/json_object.c b/json_object.c index 192919f..74d5266 100644 --- a/json_object.c +++ b/json_object.c @@ -166,7 +166,7 @@ static int json_escape_str(struct printbuf *pb, const char *str, int len, int fl /* reference counting */ -extern struct json_object* json_object_get(struct json_object *jso) +struct json_object* json_object_get(struct json_object *jso) { if (!jso) return jso; diff --git a/json_object.h b/json_object.h index b0633cc..25cdd03 100644 --- a/json_object.h +++ b/json_object.h @@ -351,7 +351,7 @@ JSON_EXPORT void json_object_set_serializer(json_object *jso, * @param jso unused * @param userdata the pointer that is passed to free(). */ -json_object_delete_fn json_object_free_userdata; +JSON_EXPORT json_object_delete_fn json_object_free_userdata; /** * Copy the jso->_userdata string over to pb as-is. @@ -362,7 +362,7 @@ json_object_delete_fn json_object_free_userdata; * @param level Ignored. * @param flags Ignored. */ -json_object_to_json_string_fn json_object_userdata_to_json_string; +JSON_EXPORT json_object_to_json_string_fn json_object_userdata_to_json_string; #ifdef __clang__ /* } */ @@ -825,7 +825,7 @@ JSON_EXPORT struct json_object* json_object_new_double_s(double d, const char *d * * @return -1 on errors, 0 on success. */ -int json_c_set_serialization_double_format(const char *double_format, int global_or_thread); +JSON_EXPORT int json_c_set_serialization_double_format(const char *double_format, int global_or_thread); @@ -1013,7 +1013,7 @@ typedef int (json_c_shallow_copy_fn)(json_object *src, json_object *parent, cons * * @return 1 on success, -1 on errors, but never 2. */ -json_c_shallow_copy_fn json_c_shallow_copy_default; +JSON_EXPORT json_c_shallow_copy_fn json_c_shallow_copy_default; /** * Copy the contents of the JSON object. diff --git a/random_seed.c b/random_seed.c index 97d9547..797fa94 100644 --- a/random_seed.c +++ b/random_seed.c @@ -128,7 +128,9 @@ retry: #include #include -#include +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ #include #include diff --git a/strerror_override_private.h b/strerror_override_private.h index 5180b4f..0f84754 100644 --- a/strerror_override_private.h +++ b/strerror_override_private.h @@ -7,6 +7,6 @@ */ /* Used by tests to get consistent output */ -extern int _json_c_strerror_enable; +JSON_EXPORT int _json_c_strerror_enable; #endif diff --git a/tests/test_json_pointer.c b/tests/test_json_pointer.c index 97566e2..231360a 100644 --- a/tests/test_json_pointer.c +++ b/tests/test_json_pointer.c @@ -20,7 +20,7 @@ static const char *input_json_str = "{ " "'foo': ['bar', 'baz'], " "'': 0, " "'a/b': 1, " - "'c\%d': 2, " + "'c%d': 2, " "'e^f': 3, " "'g|h': 4, " "'i\\\\j': 5, " @@ -238,7 +238,7 @@ static void test_example_set() assert(0 == json_pointer_set(&jo1, "/", json_object_new_int(9))); printf("PASSED - SET - / == 9\n"); - jo2 = json_tokener_parse("{ 'foo': [ 'bar', 'cod' ], '': 9, 'a/b': 1, 'c\%d': 2, 'e^f': 3, 'g|h': 4, 'i\\\\j': 5, 'k\\\"l': 6, ' ': 7, 'm~n': 8, 'fud': { 'gaw': [ 0, 2, 3, 4 ] } }"); + jo2 = json_tokener_parse("{ 'foo': [ 'bar', 'cod' ], '': 9, 'a/b': 1, 'c%d': 2, 'e^f': 3, 'g|h': 4, 'i\\\\j': 5, 'k\\\"l': 6, ' ': 7, 'm~n': 8, 'fud': { 'gaw': [ 0, 2, 3, 4 ] } }"); assert(json_object_equal(jo2, jo1)); printf("PASSED - SET - Final JSON is: %s\n", json_object_get_string(jo1)); json_object_put(jo2); diff --git a/tests/test_printbuf.c b/tests/test_printbuf.c index 0dd2dc9..06dd13d 100644 --- a/tests/test_printbuf.c +++ b/tests/test_printbuf.c @@ -11,6 +11,11 @@ static void test_basic_printbuf_memset(void); static void test_printbuf_memset_length(void); +#ifndef __func__ +/* VC++ compat */ +#define __func__ __FUNCTION__ +#endif + static void test_basic_printbuf_memset() { struct printbuf *pb; @@ -158,7 +163,7 @@ int main(int argc, char **argv) { int before_resize = 0; - mc_set_debug(1); + MC_SET_DEBUG(1); test_basic_printbuf_memset(); printf("========================================\n"); diff --git a/tests/test_util_file.c b/tests/test_util_file.c index 9aaab23..d414547 100644 --- a/tests/test_util_file.c +++ b/tests/test_util_file.c @@ -6,7 +6,9 @@ #include #include #include -#include +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ #include #include -- cgit v1.2.1