diff options
Diffstat (limited to 'app-admin/collectd/files')
-rw-r--r-- | app-admin/collectd/files/collectd-5.0.0-yajl2.patch | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/app-admin/collectd/files/collectd-5.0.0-yajl2.patch b/app-admin/collectd/files/collectd-5.0.0-yajl2.patch new file mode 100644 index 000000000000..3d2f77332909 --- /dev/null +++ b/app-admin/collectd/files/collectd-5.0.0-yajl2.patch @@ -0,0 +1,125 @@ +diff -ruN collectd-5.0.0.orig/configure.in collectd-5.0.0/configure.in +--- collectd-5.0.0.orig/configure.in 2011-03-27 18:35:08.000000000 +0200 ++++ collectd-5.0.0/configure.in 2011-07-18 11:56:01.053544558 +0200 +@@ -3863,6 +3863,7 @@ + CPPFLAGS="$CPPFLAGS $with_libyajl_cppflags" + + AC_CHECK_HEADERS(yajl/yajl_parse.h, [with_libyajl="yes"], [with_libyajl="no (yajl/yajl_parse.h not found)"]) ++ AC_CHECK_HEADERS(yajl/yajl_version.h) + + CPPFLAGS="$SAVE_CPPFLAGS" + fi +diff -ruN collectd-5.0.0.orig/src/curl_json.c collectd-5.0.0/src/curl_json.c +--- collectd-5.0.0.orig/src/curl_json.c 2011-03-27 18:35:08.000000000 +0200 ++++ collectd-5.0.0/src/curl_json.c 2011-07-18 12:03:00.741544705 +0200 +@@ -1,7 +1,7 @@ + /** + * collectd - src/curl_json.c + * Copyright (C) 2009 Doug MacEachern +- * Copyright (C) 2006-2010 Florian octo Forster ++ * Copyright (C) 2006-2011 Florian octo Forster + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the +@@ -18,7 +18,7 @@ + * + * Authors: + * Doug MacEachern <dougm at hyperic.com> +- * Florian octo Forster <octo at verplant.org> ++ * Florian octo Forster <octo at collectd.org> + **/ + + #include "collectd.h" +@@ -29,6 +29,13 @@ + + #include <curl/curl.h> + #include <yajl/yajl_parse.h> ++#if HAVE_YAJL_YAJL_VERSION_H ++# include <yajl/yajl_version.h> ++#endif ++ ++#if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1) ++# define HAVE_YAJL_V2 1 ++#endif + + #define CJ_DEFAULT_HOST "localhost" + #define CJ_KEY_MAGIC 0x43484b59UL /* CHKY */ +@@ -77,6 +84,12 @@ + }; + typedef struct cj_s cj_t; /* }}} */ + ++#if HAVE_YAJL_V2 ++typedef size_t yajl_len_t; ++#else ++typedef unsigned int yajl_len_t; ++#endif ++ + static int cj_read (user_data_t *ud); + static int cj_curl_perform (cj_t *db, CURL *curl); + static void cj_submit (cj_t *db, cj_key_t *key, value_t *value); +@@ -98,8 +111,21 @@ + return (0); + + status = yajl_parse(db->yajl, (unsigned char *)buf, len); +- if ((status != yajl_status_ok) +- && (status != yajl_status_insufficient_data)) ++ if (status == yajl_status_ok) ++ { ++#if HAVE_YAJL_V2 ++ status = yajl_complete_parse(db->yajl); ++#else ++ status = yajl_parse_complete(db->yajl); ++#endif ++ return (len); ++ } ++#if !HAVE_YAJL_V2 ++ else if (status == yajl_status_insufficient_data) ++ return (len); ++#endif ++ ++ if (status != yajl_status_ok) + { + unsigned char *msg = + yajl_get_error(db->yajl, /* verbose = */ 1, +@@ -130,7 +156,7 @@ + /* "number" may not be null terminated, so copy it into a buffer before + * parsing. */ + static int cj_cb_number (void *ctx, +- const char *number, unsigned int number_len) ++ const char *number, yajl_len_t number_len) + { + char buffer[number_len + 1]; + +@@ -159,7 +185,7 @@ + } /* int cj_cb_number */ + + static int cj_cb_map_key (void *ctx, const unsigned char *val, +- unsigned int len) ++ yajl_len_t len) + { + cj_t *db = (cj_t *)ctx; + c_avl_tree_t *tree; +@@ -187,7 +213,7 @@ + } + + static int cj_cb_string (void *ctx, const unsigned char *val, +- unsigned int len) ++ yajl_len_t len) + { + cj_t *db = (cj_t *)ctx; + char str[len + 1]; +@@ -697,7 +723,13 @@ + char *url; + yajl_handle yprev = db->yajl; + +- db->yajl = yajl_alloc (&ycallbacks, NULL, NULL, (void *)db); ++ db->yajl = yajl_alloc (&ycallbacks, ++#if HAVE_YAJL_V2 ++ /* alloc funcs = */ NULL, ++#else ++ /* alloc funcs = */ NULL, NULL, ++#endif ++ /* context = */ (void *)db); + if (db->yajl == NULL) + { + ERROR ("curl_json plugin: yajl_alloc failed."); |