From: Gunnar Beutner Date: Tue, 28 Oct 2014 04:55:08 +0000 (+0100) Subject: Fix compatibility with older versions of the YAJL library X-Git-Tag: v2.2.0~234 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=65e2e636ead1f85333fb883d6d849a1c7fe0af7b;p=icinga2 Fix compatibility with older versions of the YAJL library refs #7454 --- diff --git a/lib/base/json.cpp b/lib/base/json.cpp index 318b4e24f..a5080264e 100644 --- a/lib/base/json.cpp +++ b/lib/base/json.cpp @@ -25,6 +25,7 @@ #include "base/convert.hpp" #include #include +#include #include #include #include @@ -93,7 +94,13 @@ static void Encode(yajl_gen handle, const Value& value) String icinga::JsonEncode(const Value& value) { +#if YAJL_MAJOR < 2 + yajl_gen_config conf = { 0, "" }; + yajl_gen handle = yajl_gen_alloc(&conf, NULL); +#else /* YAJL_MAJOR */ yajl_gen handle = yajl_gen_alloc(NULL); +#endif /* YAJL_MAJOR */ + Encode(handle, value); const unsigned char *buf; @@ -317,13 +324,24 @@ Value icinga::JsonDecode(const String& data) }; yajl_handle handle; +#if YAJL_MAJOR < 2 + yajl_parser_config cfg = { 1, 0 }; +#endif /* YAJL_MAJOR */ JsonContext context; +#if YAJL_MAJOR < 2 + handle = yajl_alloc(&callbacks, &cfg, NULL, &context); +#else /* YAJL_MAJOR */ handle = yajl_alloc(&callbacks, NULL, &context); +#endif /* YAJL_MAJOR */ yajl_parse(handle, reinterpret_cast(data.CStr()), data.GetLength()); +#if YAJL_MAJOR < 2 + if (yajl_parse_complete(handle) != yajl_status_ok) { +#else /* YAJL_MAJOR */ if (yajl_complete_parse(handle) != yajl_status_ok) { +#endif /* YAJL_MAJOR */ unsigned char *internal_err_str = yajl_get_error(handle, 1, reinterpret_cast(data.CStr()), data.GetLength()); String msg = reinterpret_cast(internal_err_str); yajl_free_error(handle, internal_err_str);