X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplugin.c;h=20f3aa2b72d76fa6f0ef1f2901b600b881eadea5;hb=f3169b788b67f560f28b08eaddf1c45257cb1634;hp=bf8fb085685e0e48ba4bf6c570b0b31618e1d60c;hpb=abfe65ffb5239060c0c9558d916bbeddee0bc86c;p=collectd.git diff --git a/src/plugin.c b/src/plugin.c index bf8fb085..20f3aa2b 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -149,14 +149,14 @@ static int plugin_load_file (char *file) { const char *error = lt_dlerror (); - ERROR ("lt_dlopen failed: %s", error); - fprintf (stderr, "lt_dlopen failed: %s\n", error); + ERROR ("lt_dlopen (%s) failed: %s", file, error); + fprintf (stderr, "lt_dlopen (%s) failed: %s\n", file, error); return (1); } if ((reg_handle = (void (*) (void)) lt_dlsym (dlh, "module_register")) == NULL) { - WARNING ("Couldn't find symbol ``module_register'' in ``%s'': %s\n", + WARNING ("Couldn't find symbol `module_register' in `%s': %s\n", file, lt_dlerror ()); lt_dlclose (dlh); return (-1); @@ -367,6 +367,7 @@ int plugin_load (const char *type) else if (!S_ISREG (statbuf.st_mode)) { /* don't follow symlinks */ + WARNING ("stat %s: not a regular file", filename); continue; } @@ -665,43 +666,6 @@ void plugin_read_all (void) pthread_mutex_unlock (&read_lock); } /* void plugin_read_all */ -int plugin_flush_one (int timeout, const char *name) -{ - int (*callback) (int); - llentry_t *le; - int status; - - if (list_flush == NULL) - return (-1); - - le = llist_search (list_flush, name); - if (le == NULL) - return (-1); - callback = (int (*) (int)) le->value; - - status = (*callback) (timeout); - - return (status); -} /* int plugin_flush_ont */ - -void plugin_flush_all (int timeout) -{ - int (*callback) (int); - llentry_t *le; - - if (list_flush == NULL) - return; - - le = llist_head (list_flush); - while (le != NULL) - { - callback = (int (*) (int)) le->value; - le = le->next; - - (*callback) (timeout); - } -} /* void plugin_flush_all */ - int plugin_flush (const char *plugin, int timeout, const char *identifier) { int (*callback) (int timeout, const char *identifier); @@ -714,13 +678,16 @@ int plugin_flush (const char *plugin, int timeout, const char *identifier) while (le != NULL) { if ((plugin != NULL) - && (strcmp (plugin, le->key) != 0)) + && (strcmp (plugin, le->key) != 0)) + { + le = le->next; continue; + } callback = (int (*) (int, const char *)) le->value; - le = le->next; - (*callback) (timeout, identifier); + + le = le->next; } return (0); } /* int plugin_flush */ @@ -864,7 +831,7 @@ int plugin_dispatch_notification (const notification_t *notif) void plugin_log (int level, const char *format, ...) { - char msg[512]; + char msg[1024]; va_list ap; void (*callback) (int, const char *); @@ -879,8 +846,8 @@ void plugin_log (int level, const char *format, ...) #endif va_start (ap, format); - vsnprintf (msg, 512, format, ap); - msg[511] = '\0'; + vsnprintf (msg, sizeof (msg), format, ap); + msg[sizeof (msg) - 1] = '\0'; va_end (ap); le = llist_head (list_log); @@ -907,9 +874,9 @@ const data_set_t *plugin_get_ds (const char *name) } /* data_set_t *plugin_get_ds */ static int plugin_notification_meta_add (notification_t *n, - const char *name, - enum notification_meta_type_e type, - const void *value) + const char *name, + enum notification_meta_type_e type, + const void *value) { notification_meta_t *meta; notification_meta_t *tail; @@ -935,8 +902,8 @@ static int plugin_notification_meta_add (notification_t *n, { case NM_TYPE_STRING: { - meta->value_string = strdup ((const char *) value); - if (meta->value_string == NULL) + meta->nm_value.nm_string = strdup ((const char *) value); + if (meta->nm_value.nm_string == NULL) { ERROR ("plugin_notification_meta_add: strdup failed."); sfree (meta); @@ -946,22 +913,22 @@ static int plugin_notification_meta_add (notification_t *n, } case NM_TYPE_SIGNED_INT: { - meta->value_signed_int = *((int64_t *) value); + meta->nm_value.nm_signed_int = *((int64_t *) value); break; } case NM_TYPE_UNSIGNED_INT: { - meta->value_unsigned_int = *((uint64_t *) value); + meta->nm_value.nm_unsigned_int = *((uint64_t *) value); break; } case NM_TYPE_DOUBLE: { - meta->value_double = *((double *) value); + meta->nm_value.nm_double = *((double *) value); break; } case NM_TYPE_BOOLEAN: { - meta->value_boolean = *((bool *) value); + meta->nm_value.nm_boolean = *((bool *) value); break; } default: @@ -1034,19 +1001,19 @@ int plugin_notification_meta_copy (notification_t *dst, { if (meta->type == NM_TYPE_STRING) plugin_notification_meta_add_string (dst, meta->name, - meta->value_string); + meta->nm_value.nm_string); else if (meta->type == NM_TYPE_SIGNED_INT) plugin_notification_meta_add_signed_int (dst, meta->name, - meta->value_signed_int); + meta->nm_value.nm_signed_int); else if (meta->type == NM_TYPE_UNSIGNED_INT) plugin_notification_meta_add_unsigned_int (dst, meta->name, - meta->value_unsigned_int); + meta->nm_value.nm_unsigned_int); else if (meta->type == NM_TYPE_DOUBLE) plugin_notification_meta_add_double (dst, meta->name, - meta->value_double); + meta->nm_value.nm_double); else if (meta->type == NM_TYPE_BOOLEAN) plugin_notification_meta_add_boolean (dst, meta->name, - meta->value_boolean); + meta->nm_value.nm_boolean); } return (0); @@ -1071,8 +1038,8 @@ int plugin_notification_meta_free (notification_t *n) if (this->type == NM_TYPE_STRING) { - free ((char *)this->value_string); - this->value_string = NULL; + free ((char *)this->nm_value.nm_string); + this->nm_value.nm_string = NULL; } sfree (this);