X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Ftail.c;h=bcb157255fcd1a30a8048d7977271cb1dc46e027;hb=26e01e52629e0894e34ad3deb6c9fc921d145443;hp=8becc05bc4a86cfcdda73195775ed7a1d5bdc76e;hpb=0384380080a39adb252a4d5dd3a6bf5c27f8faf8;p=collectd.git diff --git a/src/tail.c b/src/tail.c index 8becc05b..bcb15725 100644 --- a/src/tail.c +++ b/src/tail.c @@ -30,6 +30,7 @@ * Instance "exim" * * Regex "S=([1-9][0-9]*)" + * ExcludeRegex "U=root.*S=" * DSType "CounterAdd" * Type "ipt_bytes" * Instance "total" @@ -41,6 +42,7 @@ struct ctail_config_match_s { char *regex; + char *excluderegex; int flags; char *type; char *type_instance; @@ -50,22 +52,6 @@ typedef struct ctail_config_match_s ctail_config_match_t; cu_tail_match_t **tail_match_list = NULL; size_t tail_match_list_num = 0; -static int ctail_config_add_string (const char *name, char **dest, oconfig_item_t *ci) -{ - if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) - { - WARNING ("tail plugin: `%s' needs exactly one string argument.", name); - return (-1); - } - - sfree (*dest); - *dest = strdup (ci->values[0].value.string); - if (*dest == NULL) - return (-1); - - return (0); -} /* int ctail_config_add_string */ - static int ctail_config_add_match_dstype (ctail_config_match_t *cm, oconfig_item_t *ci) { @@ -156,13 +142,15 @@ static int ctail_config_add_match (cu_tail_match_t *tm, oconfig_item_t *option = ci->children + i; if (strcasecmp ("Regex", option->key) == 0) - status = ctail_config_add_string ("Regex", &cm.regex, option); + status = cf_util_get_string (option, &cm.regex); + else if (strcasecmp ("ExcludeRegex", option->key) == 0) + status = cf_util_get_string (option, &cm.excluderegex); else if (strcasecmp ("DSType", option->key) == 0) status = ctail_config_add_match_dstype (&cm, option); else if (strcasecmp ("Type", option->key) == 0) - status = ctail_config_add_string ("Type", &cm.type, option); + status = cf_util_get_string (option, &cm.type); else if (strcasecmp ("Instance", option->key) == 0) - status = ctail_config_add_string ("Instance", &cm.type_instance, option); + status = cf_util_get_string (option, &cm.type_instance); else { WARNING ("tail plugin: Option `%s' not allowed here.", option->key); @@ -201,8 +189,8 @@ static int ctail_config_add_match (cu_tail_match_t *tm, if (status == 0) { - status = tail_match_add_match_simple (tm, cm.regex, cm.flags, - "tail", plugin_instance, cm.type, cm.type_instance); + status = tail_match_add_match_simple (tm, cm.regex, cm.excluderegex, + cm.flags, "tail", plugin_instance, cm.type, cm.type_instance); if (status != 0) { @@ -211,6 +199,7 @@ static int ctail_config_add_match (cu_tail_match_t *tm, } sfree (cm.regex); + sfree (cm.excluderegex); sfree (cm.type); sfree (cm.type_instance); @@ -253,7 +242,7 @@ static int ctail_config_add_file (oconfig_item_t *ci) status = 0; } else if (strcasecmp ("Instance", option->key) == 0) - status = ctail_config_add_string ("Instance", &plugin_instance, option); + status = cf_util_get_string (option, &plugin_instance); else { WARNING ("tail plugin: Option `%s' not allowed here.", option->key);