diff --git a/src/configfile.c b/src/configfile.c
index 876ee23ee71c8c33d2f230170bf94147a6012404..044180ee83a3aa646ec49406e09c7836563716cb 100644 (file)
--- a/src/configfile.c
+++ b/src/configfile.c
{"Interval", NULL, NULL},
{"ReadThreads", NULL, "5"},
{"WriteThreads", NULL, "5"},
+ {"WriteQueueLengthLimitHigh", NULL, NULL},
+ {"WriteQueueLengthLimitLow", NULL, NULL},
{"Timeout", NULL, "2"},
{"AutoLoadPlugin", NULL, "false"},
{"PreCacheChain", NULL, "PreCache"},
sfree (pattern);
if (new == NULL)
- continue;
+ return (-1);
/* Now replace the i'th child in `root' with `new'. */
cf_ci_replace_child (root, new, i);
const char *pattern, int depth)
{
oconfig_item_t *root;
+ int status;
assert (depth < CF_MAX_DEPTH);
return (NULL);
}
- cf_include_all (root, depth);
+ status = cf_include_all (root, depth);
+ if (status != 0)
+ {
+ oconfig_free (root);
+ return (NULL);
+ }
return (root);
} /* oconfig_item_t *cf_read_file */
wordfree (&we);
- if (root->children == NULL)
- {
- oconfig_free (root);
- return (NULL);
- }
-
return (root);
} /* oconfig_item_t *cf_read_generic */
/* #endif HAVE_WORDEXP_H */
: cf_global_options[i].def);
} /* char *global_option_get */
+long global_option_get_long (const char *option, long default_value)
+{
+ const char *str;
+ long value;
+
+ str = global_option_get(option);
+ if(NULL == str) return(default_value);
+
+ errno = 0;
+ value = strtol(str, NULL, 10);
+ if (errno == ERANGE && (value == LONG_MAX || value == LONG_MIN)) return(default_value);
+ if (errno != 0 && value == 0) return(default_value);
+ return(value);
+} /* char *global_option_get_long */
+
+long global_option_get_long_in_range (const char *option, long default_value, long min, long max)
+{
+ long value;
+
+ assert(min <= max);
+ value = global_option_get_long(option, default_value);
+ if(value < min) return(default_value);
+ if(value > max) return(default_value);
+ return(value);
+
+} /* char *global_option_get_long_in_range */
+
cdtime_t cf_get_default_interval (void)
{
char const *str = global_option_get ("Interval");
ERROR ("Unable to read config file %s.", filename);
return (-1);
}
+ else if (conf->children_num == 0)
+ {
+ ERROR ("Configuration file %s is empty.", filename);
+ oconfig_free (conf);
+ return (-1);
+ }
for (i = 0; i < conf->children_num; i++)
{