From 7e62a541e0b9944da9207e702c61871d58af2171 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 2 Dec 2015 12:42:54 +0100 Subject: [PATCH] src/utils_format_json.c: Add support for libyajl < 2. --- src/utils_format_json.c | 28 +++++++++++++++++++++++++--- src/utils_format_json_test.c | 23 +++++++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/utils_format_json.c b/src/utils_format_json.c index ed942301..63f03da3 100644 --- a/src/utils_format_json.c +++ b/src/utils_format_json.c @@ -33,7 +33,14 @@ #include "utils_cache.h" #if HAVE_LIBYAJL -#include +# include +# include +# if HAVE_YAJL_YAJL_VERSION_H +# include +# endif +# if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1) +# define HAVE_YAJL_V2 1 +# endif #endif static int json_escape_string (char *buffer, size_t buffer_size, /* {{{ */ @@ -655,18 +662,33 @@ int format_json_notification (char *buffer, size_t buffer_size, /* {{{ */ { yajl_gen g; unsigned char const *out; +#if HAVE_YAJL_V2 size_t unused_out_len; +#else + unsigned int unused_out_len; +#endif if ((buffer == NULL) || (n == NULL)) return EINVAL; +#if HAVE_YAJL_V2 g = yajl_gen_alloc (NULL); if (g == NULL) return -1; - -#if COLLECT_DEBUG +# if COLLECT_DEBUG yajl_gen_config (g, yajl_gen_beautify); yajl_gen_config (g, yajl_gen_validate_utf8); +# endif + +#else /* !HAVE_YAJL_V2 */ + yajl_gen_config conf = { 0 }; +# if COLLECT_DEBUG + conf.beautify = 1; + conf.indentString = " "; +# endif + g = yajl_gen_alloc (&conf, NULL); + if (g == NULL) + return -1; #endif if (format_alert (g, n) != 0) diff --git a/src/utils_format_json_test.c b/src/utils_format_json_test.c index 6df62119..353ef01c 100644 --- a/src/utils_format_json_test.c +++ b/src/utils_format_json_test.c @@ -29,7 +29,14 @@ #include "utils_format_json.h" #include "common.h" /* for STATIC_ARRAY_SIZE */ +#include #include +#if HAVE_YAJL_YAJL_VERSION_H +# include +#endif +#if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1) +# define HAVE_YAJL_V2 1 +#endif struct label_s { @@ -47,7 +54,11 @@ struct test_case_s }; typedef struct test_case_s test_case_t; +#if HAVE_YAJL_V2 static int test_map_key (void *ctx, unsigned char const *key, size_t key_len) +#else +static int test_map_key (void *ctx, unsigned char const *key, unsigned int key_len) +#endif { test_case_t *c = ctx; size_t i; @@ -81,7 +92,11 @@ static int expect_label (char const *name, char const *got, char const *want) return 0; } +#if HAVE_YAJL_V2 static int test_string (void *ctx, unsigned char const *value, size_t value_len) +#else +static int test_string (void *ctx, unsigned char const *value, unsigned int value_len) +#endif { test_case_t *c = ctx; @@ -116,7 +131,11 @@ static int expect_json_labels (char *json, label_t *labels, size_t labels_num) test_case_t c = { labels, labels_num, NULL }; yajl_handle hndl; - CHECK_NOT_NULL (hndl = yajl_alloc (&funcs, NULL, &c)); +#if HAVE_YAJL_V2 + CHECK_NOT_NULL (hndl = yajl_alloc (&funcs, /* alloc = */ NULL, &c)); +#else + CHECK_NOT_NULL (hndl = yajl_alloc (&funcs, /* config = */ NULL, /* alloc = */ NULL, &c)); +#endif OK (yajl_parse (hndl, (unsigned char *) json, strlen (json)) == yajl_status_ok); yajl_free (hndl); @@ -134,7 +153,7 @@ DEF_TEST(notification) }; /* 1448284606.125 ^= 1555083754651779072 */ - notification_t n = { NOTIF_WARNING, 1555083754651779072, "this is a message", + notification_t n = { NOTIF_WARNING, 1555083754651779072ULL, "this is a message", "example.com", "unit", "", "test", "case", NULL }; char got[1024]; -- 2.11.0