From: Sebastian Harl Date: Wed, 18 Feb 2009 13:20:51 +0000 (+0100) Subject: Moved remove_special() from the bind plugin to the "common" module. X-Git-Tag: collectd-4.7.0~138 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=f453199292b45007e5078f568f3bce2e8c8b4067;p=collectd.git Moved remove_special() from the bind plugin to the "common" module. This function might be useful for other plugins as well. Also, it has been renamed to replace_special() which is slightly more appropriate imho. --- diff --git a/src/bind.c b/src/bind.c index 8e785d98..13967bb1 100644 --- a/src/bind.c +++ b/src/bind.c @@ -239,19 +239,6 @@ static int memsummary_translation_table_length = STATIC_ARRAY_SIZE (memsummary_translation_table); /* }}} */ -static void remove_special (char *buffer, size_t buffer_size) /* {{{ */ -{ - size_t i; - - for (i = 0; i < buffer_size; i++) - { - if (buffer[i] == 0) - return; - if ((!isalnum ((int) buffer[i])) && (buffer[i] != '-')) - buffer[i] = '_'; - } -} /* }}} void remove_special */ - static void submit_counter(time_t ts, const char *plugin_instance, /* {{{ */ const char *type, const char *type_instance, counter_t value) { @@ -268,13 +255,13 @@ static void submit_counter(time_t ts, const char *plugin_instance, /* {{{ */ if (plugin_instance) { sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance)); - remove_special (vl.plugin_instance, sizeof (vl.plugin_instance)); + replace_special (vl.plugin_instance, sizeof (vl.plugin_instance)); } sstrncpy(vl.type, type, sizeof(vl.type)); if (type_instance) { sstrncpy(vl.type_instance, type_instance, sizeof(vl.type_instance)); - remove_special (vl.plugin_instance, sizeof (vl.plugin_instance)); + replace_special (vl.plugin_instance, sizeof (vl.plugin_instance)); } plugin_dispatch_values(&vl); } /* }}} void submit_counter */ diff --git a/src/common.c b/src/common.c index 28f16da0..3ec4c6e1 100644 --- a/src/common.c +++ b/src/common.c @@ -347,6 +347,19 @@ int escape_slashes (char *buf, int buf_len) return (0); } /* int escape_slashes */ +void replace_special (char *buffer, size_t buffer_size) +{ + size_t i; + + for (i = 0; i < buffer_size; i++) + { + if (buffer[i] == 0) + return; + if ((!isalnum ((int) buffer[i])) && (buffer[i] != '-')) + buffer[i] = '_'; + } +} /* void replace_special */ + int timeval_cmp (struct timeval tv0, struct timeval tv1, struct timeval *delta) { struct timeval *larger; diff --git a/src/common.h b/src/common.h index 85db3adb..8b401d68 100644 --- a/src/common.h +++ b/src/common.h @@ -158,6 +158,23 @@ int strjoin (char *dst, size_t dst_len, char **fields, size_t fields_num, const */ int escape_slashes (char *buf, int buf_len); +/* + * NAME + * replace_special + * + * DESCRIPTION + * Replaces any special characters (anything that's not alpha-numeric or a + * dash) with an underscore. + * + * E.g. "foo$bar&" would become "foo_bar_". + * + * PARAMETERS + * `buffer' String to be handled. + * `buffer_size' Length of the string. The function returns after + * encountering a null-byte or reading this many bytes. + */ +void replace_special (char *buffer, size_t buffer_size); + int strsubstitute (char *str, char c_from, char c_to); /*