Code

Use the sdb_error* function throughout the project.
[sysdb.git] / src / core / plugin.c
index 5c9a233eadc873440fc5c6ce54a1937f4c160db3..7f5883aa20cefa0a4e1e07afb8b89a3afe54a598 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "sysdb.h"
 #include "core/plugin.h"
+#include "utils/error.h"
 #include "utils/llist.h"
 #include "utils/string.h"
 #include "utils/time.h"
@@ -198,9 +199,9 @@ sdb_plugin_cb_init(sdb_object_t *obj, va_list ap)
        assert(obj);
 
        if (sdb_plugin_find_by_name(*list, name)) {
-               fprintf(stderr, "plugin: %s callback '%s' has already been "
-                               "registered. Ignoring newly registered version.\n",
-                               type, name);
+               sdb_error_set(SDB_LOG_WARNING, "plugin: %s callback '%s' "
+                               "has already been registered. Ignoring newly "
+                               "registered version.\n", type, name);
                return -1;
        }
 
@@ -252,7 +253,8 @@ sdb_plugin_add_callback(sdb_llist_t **list, const char *type,
        /* pass control to the list */
        sdb_object_deref(obj);
 
-       fprintf(stderr, "plugin: Registered %s callback '%s'.\n", type, name);
+       sdb_error_set(SDB_LOG_INFO, "plugin: Registered %s callback '%s'.\n",
+                       type, name);
        return 0;
 } /* sdb_plugin_add_callback */
 
@@ -278,7 +280,7 @@ sdb_plugin_load(const char *name)
 
        if (access(filename, R_OK)) {
                char errbuf[1024];
-               fprintf(stderr, "plugin: Failed to load plugin '%s': %s\n",
+               sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': %s\n",
                                name, sdb_strerror(errno, errbuf, sizeof(errbuf)));
                return -1;
        }
