Some updates to make the code compatible with VC 9 (2008)
VC 9 doesn't support late variable declarations, and doesn't have inttypes so we need some direct definitions of a couple of more types.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -22,3 +22,5 @@ test2
|
|||||||
test4
|
test4
|
||||||
testSubDir
|
testSubDir
|
||||||
test_parse_int64
|
test_parse_int64
|
||||||
|
Debug
|
||||||
|
Release
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
#if defined(_MSC_VER) && _MSC_VER < 1600
|
#if defined(_MSC_VER) && _MSC_VER < 1600
|
||||||
|
|
||||||
/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
|
/* Anything less than Visual Studio C++ 10 is missing stdint.h and inttypes.h */
|
||||||
|
typedef __int32 int32_t;
|
||||||
|
#define INT32_MIN ((int32_t)_I32_MIN)
|
||||||
|
#define INT32_MAX ((int32_t)_I32_MAX)
|
||||||
typedef __int64 int64_t;
|
typedef __int64 int64_t;
|
||||||
#define PRId64 "I64d"
|
#define PRId64 "I64d"
|
||||||
#define SCNd64 "I64d"
|
#define SCNd64 "I64d"
|
||||||
|
|||||||
@@ -321,10 +321,13 @@ struct json_object* json_object_new_int(int32_t i)
|
|||||||
|
|
||||||
int32_t json_object_get_int(struct json_object *jso)
|
int32_t json_object_get_int(struct json_object *jso)
|
||||||
{
|
{
|
||||||
|
int64_t cint64;
|
||||||
|
enum json_type o_type;
|
||||||
|
|
||||||
if(!jso) return 0;
|
if(!jso) return 0;
|
||||||
|
|
||||||
enum json_type o_type = jso->o_type;
|
o_type = jso->o_type;
|
||||||
int64_t cint64 = jso->o.c_int64;
|
cint64 = jso->o.c_int64;
|
||||||
|
|
||||||
if (o_type == json_type_string)
|
if (o_type == json_type_string)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -130,13 +130,15 @@ int json_object_to_file(char *filename, struct json_object *obj)
|
|||||||
int json_parse_int64(const char *buf, int64_t *retval)
|
int json_parse_int64(const char *buf, int64_t *retval)
|
||||||
{
|
{
|
||||||
int64_t num64;
|
int64_t num64;
|
||||||
|
const char *buf_skip_space;
|
||||||
|
int orig_has_neg;
|
||||||
if (sscanf(buf, "%" SCNd64, &num64) != 1)
|
if (sscanf(buf, "%" SCNd64, &num64) != 1)
|
||||||
{
|
{
|
||||||
MC_DEBUG("Failed to parse, sscanf != 1\n");
|
MC_DEBUG("Failed to parse, sscanf != 1\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
const char *buf_skip_space = buf;
|
buf_skip_space = buf;
|
||||||
int orig_has_neg = 0;
|
orig_has_neg = 0;
|
||||||
// Skip leading spaces
|
// Skip leading spaces
|
||||||
while (isspace((int)*buf_skip_space) && *buf_skip_space)
|
while (isspace((int)*buf_skip_space) && *buf_skip_space)
|
||||||
buf_skip_space++;
|
buf_skip_space++;
|
||||||
@@ -156,6 +158,7 @@ int json_parse_int64(const char *buf, int64_t *retval)
|
|||||||
char buf_cmp[100];
|
char buf_cmp[100];
|
||||||
char *buf_cmp_start = buf_cmp;
|
char *buf_cmp_start = buf_cmp;
|
||||||
int recheck_has_neg = 0;
|
int recheck_has_neg = 0;
|
||||||
|
int buf_cmp_len;
|
||||||
snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);
|
snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);
|
||||||
if (*buf_cmp_start == '-')
|
if (*buf_cmp_start == '-')
|
||||||
{
|
{
|
||||||
@@ -164,7 +167,7 @@ int json_parse_int64(const char *buf, int64_t *retval)
|
|||||||
}
|
}
|
||||||
// No need to skip leading spaces or zeros here.
|
// No need to skip leading spaces or zeros here.
|
||||||
|
|
||||||
int buf_cmp_len = strlen(buf_cmp_start);
|
buf_cmp_len = strlen(buf_cmp_start);
|
||||||
/**
|
/**
|
||||||
* If the sign is different, or
|
* If the sign is different, or
|
||||||
* some of the digits are different, or
|
* some of the digits are different, or
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ int printbuf_memappend(struct printbuf *p, const char *buf, int size)
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !HAVE_VSNPRINTF && defined(WIN32)
|
#if !HAVE_VSNPRINTF && defined(_MSC_VER)
|
||||||
# define vsnprintf _vsnprintf
|
# define vsnprintf _vsnprintf
|
||||||
#elif !HAVE_VSNPRINTF /* !HAVE_VSNPRINTF */
|
#elif !HAVE_VSNPRINTF /* !HAVE_VSNPRINTF */
|
||||||
# error Need vsnprintf!
|
# error Need vsnprintf!
|
||||||
|
|||||||
Reference in New Issue
Block a user