summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/collectd/files')
-rw-r--r--app-admin/collectd/files/collectd-5.0.0-yajl2.patch125
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.");