X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Fgraph_list.c;h=b979672ec3a0cbb2abb0160bf8a458450c8af763;hp=ac4bfac78a3082e76293e98637a497c088142aaa;hb=49f649c73d6b8481e40158de5b76e9cbfd4350d5;hpb=c182e93607995902b9211be0041e4e8f8fa8ba12 diff --git a/src/graph_list.c b/src/graph_list.c index ac4bfac..b979672 100644 --- a/src/graph_list.c +++ b/src/graph_list.c @@ -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_cache_file (); 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_cache_file (), 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; }