123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- From: Jan-Philipp Litza <janphilipp@litza.de>
- Date: Fri, 6 May 2016 16:44:29 +0200
- Subject: libjson-c: Add support for custom format strings for doubles
- diff --git a/package/libs/libjson-c/patches/002-custom-format-string.patch b/package/libs/libjson-c/patches/002-custom-format-string.patch
- new file mode 100644
- index 0000000..2f454c5
- --- /dev/null
- +++ b/package/libs/libjson-c/patches/002-custom-format-string.patch
- @@ -0,0 +1,98 @@
- +From 21dc5dc92bd56f5f4dc2c90b9ea6bf1e1407714e Mon Sep 17 00:00:00 2001
- +From: Jan-Philipp Litza <janphilipp@litza.de>
- +Date: Fri, 6 May 2016 16:12:44 +0200
- +Subject: [PATCH] Export json_object_double_to_json_string() and use custom
- + format string
- +BCC: janphilipp@litza.de
- +
- +---
- + json_object.c | 12 ++++++------
- + json_object.h | 28 ++++++++++++++++++++++++++++
- + 2 files changed, 34 insertions(+), 6 deletions(-)
- +
- +diff --git a/json_object.c b/json_object.c
- +index 7d60884..46701e7 100644
- +--- a/json_object.c
- ++++ b/json_object.c
- +@@ -55,7 +55,6 @@ static struct json_object* json_object_new(enum json_type o_type);
- + static json_object_to_json_string_fn json_object_object_to_json_string;
- + static json_object_to_json_string_fn json_object_boolean_to_json_string;
- + static json_object_to_json_string_fn json_object_int_to_json_string;
- +-static json_object_to_json_string_fn json_object_double_to_json_string;
- + static json_object_to_json_string_fn json_object_string_to_json_string;
- + static json_object_to_json_string_fn json_object_array_to_json_string;
- +
- +@@ -644,10 +643,10 @@ int64_t json_object_get_int64(const struct json_object *jso)
- +
- + /* json_object_double */
- +
- +-static int json_object_double_to_json_string(struct json_object* jso,
- +- struct printbuf *pb,
- +- int level,
- +- int flags)
- ++int json_object_double_to_json_string(struct json_object* jso,
- ++ struct printbuf *pb,
- ++ int level,
- ++ int flags)
- + {
- + char buf[128], *p, *q;
- + int size;
- +@@ -663,7 +662,8 @@ static int json_object_double_to_json_string(struct json_object* jso,
- + else
- + size = snprintf(buf, sizeof(buf), "-Infinity");
- + else
- +- size = snprintf(buf, sizeof(buf), "%.17g", jso->o.c_double);
- ++ size = snprintf(buf, sizeof(buf),
- ++ jso->_userdata ? (const char*) jso->_userdata : "%.17g", jso->o.c_double);
- +
- + p = strchr(buf, ',');
- + if (p) {
- +diff --git a/json_object.h b/json_object.h
- +index 2bce454..a89de44 100644
- +--- a/json_object.h
- ++++ b/json_object.h
- +@@ -614,6 +614,9 @@ extern int64_t json_object_get_int64(const struct json_object *obj);
- + /* double type methods */
- +
- + /** Create a new empty json_object of type json_type_double
- ++ *
- ++ * @see json_object_double_to_json_string() for how to set a custom format string.
- ++ *
- + * @param d the double
- + * @returns a json_object of type json_type_double
- + */
- +@@ -642,6 +645,31 @@ extern struct json_object* json_object_new_double(double d);
- + */
- + extern struct json_object* json_object_new_double_s(double d, const char *ds);
- +
- ++
- ++/** Serialize a json_object of type json_type_double to a string.
- ++ *
- ++ * This function isn't meant to be called directly. Instead, you can set a
- ++ * custom format string for the serialization of this double using the
- ++ * following call (where "%.17g" actually is the default):
- ++ *
- ++ * @code
- ++ * jso = json_object_new_double(d);
- ++ * json_object_set_serializer(jso, json_object_double_to_json_string,
- ++ * "%.17g", NULL);
- ++ * @endcode
- ++ *
- ++ * @see printf(3) man page for format strings
- ++ *
- ++ * @param jso The json_type_double object that is serialized.
- ++ * @param pb The destination buffer.
- ++ * @param level Ignored.
- ++ * @param flags Ignored.
- ++ */
- ++extern int json_object_double_to_json_string(struct json_object* jso,
- ++ struct printbuf *pb,
- ++ int level,
- ++ int flags);
- ++
- + /** Get the double floating point value of a json_object
- + *
- + * The type is coerced to a double if the passed object is not a double.
- +--
- +2.7.4
- +
|