From eea726740bf222a92885b0f3c3c1255a5b04cd01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= Date: Mon, 25 Jul 2011 11:17:33 +0200 Subject: output/raop: rewrite remove_char_from_string --- src/output/raop_output_plugin.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/output/raop_output_plugin.c b/src/output/raop_output_plugin.c index b46633dfd..f3c32382a 100644 --- a/src/output/raop_output_plugin.c +++ b/src/output/raop_output_plugin.c @@ -182,21 +182,22 @@ kd_lookup(struct key_data *kd, const char *key) * return the number of deleted characters */ static int -remove_char_from_string(char *str, char rc) +remove_char_from_string(char *str, char c) { - int i = 0, j = 0, len; - int num = 0; - len = strlen(str); - while (i < len) { - if (str[i] == rc) { - for (j = i; j < len; j++) str[j] = str[j + 1]; - len--; - num++; - } else { - i++; - } - } - return num; + char *src, *dst; + + /* skip all characters that don't need to be copied */ + src = strchr(str, c); + if (!src) + return 0; + + for (dst = src; *src; src++) + if (*src != c) + *(dst++) = *src; + + *dst = '\0'; + + return src - dst; } #define SLEEP_MSEC(val) usleep(val*1000) -- cgit v1.2.3