From 6abafba0c4d38d109c7563d9c09b51d627002cb6 Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Sun, 22 Oct 2017 01:42:29 +0200 Subject: [PATCH] jshn: read and write 64-bit integers This allows for reading in and writing out bigger JSON Numbers. Following test script (that fails to print correct values _without_ this commit) verifies the functionality (tested on x86-64 as well as on ar71xx): ---snip--- # assumes you built jshn and sourced jshn.sh echo testing reading-in JSON SHELL_BIGNUM=12147483647 json_init json_load "{ \"bignum\": $SHELL_BIGNUM }" json_get_var BIGNUM bignum echo jshn bignum: $BIGNUM echo shll bignum: $SHELL_BIGNUM echo testing writing-out JSON json_init json_add_int bigint $SHELL_BIGNUM json_dump --snap--- Signed-off-by: Christian Beier (cherry picked from commit 729f47fd5279f902986457682f8f166c324eafb5) --- jshn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jshn.c b/jshn.c index 4989099..79136dd 100644 --- a/jshn.c +++ b/jshn.c @@ -154,7 +154,7 @@ static int add_json_element(const char *key, json_object *obj) fprintf(stdout, "' %d;\n", json_object_get_boolean(obj)); break; case json_type_int: - fprintf(stdout, "' %d;\n", json_object_get_int(obj)); + fprintf(stdout, "' %jd;\n", json_object_get_int64(obj)); break; case json_type_double: fprintf(stdout, "' %lf;\n", json_object_get_double(obj)); @@ -235,7 +235,7 @@ static void jshn_add_object_var(json_object *obj, bool array, const char *prefix } else if (!strcmp(type, "string")) { new = json_object_new_string(var); } else if (!strcmp(type, "int")) { - new = json_object_new_int(atoi(var)); + new = json_object_new_int64(atoll(var)); } else if (!strcmp(type, "double")) { new = json_object_new_double(strtod(var, NULL)); } else if (!strcmp(type, "boolean")) { -- 2.25.1