+
+static int mb_config_add_dataset (oconfig_item_t *ci) /* {{{ */
+{
+ mb_dataset_t dataset;
+ int status;
+ int i;
+
+ memset (&dataset, 0, sizeof (dataset));
+ dataset.name = NULL;
+ dataset.collect = NULL;
+ dataset.next = NULL;
+
+ status = cf_util_get_string (ci, &dataset.name);
+
+ for (i = 0; i < ci->children_num; i++)
+ {
+ oconfig_item_t *child = ci->children + i;
+ status = 0;
+
+ if (strcasecmp ("Collect", child->key) == 0)
+ {
+ char buffer[1024];
+ status = cf_util_get_string_buffer (child, buffer, sizeof (buffer));
+ if (status == 0) {
+ data_copy_by_name (&dataset.collect, data_definitions, buffer);
+ }
+ status = 0; /* continue after failure. */
+ }
+ else
+ {
+ ERROR ("Modbus plugin: Unknown configuration option: %s", child->key);
+ status = -1;
+ }
+
+ if (status != 0)
+ break;
+ } /* for (i = 0; i < ci->children_num; i++) */
+
+ if ((status == 0) && (dataset.collect == NULL))
+ status = EINVAL;
+
+ if (status == 0)
+ dataset_copy (&data_sets, &dataset);
+
+ return (status);
+} /* }}} int mb_config_add_dataset */
+