Fixed documentation in `configfile.h': s/Module/Plugin/
authorocto <octo>
Thu, 22 Dec 2005 17:09:20 +0000 (17:09 +0000)
committerocto <octo>
Thu, 22 Dec 2005 17:09:20 +0000 (17:09 +0000)
Moved an error message in `common.c'..
Moved the call to `check_create_dir' so it's run less frequently.

configure.in
src/common.c
src/configfile.h
src/plugin.c

index 976f932..1ae7ec2 100644 (file)
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(collectd, 3.6.alpha0)
+AC_INIT(collectd, 3.6.alpha1)
 AC_CONFIG_SRCDIR(src/collectd.c)
 AC_CONFIG_HEADERS(src/config.h)
 AM_INIT_AUTOMAKE(dist-bzip2)
index db8fce1..4d93f4a 100644 (file)
@@ -222,22 +222,25 @@ int check_create_dir (const char *file_orig)
        for (i = 0; i < (fields_num - last_is_file); i++)
        {
                /*
-                * Join the components together again
-                */
-               if (strjoin (dir, dir_len, fields, i + 1, "/") < 0)
-                       return (-1);
-
-               /*
                 * Do not create directories that start with a dot. This
                 * prevents `../../' attacks and other likely malicious
                 * behavior.
                 */
                if (fields[i][0] == '.')
                {
-                       syslog (LOG_ERR, "Cowardly refusing to create a directory that begins with a `.' (dot): `%s'", dir);
+                       syslog (LOG_ERR, "Cowardly refusing to create a directory that begins with a `.' (dot): `%s'", file_orig);
                        return (-2);
                }
 
+               /*
+                * Join the components together again
+                */
+               if (strjoin (dir, dir_len, fields, i + 1, "/") < 0)
+               {
+                       syslog (LOG_ERR, "strjoin failed: `%s', component #%i", file_orig, i);
+                       return (-1);
+               }
+
                if (stat (dir, &statbuf) == -1)
                {
                        if (errno == ENOENT)
@@ -271,6 +274,9 @@ int rrd_create_file (char *filename, char **ds_def, int ds_num)
        int i, j;
        int status = 0;
 
+       if (check_create_dir (filename))
+               return (-1);
+
        argc = ds_num + rra_num + 4;
 
        if ((argv = (char **) malloc (sizeof (char *) * (argc + 1))) == NULL)
@@ -316,9 +322,6 @@ int rrd_update_file (char *host, char *file, char *values,
        /* host == NULL => local mode */
        if (host != NULL)
        {
-               if (check_create_dir (host))
-                       return (-1);
-
                if (snprintf (full_file, 1024, "%s/%s", host, file) >= 1024)
                        return (-1);
        }
index 0458360..4f82eef 100644 (file)
@@ -37,7 +37,7 @@ void cf_unregister (char *type);
  * DESCRIPTION
  *  `cf_register' is called by plugins that wish to receive config keys. The
  *  plugin will then receive all keys it registered for if they're found in a
- *  `<Module $type>' section.
+ *  `<Plugin $type>' section.
  *
  * PARAMETERS
  *  `type'      Name of the plugin (must be the same as passed to
index abc08e5..98add24 100644 (file)
@@ -292,7 +292,7 @@ void plugin_register (char *type,
 #ifdef HAVE_LIBRRD
        if ((operating_mode == MODE_LOCAL) || (operating_mode == MODE_CLIENT))
 #endif
-               if (read == NULL)
+               if ((init != NULL) && (read == NULL))
                        syslog (LOG_NOTICE, "Plugin `%s' doesn't provide a read function.", type);
 
        if ((p = (plugin_t *) malloc (sizeof (plugin_t))) == NULL)