X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_ignorelist.c;h=7b1c7d2547e915db1931eecdbeb9e34590e9e117;hb=21a4ddcc2d66eea59224fd95746c7533b1b1a46d;hp=1adfbc6b06899c2c58fcc66622fa643a1fe97f7f;hpb=403e429f70e11ac11b6d5af174322b01e45b810a;p=collectd.git diff --git a/src/utils_ignorelist.c b/src/utils_ignorelist.c index 1adfbc6b..7b1c7d25 100644 --- a/src/utils_ignorelist.c +++ b/src/utils_ignorelist.c @@ -1,6 +1,7 @@ /** - * collectd - src/config_list.c + * collectd - src/utils_ignorelist.c * Copyright (C) 2006 Lubos Stanek + * Copyright (C) 2008 Florian Forster * * This program is free software; you can redistribute it and/ * or modify it under the terms of the GNU General Public Li- @@ -19,6 +20,7 @@ * * Authors: * Lubos Stanek + * Florian Forster **/ /** * ignorelist handles plugin's list of configured collectable @@ -47,8 +49,12 @@ * return; **/ +#if HAVE_CONFIG_H +# include "config.h" +#endif + #include "common.h" -#include "utils_debug.h" +#include "plugin.h" #include "utils_ignorelist.h" /* @@ -67,7 +73,6 @@ typedef struct ignorelist_item_s ignorelist_item_t; struct ignorelist_s { int ignore; /* ignore entries */ - int num; /* number of entries */ ignorelist_item_t *head; /* pointer to the first entry */ }; @@ -81,8 +86,6 @@ static inline void ignorelist_append (ignorelist_t *il, ignorelist_item_t *item) item->next = il->head; il->head = item; - - il->num++; } #if HAVE_REGEX_H @@ -97,7 +100,7 @@ static int ignorelist_append_regex(ignorelist_t *il, const char *entry) /* create buffer */ if ((regtemp = malloc(sizeof(regex_t))) == NULL) { - syslog (LOG_ERR, "cannot allocate new config entry"); + ERROR ("cannot allocate new config entry"); return (1); } memset (regtemp, '\0', sizeof(regex_t)); @@ -114,29 +117,31 @@ static int ignorelist_append_regex(ignorelist_t *il, const char *entry) { fprintf (stderr, "Cannot compile regex %s: %i/%s", entry, rcompile, regerr); - syslog (LOG_ERR, "Cannot compile regex %s: %i/%s", + ERROR ("Cannot compile regex %s: %i/%s", entry, rcompile, regerr); } else { fprintf (stderr, "Cannot compile regex %s: %i", entry, rcompile); - syslog (LOG_ERR, "Cannot compile regex %s: %i", + ERROR ("Cannot compile regex %s: %i", entry, rcompile); } if (errsize) sfree (regerr); regfree (regtemp); + sfree (regtemp); return (1); } - DBG("regex compiled: %s - %i", entry, rcompile); + DEBUG("regex compiled: %s - %i", entry, rcompile); /* create new entry */ if ((new = malloc(sizeof(ignorelist_item_t))) == NULL) { - syslog (LOG_ERR, "cannot allocate new config entry"); + ERROR ("cannot allocate new config entry"); regfree (regtemp); + sfree (regtemp); return (1); } memset (new, '\0', sizeof(ignorelist_item_t)); @@ -156,7 +161,7 @@ static int ignorelist_append_string(ignorelist_t *il, const char *entry) /* create new entry */ if ((new = malloc(sizeof(ignorelist_item_t))) == NULL ) { - syslog (LOG_ERR, "cannot allocate new entry"); + ERROR ("cannot allocate new entry"); return (1); } memset (new, '\0', sizeof(ignorelist_item_t)); @@ -216,10 +221,6 @@ ignorelist_t *ignorelist_create (int invert) /* smalloc exits if it failes */ il = (ignorelist_t *) smalloc (sizeof (ignorelist_t)); - DBG("Ignorelist created 0x%p, default is %s", - (void *) il, - invert ? "collect" : "ignore"); - memset (il, '\0', sizeof (ignorelist_t)); /* @@ -239,20 +240,17 @@ void ignorelist_free (ignorelist_t *il) ignorelist_item_t *this; ignorelist_item_t *next; - DBG ("(il = 0x%p)", (void *) il); - if (il == NULL) return; for (this = il->head; this != NULL; this = next) { - DBG ("free - item = 0x%p, numlist %i", (void *) this, il->num); next = this->next; - il->num--; #if HAVE_REGEX_H if (this->rmatch != NULL) { regfree (this->rmatch); + sfree (this->rmatch); this->rmatch = NULL; } #endif @@ -263,11 +261,7 @@ void ignorelist_free (ignorelist_t *il) } sfree (this); } -#if COLLECTD_DEBUG - if (il->num != 0) - DBG ("after free numlist: %i", il->num); -#endif - il->num = 0; + sfree (il); il = NULL; } /* void ignorelist_destroy (ignorelist_t *il) */ @@ -279,7 +273,7 @@ void ignorelist_set_invert (ignorelist_t *il, int invert) { if (il == NULL) { - DBG("ignore call with ignorelist_t == NULL"); + DEBUG("ignore call with ignorelist_t == NULL"); return; } @@ -287,21 +281,6 @@ void ignorelist_set_invert (ignorelist_t *il, int invert) } /* void ignorelist_set_invert (ignorelist_t *il, int ignore) */ /* - * get number of entries in the ignorelist_t - * return int number - */ -int ignorelist_num (ignorelist_t *il) -{ - if (il == NULL) - { - DBG("get num called with ignorelist_t == NULL"); - return (0); - } - - return (il->num); -} /* int ignorelist_num (ignorelist_t *il) */ - -/* * append entry into ignorelist_t * return 1 for success */ @@ -309,11 +288,10 @@ int ignorelist_add (ignorelist_t *il, const char *entry) { int ret; size_t entry_len; - char *entry_copy; if (il == NULL) { - DBG ("add called with ignorelist_t == NULL"); + DEBUG ("add called with ignorelist_t == NULL"); return (1); } @@ -322,7 +300,7 @@ int ignorelist_add (ignorelist_t *il, const char *entry) /* append nothing */ if (entry_len == 0) { - DBG("not appending: empty entry"); + DEBUG("not appending: empty entry"); return (1); } @@ -330,19 +308,22 @@ int ignorelist_add (ignorelist_t *il, const char *entry) /* regex string is enclosed in "/.../" */ if ((entry_len > 2) && (entry[0] == '/') && entry[entry_len - 1] == '/') { + char *entry_copy; + size_t entry_copy_size; + /* We need to copy `entry' since it's const */ - entry_copy = smalloc (entry_len); - memset (entry_copy, '\0', entry_len); - strncpy (entry_copy, entry + 1, entry_len - 2); + entry_copy_size = entry_len - 1; + entry_copy = smalloc (entry_copy_size); + sstrncpy (entry_copy, entry + 1, entry_copy_size); - DBG("I'm about to add regex entry: %s", entry_copy); + DEBUG("I'm about to add regex entry: %s", entry_copy); ret = ignorelist_append_regex(il, entry_copy); sfree (entry_copy); } else #endif { - DBG("to add entry: %s", entry); + DEBUG("to add entry: %s", entry); ret = ignorelist_append_string(il, entry); } @@ -358,7 +339,10 @@ int ignorelist_match (ignorelist_t *il, const char *entry) ignorelist_item_t *traverse; /* if no entries, collect all */ - if (ignorelist_num(il) == 0) + if ((il == NULL) || (il->head == NULL)) + return (0); + + if ((entry == NULL) || (strlen (entry) == 0)) return (0); /* traverse list and check entries */