[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: master is broken due to latest changes to pk-mi-json
From: |
Jose E. Marchesi |
Subject: |
Re: master is broken due to latest changes to pk-mi-json |
Date: |
Fri, 26 Nov 2021 14:24:38 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Ok I just pushed the commit below, that fixes this problem. But then
there is another problem in the testsuite:
/bin/bash ../../libtool --tag=CC --mode=link gcc -fgnu89-inline
-I/usr/include/json-c -g -O2 -o mi-json mi_json-mi-json.o
../../poke/mi_json-pk-mi-msg.o ../../poke/mi_json-pk-mi-json.o
../../common/mi_json-pk-utils.o -ljson-c ../../gl/libgnu.la
../../libpoke/libpoke.la
libtool: link: gcc -fgnu89-inline -I/usr/include/json-c -g -O2 -o .libs/mi-json
mi_json-mi-json.o ../../poke/mi_json-pk-mi-msg.o
../../poke/mi_json-pk-mi-json.o ../../common/mi_json-pk-utils.o -ljson-c
../../gl/.libs/libgnu.a -lreadline -L/usr/local/lib
/usr/local/lib/libtextstyle.so -lm -lncurses ../../libpoke/.libs/libpoke.so
-pthread
mi_json-mi-json.o: In function `test_val_to_json':
/home/jemarch/gnu/hacks/poke/build/testsuite/poke.mi-json/../../../testsuite/poke.mi-json/mi-json.c:239:
undefined reference to `json_object_equal'
commit b50cb36314d20e53a6f125f4b3172ccd1f963323
Author: Jose E. Marchesi <jose.marchesi@oracle.com>
Date: Fri Nov 26 14:23:12 2021 +0100
pk-mi-json: support older versions of json-c
2021-11-26 Jose E. Marchesi <jemarch@gnu.org>
* poke/pk-mi-json.c (pk_json_object_object_add): Define.
(JSON_OBJECT_OBJECT_ADD): Use pk_json_object_object_add.
(collect_msg_arg): Likewise.
(pk_mi_msg_to_json_object): Likewise.
diff --git a/ChangeLog b/ChangeLog
index 8182e52a..f4e5b8b6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2021-11-26 Jose E. Marchesi <jemarch@gnu.org>
+
+ * poke/pk-mi-json.c (pk_json_object_object_add): Define.
+ (JSON_OBJECT_OBJECT_ADD): Use pk_json_object_object_add.
+ (collect_msg_arg): Likewise.
+ (pk_mi_msg_to_json_object): Likewise.
+
2021-11-22 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* pickles/pktest.pk (PkTest): Use logical implication operator.
diff --git a/poke/pk-mi-json.c b/poke/pk-mi-json.c
index 88d4446d..61762f73 100644
--- a/poke/pk-mi-json.c
+++ b/poke/pk-mi-json.c
@@ -32,6 +32,23 @@
#define J_OK 1
#define J_NOK 0 /* Not OK */
+
+/* At some point json-c changed the interface of
+ json_object_object_add in order to return a status code. We wrap
+ these calls in the function below to support both APIs. */
+
+static inline int
+pk_json_object_object_add (struct json_object* obj, const char *key,
+ struct json_object *val)
+{
+#if JSON_C_MAJOR_VERSION == 0 && JSON_C_MINOR_VERSION < 13
+ json_object_object_add (obj, key, val);
+ return J_OK;
+#else
+ return json_object_object_add (obj, key, val);
+#endif
+}
+
/* Error message handling */
/* Prepend the error message to OUT */
@@ -158,9 +175,9 @@ jfree_all (json_object *j[], const int len)
#define JSON_OBJECT_OBJECT_ADD(obj, key, val, label, errmsg) \
do \
{ \
- int ret = json_object_object_add (obj, key, val); \
+ int ret = pk_json_object_object_add (obj, key, val); \
val = NULL; \
- GOTO_IF (ret != 0, label, errmsg, "json_object_object_add (%s) failed", \
+ GOTO_IF (ret != 0, label, errmsg, "pk_json_object_object_add (%s) failed",\
key); \
} while (0)
@@ -1744,8 +1761,8 @@ collect_msg_arg (const char *name, pk_val value,
{
json_object *args = (json_object *) user1;
- json_object_object_add (args, name,
- pk_mi_val_to_json_1 (value, NULL /* errmsg */));
+ pk_json_object_object_add (args, name,
+ pk_mi_val_to_json_1 (value, NULL /* errmsg */));
return 1;
}
@@ -1806,7 +1823,7 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
if (!number)
goto out_of_memory;
- json_object_object_add (json, "seq", number);
+ pk_json_object_object_add (json, "seq", number);
}
/* Add the type. */
@@ -1815,7 +1832,7 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
if (!integer)
goto out_of_memory;
- json_object_object_add (json, "kind", integer);
+ pk_json_object_object_add (json, "kind", integer);
}
/* Add the data. */
@@ -1833,13 +1850,13 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
req_type = json_object_new_int (msg_req_type);
if (!req_type)
goto out_of_memory;
- json_object_object_add (req, "type", req_type);
+ pk_json_object_object_add (req, "type", req_type);
args = pk_mi_msg_args_to_json (msg);
if (args)
- json_object_object_add (req, "args", args);
+ pk_json_object_object_add (req, "args", args);
- json_object_object_add (json, "data", req);
+ pk_json_object_object_add (json, "data", req);
break;
}
case PK_MI_MSG_RESPONSE:
@@ -1854,17 +1871,17 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
resp_type = json_object_new_int (msg_resp_type);
if (!resp_type)
goto out_of_memory;
- json_object_object_add (resp, "type", resp_type);
+ pk_json_object_object_add (resp, "type", resp_type);
success_p
= json_object_new_boolean (pk_mi_msg_resp_success_p (msg));
if (!success_p)
goto out_of_memory;
- json_object_object_add (resp, "success_p", success_p);
+ pk_json_object_object_add (resp, "success_p", success_p);
req_number
= json_object_new_int (pk_mi_msg_resp_req_number (msg));
- json_object_object_add (resp, "req_number", req_number);
+ pk_json_object_object_add (resp, "req_number", req_number);
if (pk_mi_msg_resp_errmsg (msg))
{
@@ -1873,14 +1890,14 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
if (!errmsg)
goto out_of_memory;
- json_object_object_add (resp, "errmsg", errmsg);
+ pk_json_object_object_add (resp, "errmsg", errmsg);
}
args = pk_mi_msg_args_to_json (msg);
if (args)
- json_object_object_add (resp, "args", args);
+ pk_json_object_object_add (resp, "args", args);
- json_object_object_add (json, "data", resp);
+ pk_json_object_object_add (json, "data", resp);
break;
}
case PK_MI_MSG_EVENT:
@@ -1895,13 +1912,13 @@ pk_mi_msg_to_json_object (pk_mi_msg msg)
event_type = json_object_new_int (msg_event_type);
if (!event_type)
goto out_of_memory;
- json_object_object_add (event, "type", event_type);
+ pk_json_object_object_add (event, "type", event_type);
args = pk_mi_msg_args_to_json (msg);
if (args)
- json_object_object_add (event, "args", args);
+ pk_json_object_object_add (event, "args", args);
- json_object_object_add (json, "data", event);
+ pk_json_object_object_add (json, "data", event);
break;
}
default:
- master is broken due to latest changes to pk-mi-json, Jose E. Marchesi, 2021/11/25
- Re: master is broken due to latest changes to pk-mi-json,
Jose E. Marchesi <=
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Jose E. Marchesi, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Jose E. Marchesi, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Mohammad-Reza Nabipoor, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Jose E. Marchesi, 2021/11/26
- Re: master is broken due to latest changes to pk-mi-json, Jose E. Marchesi, 2021/11/28