src/graph_list.c: Honor the "CacheFile" option.
[collection4.git] / src / graph_list.c
index ac4bfac..1614307 100644 (file)
@@ -38,6 +38,7 @@
 
 #include "graph_list.h"
 #include "common.h"
+#include "data_provider.h"
 #include "filesystem.h"
 #include "graph.h"
 #include "graph_config.h"
@@ -54,7 +55,6 @@
  * Defines
  */
 #define UPDATE_INTERVAL 900
-#define CACHE_FILE "/tmp/collection4.json"
 
 /*
  * Global variables
@@ -209,6 +209,14 @@ static int gl_register_file (const graph_ident_t *file, /* {{{ */
   return (0);
 } /* }}} int gl_register_file */
 
+static int gl_register_ident (graph_ident_t *ident, /* {{{ */
+    __attribute__((unused)) void *user_data)
+{
+  /* TODO: Check for duplicates if multiple data providers are used. */
+
+  return (gl_register_file (ident, user_data));
+} /* }}} int gl_register_ident */
+
 static const char *get_part_from_param (const char *prim_key, /* {{{ */
     const char *sec_key)
 {
@@ -260,21 +268,19 @@ static int gl_update_cache (void) /* {{{ */
   int fd;
   yajl_gen handler;
   yajl_gen_config handler_config = { /* pretty = */ 1, /* indent = */ "  " };
+  const char *cache_file = graph_config_get_cachefile ();
   struct flock lock;
   struct stat statbuf;
   int status;
   size_t i;
 
   memset (&statbuf, 0, sizeof (statbuf));
-  status = stat (CACHE_FILE, &statbuf);
+  status = stat (cache_file, &statbuf);
   if (status == 0)
   {
     if (statbuf.st_mtime >= gl_last_update)
-    {
-      fprintf (stderr, "gl_update_cache: Not writing to cache because it's "
-          "at least as new as our internal data\n");
+      /* Not writing to cache because it's at least as new as our internal data */
       return (0);
-    }
   }
   else
   {
@@ -284,7 +290,7 @@ static int gl_update_cache (void) /* {{{ */
     /* Continue writing the file if possible. */
   }
 
-  fd = open (CACHE_FILE, O_WRONLY | O_TRUNC | O_CREAT,
+  fd = open (cache_file, O_WRONLY | O_TRUNC | O_CREAT,
       S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
   if (fd < 0)
   {
@@ -614,7 +620,7 @@ static int gl_read_cache (_Bool block) /* {{{ */
   int status;
   time_t now;
 
-  fd = open (CACHE_FILE, O_RDONLY);
+  fd = open (graph_config_get_cachefile (), O_RDONLY);
   if (fd < 0)
   {
     fprintf (stderr, "gl_read_cache: open(2) failed with status %i\n", errno);
@@ -775,25 +781,6 @@ int gl_config_submit (void) /* {{{ */
   return (0);
 } /* }}} int graph_config_submit */
 
-int gl_register_ident (const char *provider, const graph_ident_t *ident) /* {{{ */
-{
-  char *ident_str = ident_to_string (ident);
-
-  fprintf (stderr, "gl_register_ident (provider = %s, ident = %s)\n",
-      provider, ident_str);
-
-  free (ident_str);
-  return (0);
-} /* }}} int gl_register_ident */
-
-int gl_register_data_provider (const char *name, data_provider_t *p) /* {{{ */
-{
-  fprintf (stderr, "gl_register_data_provider (name = %s, ptr = %p)\n",
-      name, (void *) p);
-
-  return (0);
-} /* }}} int gl_register_data_provider */
-
 int gl_graph_get_all (_Bool include_dynamic, /* {{{ */
     graph_callback_t callback, void *user_data)
 {
@@ -1106,8 +1093,8 @@ int gl_update (_Bool request_served) /* {{{ */
     gl_clear_hosts ();
     gl_destroy (&gl_dynamic, &gl_dynamic_num);
 
-    status = fs_scan (/* callback = */ gl_register_file,
-        /* user data = */ NULL);
+    data_provider_get_idents (gl_register_ident, /* user data = */ NULL);
+
     gl_last_update = now;
   }