X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=graph_list.c;h=1306335d3cdd9a84f69cc16efbfe17a25327cf45;hb=42951ae87738d2d359952459cae55237e6526ee1;hp=baa8849ea0f9c9985e40da8457263f7e1404d0f8;hpb=5a31f034b6c6e0056109f9f6766ccc674a7d1b95;p=collection4.git diff --git a/graph_list.c b/graph_list.c index baa8849..1306335 100644 --- a/graph_list.c +++ b/graph_list.c @@ -7,10 +7,43 @@ #include "graph_list.h" #include "common.h" +#define UPDATE_INTERVAL 10 + static graph_list_t *graph_list = NULL; static size_t graph_list_length = 0; static time_t gl_last_update = 0; +static void gl_clear_entry (graph_list_t *gl) /* {{{ */ +{ + if (gl == NULL) + return; + + free (gl->host); + free (gl->plugin); + free (gl->plugin_instance); + free (gl->type); + free (gl->type_instance); + + gl->host = NULL; + gl->plugin = NULL; + gl->plugin_instance = NULL; + gl->type = NULL; + gl->type_instance = NULL; +} /* }}} void gl_clear_entry */ + +static void gl_clear (void) +{ + size_t i; + + for (i = 0; i < graph_list_length; i++) + gl_clear_entry (graph_list + i); + + free (graph_list); + graph_list = NULL; + graph_list_length = 0; + gl_last_update = 0; +} /* }}} void gl_clear */ + static int gl_add_copy (graph_list_t *gl) /* {{{ */ { graph_list_t *ptr; @@ -166,9 +199,11 @@ int gl_update (void) /* {{{ */ now = time (NULL); - if ((gl_last_update + 2) >= now) + if ((gl_last_update + UPDATE_INTERVAL) >= now) return (0); + gl_clear (); + memset (&gl, 0, sizeof (gl)); gl.host = NULL; gl.plugin = NULL;