Fix compiler errors and warnings when building on IBM operating systems such as AIX and IBM i.
#ifndef _json_c_version_h_
#define _json_c_version_h_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define JSON_C_MAJOR_VERSION 0
#define JSON_C_MINOR_VERSION 14
#define JSON_C_MICRO_VERSION 99
*/
JSON_EXPORT int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */
+#ifdef __cplusplus
+}
+#endif
+
#endif
#ifndef JSON_NORETURN
#if defined(_MSC_VER)
#define JSON_NORETURN __declspec(noreturn)
+#elif defined(__OS400__)
+#define JSON_NORETURN
#else
/* 'cold' attribute is for optimization, telling the computer this code
* path is unlikely.
* ECMA 262 section 9.8.1 defines
* how to handle these cases as strings
*/
+#ifdef HAVE_DECL_ISNAN
if (isnan(jso->o.c_double))
{
size = snprintf(buf, sizeof(buf), "NaN");
}
- else if (isinf(jso->o.c_double))
+ else
+#endif
+#ifdef HAVE_DECL_ISINF
+ if (isinf(jso->o.c_double))
{
if (jso->o.c_double > 0)
size = snprintf(buf, sizeof(buf), "Infinity");
size = snprintf(buf, sizeof(buf), "-Infinity");
}
else
+#endif
{
const char *std_format = "%.17g";
int format_drops_decimals = 0;
#ifdef HAVE_XLOCALE_H
#include <xlocale.h>
#endif
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif /* HAVE_STRINGS_H */
#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x)&7) + 9)
*/
#include "json_object.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef int(json_c_visit_userfunc)(json_object *jso, int flags, json_object *parent_jso,
const char *jso_key, size_t *jso_index, void *userarg);
*/
#define JSON_C_VISIT_RETURN_ERROR -1
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _json_c_json_visit_h_ */
ENTRY(EIO),
ENTRY(ENXIO),
ENTRY(E2BIG),
+#ifdef ENOEXEC
ENTRY(ENOEXEC),
+#endif
ENTRY(EBADF),
ENTRY(ECHILD),
ENTRY(EDEADLK),
/* clang-format on */
/* Example from RFC */
-static void test_example_get()
+static void test_example_get(void)
{
int i;
struct json_object *jo1, *jo2, *jo3;
}
/* I'm not too happy with the RFC example to test the recusion of the json_pointer_get() function */
-static void test_recursion_get()
+static void test_recursion_get(void)
{
struct json_object *jo2, *jo1 = json_tokener_parse(rec_input_json_str);
json_object_put(jo1);
}
-static void test_wrong_inputs_get()
+static void test_wrong_inputs_get(void)
{
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
json_object_put(jo1);
}
-static void test_example_set()
+static void test_example_set(void)
{
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
json_object_put(jo1);
}
-static void test_wrong_inputs_set()
+static void test_wrong_inputs_set(void)
{
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
// json_tokener_parse doesn't support checking for byte order marks.
// It's the responsibility of the caller to detect and skip a BOM.
// Both of these checks return null.
- char utf8_bom[] = {0xEF, 0xBB, 0xBF, 0x00};
- char utf8_bom_and_chars[] = {0xEF, 0xBB, 0xBF, '{', '}', 0x00};
+ char* utf8_bom = "\xEF\xBB\xBF";
+ char* utf8_bom_and_chars = "\xEF\xBB\xBF{}";
single_basic_parse(utf8_bom, 0);
single_basic_parse(utf8_bom_and_chars, 0);
}
json_tokener_set_flags(tok, step->tok_flags);
if (length == -1)
- length = strlen(step->string_to_parse);
+ length = (int)strlen(step->string_to_parse);
if (step->char_offset == -1)
expected_char_offset = length;
else
static void test_read_valid_with_fd(const char *testdir);
static void test_read_valid_nested_with_fd(const char *testdir);
-static void test_read_nonexistant();
+static void test_read_nonexistant(void);
static void test_read_closed(void);
-static void test_write_to_file();
+static void test_write_to_file(void);
static void stat_and_cat(const char *file);
static void test_read_fd_equal(const char *testdir);