mirror of
https://github.com/json-c/json-c.git
synced 2026-04-04 21:09:06 +08:00
Improved support for IBM operating systems
Fix compiler errors and warnings when building on IBM operating systems such as AIX and IBM i.
This commit is contained in:
@@ -12,6 +12,10 @@
|
|||||||
#ifndef _json_c_version_h_
|
#ifndef _json_c_version_h_
|
||||||
#define _json_c_version_h_
|
#define _json_c_version_h_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#define JSON_C_MAJOR_VERSION 0
|
#define JSON_C_MAJOR_VERSION 0
|
||||||
#define JSON_C_MINOR_VERSION 14
|
#define JSON_C_MINOR_VERSION 14
|
||||||
#define JSON_C_MICRO_VERSION 99
|
#define JSON_C_MICRO_VERSION 99
|
||||||
@@ -44,4 +48,8 @@ JSON_EXPORT const char *json_c_version(void); /* Returns JSON_C_VERSION */
|
|||||||
*/
|
*/
|
||||||
JSON_EXPORT int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */
|
JSON_EXPORT int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ static json_object_to_json_string_fn _json_object_userdata_to_json_string;
|
|||||||
#ifndef JSON_NORETURN
|
#ifndef JSON_NORETURN
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#define JSON_NORETURN __declspec(noreturn)
|
#define JSON_NORETURN __declspec(noreturn)
|
||||||
|
#elif defined(__OS400__)
|
||||||
|
#define JSON_NORETURN
|
||||||
#else
|
#else
|
||||||
/* 'cold' attribute is for optimization, telling the computer this code
|
/* 'cold' attribute is for optimization, telling the computer this code
|
||||||
* path is unlikely.
|
* path is unlikely.
|
||||||
@@ -901,11 +903,15 @@ static int json_object_double_to_json_string_format(struct json_object *jso, str
|
|||||||
* ECMA 262 section 9.8.1 defines
|
* ECMA 262 section 9.8.1 defines
|
||||||
* how to handle these cases as strings
|
* how to handle these cases as strings
|
||||||
*/
|
*/
|
||||||
|
#ifdef HAVE_DECL_ISNAN
|
||||||
if (isnan(jso->o.c_double))
|
if (isnan(jso->o.c_double))
|
||||||
{
|
{
|
||||||
size = snprintf(buf, sizeof(buf), "NaN");
|
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)
|
if (jso->o.c_double > 0)
|
||||||
size = snprintf(buf, sizeof(buf), "Infinity");
|
size = snprintf(buf, sizeof(buf), "Infinity");
|
||||||
@@ -913,6 +919,7 @@ static int json_object_double_to_json_string_format(struct json_object *jso, str
|
|||||||
size = snprintf(buf, sizeof(buf), "-Infinity");
|
size = snprintf(buf, sizeof(buf), "-Infinity");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
const char *std_format = "%.17g";
|
const char *std_format = "%.17g";
|
||||||
int format_drops_decimals = 0;
|
int format_drops_decimals = 0;
|
||||||
|
|||||||
@@ -40,6 +40,9 @@
|
|||||||
#ifdef HAVE_XLOCALE_H
|
#ifdef HAVE_XLOCALE_H
|
||||||
#include <xlocale.h>
|
#include <xlocale.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_STRINGS_H
|
||||||
|
#include <strings.h>
|
||||||
|
#endif /* HAVE_STRINGS_H */
|
||||||
|
|
||||||
#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x)&7) + 9)
|
#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x)&7) + 9)
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,10 @@
|
|||||||
*/
|
*/
|
||||||
#include "json_object.h"
|
#include "json_object.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int(json_c_visit_userfunc)(json_object *jso, int flags, json_object *parent_jso,
|
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);
|
const char *jso_key, size_t *jso_index, void *userarg);
|
||||||
|
|
||||||
@@ -90,4 +94,8 @@ JSON_EXPORT int json_c_visit(json_object *jso, int future_flags, json_c_visit_us
|
|||||||
*/
|
*/
|
||||||
#define JSON_C_VISIT_RETURN_ERROR -1
|
#define JSON_C_VISIT_RETURN_ERROR -1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _json_c_json_visit_h_ */
|
#endif /* _json_c_json_visit_h_ */
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ static struct
|
|||||||
ENTRY(EIO),
|
ENTRY(EIO),
|
||||||
ENTRY(ENXIO),
|
ENTRY(ENXIO),
|
||||||
ENTRY(E2BIG),
|
ENTRY(E2BIG),
|
||||||
|
#ifdef ENOEXEC
|
||||||
ENTRY(ENOEXEC),
|
ENTRY(ENOEXEC),
|
||||||
|
#endif
|
||||||
ENTRY(EBADF),
|
ENTRY(EBADF),
|
||||||
ENTRY(ECHILD),
|
ENTRY(ECHILD),
|
||||||
ENTRY(EDEADLK),
|
ENTRY(EDEADLK),
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ static const char *rec_input_json_str =
|
|||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
||||||
/* Example from RFC */
|
/* Example from RFC */
|
||||||
static void test_example_get()
|
static void test_example_get(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct json_object *jo1, *jo2, *jo3;
|
struct json_object *jo1, *jo2, *jo3;
|
||||||
@@ -126,7 +126,7 @@ static void test_example_get()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* I'm not too happy with the RFC example to test the recusion of the json_pointer_get() function */
|
/* 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);
|
struct json_object *jo2, *jo1 = json_tokener_parse(rec_input_json_str);
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ static void test_recursion_get()
|
|||||||
json_object_put(jo1);
|
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);
|
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ static void test_wrong_inputs_get()
|
|||||||
json_object_put(jo1);
|
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);
|
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ static void test_example_set()
|
|||||||
json_object_put(jo1);
|
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);
|
struct json_object *jo2, *jo1 = json_tokener_parse(input_json_str);
|
||||||
|
|
||||||
|
|||||||
@@ -149,8 +149,8 @@ static void test_utf8_parse()
|
|||||||
// json_tokener_parse doesn't support checking for byte order marks.
|
// json_tokener_parse doesn't support checking for byte order marks.
|
||||||
// It's the responsibility of the caller to detect and skip a BOM.
|
// It's the responsibility of the caller to detect and skip a BOM.
|
||||||
// Both of these checks return null.
|
// Both of these checks return null.
|
||||||
char utf8_bom[] = {0xEF, 0xBB, 0xBF, 0x00};
|
char* utf8_bom = "\xEF\xBB\xBF";
|
||||||
char utf8_bom_and_chars[] = {0xEF, 0xBB, 0xBF, '{', '}', 0x00};
|
char* utf8_bom_and_chars = "\xEF\xBB\xBF{}";
|
||||||
single_basic_parse(utf8_bom, 0);
|
single_basic_parse(utf8_bom, 0);
|
||||||
single_basic_parse(utf8_bom_and_chars, 0);
|
single_basic_parse(utf8_bom_and_chars, 0);
|
||||||
}
|
}
|
||||||
@@ -446,7 +446,7 @@ static void test_incremental_parse()
|
|||||||
json_tokener_set_flags(tok, step->tok_flags);
|
json_tokener_set_flags(tok, step->tok_flags);
|
||||||
|
|
||||||
if (length == -1)
|
if (length == -1)
|
||||||
length = strlen(step->string_to_parse);
|
length = (int)strlen(step->string_to_parse);
|
||||||
if (step->char_offset == -1)
|
if (step->char_offset == -1)
|
||||||
expected_char_offset = length;
|
expected_char_offset = length;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -24,10 +24,10 @@
|
|||||||
|
|
||||||
static void test_read_valid_with_fd(const char *testdir);
|
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_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_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 stat_and_cat(const char *file);
|
||||||
static void test_read_fd_equal(const char *testdir);
|
static void test_read_fd_equal(const char *testdir);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user