src/graph.[ch]: Implement "graph_sort_instances".
[collection4.git] / src / graph_ident.c
index be3cbfd..7dda849 100644 (file)
@@ -34,6 +34,7 @@
 #include "graph_ident.h"
 #include "common.h"
 #include "filesystem.h"
+#include "utils_cgi.h"
 
 #include <fcgiapp.h>
 #include <fcgi_stdio.h>
@@ -93,8 +94,10 @@ static char *part_copy_with_selector (const char *selector, /* {{{ */
 static _Bool part_matches (const char *selector, /* {{{ */
     const char *part)
 {
+#if C4_DEBUG
   if ((selector == NULL) && (part == NULL))
     return (1);
+#endif
 
   if (selector == NULL) /* && (part != NULL) */
     return (0);
@@ -400,8 +403,10 @@ int ident_compare (const graph_ident_t *i0, /* {{{ */
 _Bool ident_matches (const graph_ident_t *selector, /* {{{ */
     const graph_ident_t *ident)
 {
+#if C4_DEBUG
   if ((selector == NULL) || (ident == NULL))
     return (0);
+#endif
 
   if (!part_matches (selector->host, ident->host))
     return (0);
@@ -476,6 +481,12 @@ char *ident_to_file (const graph_ident_t *ident) /* {{{ */
   return (strdup (buffer));
 } /* }}} char *ident_to_file */
 
+#define ADD_FIELD(field) do {                              \
+  char json[1024];                                         \
+  json_escape_copy (json, ident->field, sizeof (json));    \
+  strlcat (buffer, json, sizeof (buffer));                 \
+} while (0)
+
 char *ident_to_json (const graph_ident_t *ident) /* {{{ */
 {
   char buffer[4096];
@@ -483,20 +494,22 @@ char *ident_to_json (const graph_ident_t *ident) /* {{{ */
   buffer[0] = 0;
 
   strlcat (buffer, "{\"host\":\"", sizeof (buffer));
-  strlcat (buffer, ident->host, sizeof (buffer));
+  ADD_FIELD (host);
   strlcat (buffer, "\",\"plugin\":\"", sizeof (buffer));
-  strlcat (buffer, ident->plugin, sizeof (buffer));
+  ADD_FIELD (plugin);
   strlcat (buffer, "\",\"plugin_instance\":\"", sizeof (buffer));
-  strlcat (buffer, ident->plugin_instance, sizeof (buffer));
+  ADD_FIELD (plugin_instance);
   strlcat (buffer, "\",\"type\":\"", sizeof (buffer));
-  strlcat (buffer, ident->type, sizeof (buffer));
+  ADD_FIELD (type);
   strlcat (buffer, "\",\"type_instance\":\"", sizeof (buffer));
-  strlcat (buffer, ident->type_instance, sizeof (buffer));
+  ADD_FIELD (type_instance);
   strlcat (buffer, "\"}", sizeof (buffer));
 
   return (strdup (buffer));
 } /* }}} char *ident_to_json */
 
+#undef ADD_FIELD
+
 time_t ident_get_mtime (const graph_ident_t *ident) /* {{{ */
 {
   char *file;