src/configfile.c: s/TypesDS/TypesDB/;
[collectd.git] / src / plugin.c
index cf4af74..495e169 100644 (file)
@@ -118,10 +118,10 @@ static int plugin_unregister (llist_t *list, const char *name)
  * object, but it will bitch about a shared object not having a
  * ``module_register'' symbol..
  */
-static int plugin_load_file (char *file, modreg_e load)
+static int plugin_load_file (char *file)
 {
        lt_dlhandle dlh;
-       void (*reg_handle) (modreg_e mr);
+       void (*reg_handle) (void);
 
        DEBUG ("file = %s", file);
 
@@ -137,7 +137,7 @@ static int plugin_load_file (char *file, modreg_e load)
                return (1);
        }
 
-       if ((reg_handle = (void (*) (modreg_e)) lt_dlsym (dlh, "module_register")) == NULL)
+       if ((reg_handle = (void (*) (void)) lt_dlsym (dlh, "module_register")) == NULL)
        {
                WARNING ("Couldn't find symbol ``module_register'' in ``%s'': %s\n",
                                file, lt_dlerror ());
@@ -145,7 +145,7 @@ static int plugin_load_file (char *file, modreg_e load)
                return (-1);
        }
 
-       (*reg_handle) (load);
+       (*reg_handle) ();
 
        return (0);
 }
@@ -186,6 +186,8 @@ static void *plugin_read_thread (void *args)
 
                        if (status != 0)
                        {
+                               if (rf->wait_time < interval_g)
+                                       rf->wait_time = interval_g;
                                rf->wait_left = rf->wait_time;
                                rf->wait_time = rf->wait_time * 2;
                                if (rf->wait_time > 86400)
@@ -291,7 +293,7 @@ void plugin_set_dir (const char *dir)
 }
 
 #define BUFSIZE 512
-int plugin_load (const char *type, modreg_e mr)
+int plugin_load (const char *type)
 {
        DIR  *dh;
        const char *dir;
@@ -348,7 +350,7 @@ int plugin_load (const char *type, modreg_e mr)
                        continue;
                }
 
-               if (plugin_load_file (filename, mr) == 0)
+               if (plugin_load_file (filename) == 0)
                {
                        /* success */
                        ret = 0;
@@ -437,7 +439,6 @@ int plugin_unregister_init (const char *name)
 
 int plugin_unregister_read (const char *name)
 {
-       return (plugin_unregister (list_read, name));
        llentry_t *e;
 
        e = llist_search (list_read, name);
@@ -494,15 +495,16 @@ void plugin_init_all (void)
        le = llist_head (list_init);
        while (le != NULL)
        {
-               callback = le->value;
+               callback = (int (*) (void)) le->value;
                status = (*callback) ();
 
                if (status != 0)
                {
                        ERROR ("Initialization of plugin `%s' "
                                        "failed with status %i. "
-                                       "Plugin will be unloaded. TODO!",
+                                       "Plugin will be unloaded.",
                                        le->key, status);
+                       /* FIXME: Unload _all_ functions */
                        plugin_unregister_read (le->key);
                }
 
@@ -560,7 +562,7 @@ void plugin_shutdown_all (void)
        le = llist_head (list_shutdown);
        while (le != NULL)
        {
-               callback = le->value;
+               callback = (int (*) (void)) le->value;
                (*callback) ();
 
                le = le->next;
@@ -595,7 +597,7 @@ int plugin_dispatch_values (const char *name, const value_list_t *vl)
        le = llist_head (list_write);
        while (le != NULL)
        {
-               callback = le->value;
+               callback = (int (*) (const data_set_t *, const value_list_t *)) le->value;
                (*callback) (ds, vl);
 
                le = le->next;
@@ -628,7 +630,7 @@ void plugin_log (int level, const char *format, ...)
        le = llist_head (list_log);
        while (le != NULL)
        {
-               callback = le->value;
+               callback = (void (*) (int, const char *)) le->value;
                (*callback) (level, msg);
 
                le = le->next;