@@ -288,7 +290,7 @@ sdb_plugin_load(const char *name)
 
        lh = lt_dlopen(filename);
        if (! lh) {
-               fprintf(stderr, "plugin: Failed to load plugin '%s': %s\n"
+               sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': %s\n"
                                "The most common cause for this problem are missing "
                                "dependencies.\n", name, lt_dlerror());
                return -1;
@@ -296,27 +298,28 @@ sdb_plugin_load(const char *name)
 
        mod_init = (int (*)(sdb_plugin_info_t *))lt_dlsym(lh, "sdb_module_init");
        if (! mod_init) {
-               fprintf(stderr, "plugin: Failed to load plugin '%s': "
+               sdb_error_set(SDB_LOG_ERR, "plugin: Failed to load plugin '%s': "
                                "could not find symbol 'sdb_module_init'\n", name);
                return -1;
        }
 
        status = mod_init(&plugin_info);
        if (status) {
-               fprintf(stderr, "plugin: Failed to initialize plugin '%s'\n", name);
+               sdb_error_set(SDB_LOG_ERR, "plugin: Failed to initialize "
+                               "plugin '%s'\n", name);
                return -1;
        }
 
        /* compare minor version */
        if ((plugin_info.version < 0)
                        || ((int)(plugin_info.version / 100) != (int)(SDB_VERSION / 100)))
-               fprintf(stderr, "plugin: WARNING: version of plugin '%s' (%i.%i.%i) "
-                               "does not match our version (%i.%i.%i); "
-                               "this might cause problems\n",
+               sdb_error_set(SDB_LOG_WARNING, "plugin: WARNING: version of "
+                               "plugin '%s' (%i.%i.%i) does not match our version "
+                               "(%i.%i.%i); this might cause problems\n",
                                name, SDB_VERSION_DECODE(plugin_info.version),
                                SDB_VERSION_DECODE(SDB_VERSION));
 
-       fprintf(stderr, "plugin: Successfully loaded "
+       sdb_error_set(SDB_LOG_INFO, "plugin: Successfully loaded "
                        "plugin '%s' v%i (%s)\n\t%s\n",
                        plugin_info.name, plugin_info.plugin_version,
                        plugin_info.description, plugin_info.copyright);
@@ -435,8 +438,8 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
 
        if (! (SDB_PLUGIN_CCB(obj)->ccb_next_update = sdb_gettime())) {
                char errbuf[1024];
-               fprintf(stderr, "plugin: Failed to determine current time: %s\n",
-                               sdb_strerror(errno, errbuf, sizeof(errbuf)));
+               sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+                               "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
                sdb_object_deref(obj);
                return -1;
        }
@@ -450,7 +453,7 @@ sdb_plugin_register_collector(const char *name, sdb_plugin_collector_cb callback
        /* pass control to the list */
        sdb_object_deref(obj);
 
-       fprintf(stderr, "plugin: Registered collector callback '%s' "
+       sdb_error_set(SDB_LOG_INFO, "plugin: Registered collector callback '%s' "
                        "(interval = %.3fs).\n", name,
                        SDB_TIME_TO_DOUBLE(SDB_PLUGIN_CCB(obj)->ccb_interval));
        return 0;
@@ -507,7 +510,8 @@ sdb_plugin_configure(const char *name, oconfig_item_t *ci)
 
        plugin = sdb_plugin_find_by_name(config_list, name);
        if (! plugin) {
-               fprintf(stderr, "plugin: Plugin '%s' did not register "
+               /* XXX: check if any such plugin has been loaded */
+               sdb_error_set(SDB_LOG_ERR, "plugin: Plugin '%s' did not register "
                                "a config callback.\n", name);
                errno = ENOENT;
                return -1;
@@ -564,8 +568,8 @@ sdb_plugin_collector_loop(sdb_plugin_loop_t *loop)
 
                if (! (now = sdb_gettime())) {
                        char errbuf[1024];
-                       fprintf(stderr, "plugin: Failed to determine current time: %s\n",
-                                       sdb_strerror(errno, errbuf, sizeof(errbuf)));
+                       sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+                                       "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
                        now = SDB_PLUGIN_CCB(obj)->ccb_next_update;
                }
 
@@ -576,7 +580,7 @@ sdb_plugin_collector_loop(sdb_plugin_loop_t *loop)
                        while (loop->do_loop && sdb_sleep(interval, &interval)) {
                                if (errno != EINTR) {
                                        char errbuf[1024];
-                                       fprintf(stderr, "plugin: Failed to sleep: %s\n",
+                                       sdb_error_set(SDB_LOG_ERR, "plugin: Failed to sleep: %s\n",
                                                        sdb_strerror(errno, errbuf, sizeof(errbuf)));
                                        return -1;
                                }
@@ -597,7 +601,7 @@ sdb_plugin_collector_loop(sdb_plugin_loop_t *loop)
                if (! interval)
                        interval = loop->default_interval;
                if (! interval) {
-                       fprintf(stderr, "plugin: No interval configured "
+                       sdb_error_set(SDB_LOG_WARNING, "plugin: No interval configured "
                                        "for plugin '%s'; skipping any further "
                                        "iterations.\n", SDB_PLUGIN_CCB(obj)->ccb_name);
                        sdb_object_deref(obj);
@@ -608,22 +612,23 @@ sdb_plugin_collector_loop(sdb_plugin_loop_t *loop)
 
                if (! (now = sdb_gettime())) {
                        char errbuf[1024];
-                       fprintf(stderr, "plugin: Failed to determine current time: %s\n",
-                                       sdb_strerror(errno, errbuf, sizeof(errbuf)));
+                       sdb_error_set(SDB_LOG_ERR, "plugin: Failed to determine current "
+                                       "time: %s\n", sdb_strerror(errno, errbuf, sizeof(errbuf)));
                        now = SDB_PLUGIN_CCB(obj)->ccb_next_update;
                }
 
                if (now > SDB_PLUGIN_CCB(obj)->ccb_next_update) {
-                       fprintf(stderr, "plugin: Plugin '%s' took too long; "
-                                       "skipping iterations to keep up.\n",
+                       sdb_error_set(SDB_LOG_WARNING, "plugin: Plugin '%s' took too "
+                                       "long; skipping iterations to keep up.\n",
                                        SDB_PLUGIN_CCB(obj)->ccb_name);
                        SDB_PLUGIN_CCB(obj)->ccb_next_update = now;
                }
 
                if (sdb_llist_insert_sorted(collector_list, obj,
                                        sdb_plugin_cmp_next_update)) {
-                       fprintf(stderr, "plugin: Failed to re-insert "
-                                       "plugin '%s' into collector list.\n",
+                       sdb_error_set(SDB_LOG_ERR, "plugin: Failed to re-insert "
+                                       "plugin '%s' into collector list. Unable to further "
+                                       "use the plugin.\n",
                                        SDB_PLUGIN_CCB(obj)->ccb_name);
                        sdb_object_deref(obj);
                        return -1;