As of OpenWrt commit b3d8b3ab8e6f ("mac80211: set noscan=1 if sta/adhoc/
mesh interfaces are present"), the issue workarounded by this patch cannot
occur anymore.
		
	
			
		
			
				
	
	
		
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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 0000000000000000000000000000000000000000..2f454c560ff78c1edd4654b9651f0e6299bd5e6f
 | |
| --- /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
 | |
| +
 |