i3 - improved tiling WM


commands.c yajl macros allow NULL json_gen

Patch status: superseded

Patch by Tony Crisci

To apply this patch, use:
curl http://cr.i3wm.org/patch/558/raw.patch | git am

b/src/commands.c

13
@@ -16,21 +16,25 @@
14
 #include "shmlog.h"
15
 
16
 // Macros to make the YAJL API a bit easier to use.
17
-#define y(x, ...) yajl_gen_ ## x (cmd_output->json_gen, ##__VA_ARGS__)
18
-#define ystr(str) yajl_gen_string(cmd_output->json_gen, (unsigned char*)str, strlen(str))
19
+#define y(x, ...) (cmd_output->json_gen != NULL ? yajl_gen_ ## x (cmd_output->json_gen, ##__VA_ARGS__) : 0)
20
+#define ystr(str) (cmd_output->json_gen != NULL ? yajl_gen_string(cmd_output->json_gen, (unsigned char*)str, strlen(str)) : 0)
21
 #define ysuccess(success) do { \
22
-    y(map_open); \
23
-    ystr("success"); \
24
-    y(bool, success); \
25
-    y(map_close); \
26
+    if (cmd_output->json_gen != NULL) { \
27
+        y(map_open); \
28
+        ystr("success"); \
29
+        y(bool, success); \
30
+        y(map_close); \
31
+    } \
32
 } while (0)
33
 #define yerror(message) do { \
34
-    y(map_open); \
35
-    ystr("success"); \
36
-    y(bool, false); \
37
-    ystr("error"); \
38
-    ystr(message); \
39
-    y(map_close); \
40
+    if (cmd_output->json_gen != NULL) { \
41
+        y(map_open); \
42
+        ystr("success"); \
43
+        y(bool, false); \
44
+        ystr("error"); \
45
+        ystr(message); \
46
+        y(map_close); \
47
+    } \
48
 } while (0)
49
 
50
 /** When the command did not include match criteria (!), we use the currently