diff options
author | Christian Beier <dontmind@freeshell.org> | 2017-10-22 02:42:29 +0300 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2017-11-06 12:05:42 +0300 |
commit | 729f47fd5279f902986457682f8f166c324eafb5 (patch) | |
tree | 09e6595a130b6f9f28cdc8849fdba56853f1668a /jshn.c | |
parent | 632688e8d6cde32781e4ec685d59afb0938300ad (diff) |
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 <dontmind@freeshell.org>
Diffstat (limited to 'jshn.c')
-rw-r--r-- | jshn.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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")) { |