From 6eca65617aacd19f4928acd5766b8dd20eda0b34 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 13 Aug 2022 20:37:03 -0700 Subject: [PATCH 1/3] Fix build with clang-15+ Fixes json_util.c:63:35: error: a function declaration without a prototype is deprecated in all versions of C [-We rror,-Wstrict-prototypes] const char *json_util_get_last_err() ^ void Signed-off-by: Khem Raj --- json_util.c | 2 +- tests/test1.c | 6 +++--- tests/test4.c | 2 +- tests/test_cast.c | 2 +- tests/test_charcase.c | 2 +- tests/test_parse.c | 8 ++++---- tests/test_printbuf.c | 4 ++-- tests/test_util_file.c | 6 +++--- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/json_util.c b/json_util.c index 952770a..83d9c68 100644 --- a/json_util.c +++ b/json_util.c @@ -60,7 +60,7 @@ static int _json_object_to_fd(int fd, struct json_object *obj, int flags, const static char _last_err[256] = ""; -const char *json_util_get_last_err() +const char *json_util_get_last_err(void) { if (_last_err[0] == '\0') return NULL; diff --git a/tests/test1.c b/tests/test1.c index befd246..d28811b 100644 --- a/tests/test1.c +++ b/tests/test1.c @@ -61,7 +61,7 @@ static const char *to_json_string(json_object *obj, int flags) #endif json_object *make_array(void); -json_object *make_array() +json_object *make_array(void) { json_object *my_array; @@ -77,7 +77,7 @@ json_object *make_array() } void test_array_del_idx(void); -void test_array_del_idx() +void test_array_del_idx(void) { int rc; size_t ii; @@ -143,7 +143,7 @@ void test_array_del_idx() } void test_array_list_expand_internal(void); -void test_array_list_expand_internal() +void test_array_list_expand_internal(void) { int rc; size_t ii; diff --git a/tests/test4.c b/tests/test4.c index 749459d..1e136e5 100644 --- a/tests/test4.c +++ b/tests/test4.c @@ -31,7 +31,7 @@ void print_hex(const char *s) } static void test_lot_of_adds(void); -static void test_lot_of_adds() +static void test_lot_of_adds(void) { int ii; char key[50]; diff --git a/tests/test_cast.c b/tests/test_cast.c index 276b461..02e19ea 100644 --- a/tests/test_cast.c +++ b/tests/test_cast.c @@ -97,7 +97,7 @@ static void getit(struct json_object *new_obj, const char *field) printf("new_obj.%s json_object_get_double()=%f\n", field, json_object_get_double(o)); } -static void checktype_header() +static void checktype_header(void) { printf("json_object_is_type: %s,%s,%s,%s,%s,%s,%s\n", json_type_to_name(json_type_null), json_type_to_name(json_type_boolean), json_type_to_name(json_type_double), diff --git a/tests/test_charcase.c b/tests/test_charcase.c index c6e783e..8ffcb68 100644 --- a/tests/test_charcase.c +++ b/tests/test_charcase.c @@ -22,7 +22,7 @@ int main(int argc, char **argv) } /* make sure only lowercase forms are parsed in strict mode */ -static void test_case_parse() +static void test_case_parse(void) { struct json_tokener *tok; json_object *new_obj; diff --git a/tests/test_parse.c b/tests/test_parse.c index cdd2d8a..4a8e3d7 100644 --- a/tests/test_parse.c +++ b/tests/test_parse.c @@ -96,7 +96,7 @@ static void single_basic_parse(const char *test_string, int clear_serializer) if (getenv("TEST_PARSE_CHUNKSIZE") != NULL) single_incremental_parse(test_string, clear_serializer); } -static void test_basic_parse() +static void test_basic_parse(void) { single_basic_parse("\"\003\"", 0); single_basic_parse("/* hello */\"foo\"", 0); @@ -199,7 +199,7 @@ static void test_basic_parse() single_basic_parse("[18446744073709551616]", 1); } -static void test_utf8_parse() +static void test_utf8_parse(void) { // json_tokener_parse doesn't support checking for byte order marks. // It's the responsibility of the caller to detect and skip a BOM. @@ -226,7 +226,7 @@ static int clear_serializer(json_object *jso, int flags, json_object *parent_jso return JSON_C_VISIT_RETURN_CONTINUE; } -static void test_verbose_parse() +static void test_verbose_parse(void) { json_object *new_obj; enum json_tokener_error error = json_tokener_success; @@ -566,7 +566,7 @@ struct incremental_step {NULL, -1, -1, json_tokener_success, 0, 0}, }; -static void test_incremental_parse() +static void test_incremental_parse(void) { json_object *new_obj; enum json_tokener_error jerr; diff --git a/tests/test_printbuf.c b/tests/test_printbuf.c index 2a2ccc0..3b1540f 100644 --- a/tests/test_printbuf.c +++ b/tests/test_printbuf.c @@ -19,7 +19,7 @@ static void test_printbuf_memset_length(void); #define __func__ __FUNCTION__ #endif -static void test_basic_printbuf_memset() +static void test_basic_printbuf_memset(void) { struct printbuf *pb; @@ -32,7 +32,7 @@ static void test_basic_printbuf_memset() printf("%s: end test\n", __func__); } -static void test_printbuf_memset_length() +static void test_printbuf_memset_length(void) { struct printbuf *pb; diff --git a/tests/test_util_file.c b/tests/test_util_file.c index f3a022e..27a097e 100644 --- a/tests/test_util_file.c +++ b/tests/test_util_file.c @@ -38,7 +38,7 @@ static void test_read_fd_equal(const char *testdir); #define PATH_MAX 256 #endif -static void test_write_to_file() +static void test_write_to_file(void) { json_object *jso; @@ -234,7 +234,7 @@ static void test_read_valid_nested_with_fd(const char *testdir) close(d); } -static void test_read_nonexistant() +static void test_read_nonexistant(void) { const char *filename = "./not_present.json"; @@ -252,7 +252,7 @@ static void test_read_nonexistant() } } -static void test_read_closed() +static void test_read_closed(void) { // Test reading from a closed fd int d = open("/dev/null", O_RDONLY); From d1deed499f2c94c1ba39326fe1742c6f78bf455d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 13 Aug 2022 21:45:11 -0700 Subject: [PATCH 2/3] json_inttypes.h: Define ssize_t on windows platforms Signed-off-by: Khem Raj --- json_inttypes.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/json_inttypes.h b/json_inttypes.h index e047d4f..a901a8e 100644 --- a/json_inttypes.h +++ b/json_inttypes.h @@ -21,4 +21,9 @@ #endif +#if defined(_MSC_VER) +#include +typedef SSIZE_T ssize_t; +#endif + #endif From 257b29c9910938b54df379e7e14c4a653e06449d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 14 Aug 2022 00:46:28 -0700 Subject: [PATCH 3/3] json_pointer.c: Move idx_val declaration to top of function This helps compiling with MS compiler, error seems to be due to defining a variable within the body of the function its allowed in c99 but not in c89. This should fix build with MSVC 16.0.40219.1 compiler from Visual Studio 14 2015 Signed-off-by: Khem Raj --- json_pointer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/json_pointer.c b/json_pointer.c index 2e8d30c..5abccdb 100644 --- a/json_pointer.c +++ b/json_pointer.c @@ -44,6 +44,7 @@ static void string_replace_all_occurrences_with_char(char *s, const char *occur, static int is_valid_index(struct json_object *jo, const char *path, size_t *idx) { size_t i, len = strlen(path); + long int idx_val = -1; /* this code-path optimizes a bit, for when we reference the 0-9 index range * in a JSON array and because leading zeros not allowed */ @@ -73,7 +74,7 @@ static int is_valid_index(struct json_object *jo, const char *path, size_t *idx) } } - long int idx_val = strtol(path, NULL, 10); + idx_val = strtol(path, NULL, 10); if (idx_val < 0) { errno = EINVAL;