summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Haszlakiewicz <erh+git@nimenees.com>2019-11-23 20:31:14 -0500
committerEric Haszlakiewicz <erh+git@nimenees.com>2019-11-23 20:31:14 -0500
commit7f30afc6e548ca73065588f3dbe35e86ab53ca3c (patch)
tree6716beb564cda8d0952c3ebf911b5f1f43a842ab
parentf19abcf9816074493d3407e4576093d49c15e75e (diff)
downloadjson-c-7f30afc6e548ca73065588f3dbe35e86ab53ca3c.tar.gz
Fix some Windows compile issues, add JSON_EXPORT's, fix bogus character escapes, define __func__ and omit unistd.h if needed.
-rw-r--r--debug.h20
-rw-r--r--json_object.c2
-rw-r--r--json_object.h8
-rw-r--r--random_seed.c4
-rw-r--r--strerror_override_private.h2
-rw-r--r--tests/test_json_pointer.c4
-rw-r--r--tests/test_printbuf.c7
-rw-r--r--tests/test_util_file.c4
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 <string.h>
#include <fcntl.h>
-#include <unistd.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
#include <stdlib.h>
#include <sys/stat.h>
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 <string.h>
#include <fcntl.h>
#include <limits.h>
-#include <unistd.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
#include <sys/types.h>
#include <sys/stat.h>