updated on Mon Jan 23 00:00:36 UTC 2012
[aur-mirror.git] / xen-4.2 / yajl-patch
blob2140e1589f201d5ede0e2396566b01c12d30692c
1 diff -r f72b99fccfca -r 716d6d48e647 Config.mk
2 --- a/Config.mk Tue Dec 20 08:31:40 2011 +0100
3 +++ b/Config.mk Tue Dec 20 13:52:55 2011 +0100
4 @@ -186,6 +186,11 @@ CONFIG_LIBICONV   := $(shell export OS="
5                         . $(XEN_ROOT)/tools/check/funcs.sh; \
6                         has_lib libiconv.so && echo 'y' || echo 'n')
7  
8 +CONFIG_YAJL_VERSION := $(shell export OS="`uname -s`"; \
9 +                       export CHECK_INCLUDES="$(CHECK_INCLUDES)"; \
10 +                       . $(XEN_ROOT)/tools/check/funcs.sh; \
11 +                       has_header yajl/yajl_version.h && echo 'y' || echo 'n')
13  # Enable XSM security module (by default, Flask).
14  XSM_ENABLE ?= n
15  FLASK_ENABLE ?= $(XSM_ENABLE)
16 diff -r f72b99fccfca -r 716d6d48e647 tools/check/check_yajl_lib
17 --- a/tools/check/check_yajl_lib        Tue Dec 20 08:31:40 2011 +0100
18 +++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
19 @@ -1,6 +0,0 @@
20 -#!/bin/sh
21 -# CHECK-BUILD CHECK-INSTALL
23 -. ./funcs.sh
25 -has_lib libyajl.so.1 || fail "can't find libyajl.so.1 version 1"
26 diff -r f72b99fccfca -r 716d6d48e647 tools/libxl/Makefile
27 --- a/tools/libxl/Makefile      Tue Dec 20 08:31:40 2011 +0100
28 +++ b/tools/libxl/Makefile      Tue Dec 20 13:52:55 2011 +0100
29 @@ -19,6 +19,10 @@ ifeq ($(CONFIG_Linux),y)
30  LIBUUID_LIBS += -luuid
31  endif
33 +ifeq ($(CONFIG_YAJL_VERSION),y)
34 +CFLAGS += -DHAVE_YAJL_VERSION
35 +endif
37   LIBXL_LIBS =
38   LIBXL_LIBS = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) 
39  $(LDLIBS_libblktapctl) $(UTIL_LIBS) $(LIBUUID_LIBS)
41 diff -r f72b99fccfca -r 716d6d48e647 tools/libxl/libxl_json.c
42 --- a/tools/libxl/libxl_json.c  Tue Dec 20 08:31:40 2011 +0100
43 +++ b/tools/libxl/libxl_json.c  Tue Dec 20 13:52:55 2011 +0100
44 @@ -519,7 +519,11 @@ static bool is_decimal(const char *s, un
45      return false;
46  }
48 +#ifdef HAVE_YAJL_V2
49 +static int json_callback_number(void *opaque, const char *s, size_t len)
50 +#else
51  static int json_callback_number(void *opaque, const char *s, unsigned int len)
52 +#endif
53  {
54      libxl__yajl_ctx *ctx = opaque;
55      libxl__json_object *obj = NULL;
56 @@ -575,8 +579,13 @@ out:
57      return 1;
58  }
60 +#ifdef HAVE_YAJL_V2
61 +static int json_callback_string(void *opaque, const unsigned char *str,
62 +                                size_t len)
63 +#else
64  static int json_callback_string(void *opaque, const unsigned char *str,
65                                  unsigned int len)
66 +#endif
67  {
68      libxl__yajl_ctx *ctx = opaque;
69      char *t = NULL;
70 @@ -608,8 +617,13 @@ static int json_callback_string(void *op
71      return 1;
72  }
74 +#ifdef HAVE_YAJL_V2
75 +static int json_callback_map_key(void *opaque, const unsigned char *str,
76 +                                 size_t len)
77 +#else
78  static int json_callback_map_key(void *opaque, const unsigned char *str,
79                                   unsigned int len)
80 +#endif
81  {
82      libxl__yajl_ctx *ctx = opaque;
83      char *t = NULL;
84 @@ -772,17 +786,26 @@ libxl__json_object *libxl__json_parse(li
85      DEBUG_GEN_ALLOC(&yajl_ctx);
87      if (yajl_ctx.hand == NULL) {
88 +#ifdef HAVE_YAJL_V2
89 +        yajl_ctx.hand = yajl_alloc(&callbacks, NULL, &yajl_ctx);
90 +#else
91          yajl_parser_config cfg = {
92              .allowComments = 1,
93              .checkUTF8 = 1,
94          };
95          yajl_ctx.hand = yajl_alloc(&callbacks, &cfg, NULL, &yajl_ctx);
96 +#endif
97      }
98      status = yajl_parse(yajl_ctx.hand, (const unsigned char *)s, strlen(s));
99      if (status != yajl_status_ok)
100          goto out;
101 +    
102 +#ifdef HAVE_YAJL_V2
103 +    status = yajl_complete_parse(yajl_ctx.hand);
104 +#else
105 +    status = yajl_parse_complete(yajl_ctx.hand);
106 +#endif
108 -    status = yajl_parse_complete(yajl_ctx.hand);
109      if (status != yajl_status_ok)
110          goto out;
112 @@ -834,14 +857,25 @@ static const char *yajl_gen_status_to_st
113  char *libxl__object_to_json(libxl_ctx *ctx, const char *type,
114                              libxl__gen_json_callback gen, void *p)
116 +#ifndef HAVE_YAJL_V2
117      yajl_gen_config conf = { 1, "    " };
118 +#endif
119      const unsigned char *buf;
120      char *ret = NULL;
121 +#ifdef HAVE_YAJL_V2
122 +    size_t len = 0;
123 +#else
124      unsigned int len = 0;
125 +#endif
126      yajl_gen_status s;
127      yajl_gen hand;
129 +#ifdef HAVE_YAJL_V2
130 +    hand = yajl_gen_alloc(NULL);
131 +#else
132      hand = yajl_gen_alloc(&conf, NULL);
133 +#endif
135      if (!hand)
136          return NULL;
138 diff -r f72b99fccfca -r 716d6d48e647 tools/libxl/libxl_json.h
139 --- a/tools/libxl/libxl_json.h  Tue Dec 20 08:31:40 2011 +0100
140 +++ b/tools/libxl/libxl_json.h  Tue Dec 20 13:52:55 2011 +0100
141 @@ -17,7 +17,16 @@
143  #include <yajl/yajl_gen.h>
145 +#ifdef HAVE_YAJL_VERSION
146 +#  include <yajl/yajl_version.h>
147 +#endif
149  #include <_libxl_types_json.h>
150  #include <_libxl_types_internal_json.h>
152 +/* YAJL version check */
153 +#if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1)
154 +#  define HAVE_YAJL_V2 1
155 +#endif
157  #endif /* LIBXL_JSON_H */
158 diff -r f72b99fccfca -r 716d6d48e647 tools/libxl/libxl_qmp.c
159 --- a/tools/libxl/libxl_qmp.c   Tue Dec 20 08:31:40 2011 +0100
160 +++ b/tools/libxl/libxl_qmp.c   Tue Dec 20 13:52:55 2011 +0100
161 @@ -453,15 +453,26 @@ static char *qmp_send_prepare(libxl__gc 
162                                qmp_callback_t callback, void *opaque,
163                                qmp_request_context *context)
165 +#ifndef HAVE_YAJL_V2
166      yajl_gen_config conf = { 0, NULL };
167 +#endif
168      const unsigned char *buf = NULL;
169      char *ret = NULL;
170 +#ifdef HAVE_YAJL_V2
171 +    size_t len = 0;
172 +#else
173      unsigned int len = 0;
174 +#endif
175      yajl_gen_status s;
176      yajl_gen hand;
177      callback_id_pair *elm = NULL;
179 +#ifdef HAVE_YAJL_V2
180 +    hand = yajl_gen_alloc(NULL);
181 +#else
182      hand = yajl_gen_alloc(&conf, NULL);
183 +#endif
185      if (!hand) {
186          return NULL;
187      }