# data set definition:
# see section "DATA TYPES" in collectd-perl(5) for details
-# (take a look at the types.db file for a large list of predefined data-sets)
+#
+# NOTE: If you're defining a custom data-set, you have to make that known to
+# any servers as well. Else, the server is not able to store values using the
+# type defined by that data-set.
+# It is strongly recommended to use one of the types and data-sets pre-defined
+# in the types.db file.
my $dataset =
[
{
# dispatch the values to collectd which passes them on to all registered
# write functions - the first argument is used to lookup the data set
- # definition
+ # definition (it is strongly recommended to use a type defined in the
+ # types.db file)
plugin_dispatch_values ('myplugin', $vl);
# A false return value indicates an error and the plugin will be skipped
* - name of the data set
* - number of data sources
* - list of data sources
+ *
+ * NOTE: If you're defining a custom data-set, you have to make that known to
+ * any servers as well. Else, the server is not able to store values using the
+ * type defined by that data-set.
+ * It is strongly recommended to use one of the types and data-sets
+ * pre-defined in the types.db file.
*/
static data_set_t ds =
{
/* dispatch the values to collectd which passes them on to all registered
* write functions - the first argument is used to lookup the data set
- * definition */
+ * definition (it is strongly recommended to use a type defined in the
+ * types.db file) */
plugin_dispatch_values ("myplugin", &vl);
/* A return value != 0 indicates an error and the plugin will be skipped
#<Plugin exec>
# Exec "user:group" "/path/to/exec"
-# NotificationExec "/path/to/exec"
+# NotificationExec "user:group" "/path/to/exec"
#</Plugin>
@BUILD_PLUGIN_HDDTEMP_TRUE@<Plugin hddtemp>
if((r = strdup (s)) == NULL)
{
- DEBUG ("Not enough memory.");
- exit(3);
+ ERROR ("Not enough memory.");
+ exit (3);
}
return (r);
-}
+} /* char *sstrdup */
/* Even though Posix requires "strerror_r" to return an "int",
* some systems (e.g. the GNU libc) return a "char *" _and_
if ((r = malloc (size)) == NULL)
{
- DEBUG("Not enough memory.");
- exit(3);
+ ERROR ("Not enough memory.");
+ exit (3);
}
- return r;
-}
+ return (r);
+} /* void *smalloc */
#if 0
void sfree (void **ptr)
i = 0;
ptr = string;
saveptr = NULL;
- while ((fields[i] = strtok_r (ptr, " \t", &saveptr)) != NULL)
+ while ((fields[i] = strtok_r (ptr, " \t\r\n", &saveptr)) != NULL)
{
ptr = NULL;
i++;
strncpy (addr.sun_path, path, (size_t)(UNIX_PATH_MAX - 1));
addr.sun_path[UNIX_PATH_MAX - 1] = '\0';
- unlink (addr.sun_path);
errno = 0;
if (-1 == bind (connector_socket, (struct sockaddr *)&addr,
llentry_t *le;
int status;
- /* Start read-threads */
- if (list_read != NULL)
- {
- const char *rt;
- int num;
- rt = global_option_get ("ReadThreads");
- num = atoi (rt);
- start_threads ((num > 0) ? num : 5);
- }
-
/* Init the value cache */
uc_init ();
- if (list_init == NULL)
+ if ((list_init == NULL) && (list_read == NULL))
return;
+ /* Calling all init callbacks before checking if read callbacks
+ * are available allows the init callbacks to register the read
+ * callback. */
le = llist_head (list_init);
while (le != NULL)
{
"failed with status %i. "
"Plugin will be unloaded.",
le->key, status);
+ /* Plugins that register read callbacks from the init
+ * callback should take care of appropriate error
+ * handling themselves. */
/* FIXME: Unload _all_ functions */
plugin_unregister_read (le->key);
}
le = le->next;
}
+
+ /* Start read-threads */
+ if (list_read != NULL)
+ {
+ const char *rt;
+ int num;
+ rt = global_option_get ("ReadThreads");
+ num = atoi (rt);
+ start_threads ((num > 0) ? num : 5);
+ }
} /* void plugin_init_all */
void plugin_read_all (void)
optind = 0; /* bug in librrd? */
rrd_clear_error ();
- status = rrd_create_r (filename, pdp_step, last_up, argc, argv);
+ status = rrd_create_r (filename, pdp_step, last_up, argc, (void *) argv);
if (status != 0)
{
optind = 0; /* bug in librrd? */
rrd_clear_error ();
- status = rrd_update_r (filename, template, argc, argv);
+ status = rrd_update_r (filename, template, argc, (void *) argv);
if (status != 0)
{
{
static char buf[32];
switch (t) {
-#if (defined (__NAMESER)) && (__NAMESER >= 19991006)
+#if (defined (__NAMESER)) && (__NAMESER >= 19991001)
case ns_t_a: return ("A");
case ns_t_ns: return ("NS");
case ns_t_md: return ("MD");
case ns_t_dname: return ("DNAME");
case ns_t_sink: return ("SINK");
case ns_t_opt: return ("OPT");
+# if __NAMESER >= 19991006
case ns_t_tsig: return ("TSIG");
+# endif
case ns_t_ixfr: return ("IXFR");
case ns_t_axfr: return ("AXFR");
case ns_t_mailb: return ("MAILB");