+int plugin_register_complex_read (const char *name,
+ plugin_read_cb callback, user_data_t *user_data)
+{
+ read_func_t *rf;
+
+ rf = (read_func_t *) malloc (sizeof (read_func_t));
+ if (rf == NULL)
+ {
+ ERROR ("plugin_register_complex_read: malloc failed.");
+ return (-1);
+ }
+
+ memset (rf, 0, sizeof (read_func_t));
+ rf->wait_time = interval_g;
+ rf->wait_left = 0;
+ rf->type = RF_COMPLEX;
+ rf->callback.cb_complex = callback;
+ rf->needs_read = DONE;
+
+ /* Set user data */
+ if (user_data == NULL)
+ {
+ rf->udata.data = NULL;
+ rf->udata.free_func = NULL;
+ }
+ else
+ {
+ rf->udata = *user_data;
+ }
+
+ return (register_callback (&list_read, name, (void *) rf));
+} /* int plugin_register_complex_read */
+