summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/archive_list.c3
-rw-r--r--src/conf.c10
-rw-r--r--src/decoder_list.c8
-rw-r--r--src/playlist_list.c15
-rw-r--r--src/utils.c16
-rw-r--r--src/utils.h13
6 files changed, 35 insertions, 30 deletions
diff --git a/src/archive_list.c b/src/archive_list.c
index 8228fc961..e71b3036a 100644
--- a/src/archive_list.c
+++ b/src/archive_list.c
@@ -60,7 +60,8 @@ archive_plugin_from_suffix(const char *suffix)
for (i=0; i < num_archive_plugins; ++i) {
const struct archive_plugin *plugin = archive_plugins[i];
if (archive_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->suffixes, suffix)) {
+ plugin->suffixes != NULL &&
+ string_array_contains(plugin->suffixes, suffix)) {
++i;
return plugin;
}
diff --git a/src/conf.c b/src/conf.c
index 803ad8503..4da44c775 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -96,16 +96,6 @@ static struct config_entry config_entries[] = {
};
static bool
-string_array_contains(const char *const* array, const char *value)
-{
- for (const char *const* x = array; *x; x++)
- if (g_ascii_strcasecmp(*x, value) == 0)
- return true;
-
- return false;
-}
-
-static bool
get_bool(const char *value, bool *value_r)
{
static const char *t[] = { "yes", "true", "1", NULL };
diff --git a/src/decoder_list.c b/src/decoder_list.c
index d30611e1b..ba8e34a8c 100644
--- a/src/decoder_list.c
+++ b/src/decoder_list.c
@@ -118,8 +118,8 @@ decoder_plugin_from_suffix(const char *suffix, unsigned int next)
i = 0;
for (; i < num_decoder_plugins; ++i) {
const struct decoder_plugin *plugin = decoder_plugins[i];
- if (decoder_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->suffixes, suffix)) {
+ if (decoder_plugins_enabled[i] && plugin->suffixes != NULL &&
+ string_array_contains(plugin->suffixes, suffix)) {
++i;
return plugin;
}
@@ -140,8 +140,8 @@ decoder_plugin_from_mime_type(const char *mimeType, unsigned int next)
i = 0;
for (; i < num_decoder_plugins; ++i) {
const struct decoder_plugin *plugin = decoder_plugins[i];
- if (decoder_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->mime_types, mimeType)) {
+ if (decoder_plugins_enabled[i] && plugin->mime_types != NULL &&
+ string_array_contains(plugin->mime_types, mimeType)) {
++i;
return plugin;
}
diff --git a/src/playlist_list.c b/src/playlist_list.c
index b5df72ed8..2c6237ed4 100644
--- a/src/playlist_list.c
+++ b/src/playlist_list.c
@@ -119,8 +119,8 @@ playlist_list_open_uri(const char *uri)
for (unsigned i = 0; playlist_plugins[i] != NULL; ++i) {
const struct playlist_plugin *plugin = playlist_plugins[i];
- if (playlist_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->schemes, scheme)) {
+ if (playlist_plugins_enabled[i] && plugin->schemes != NULL &&
+ string_array_contains(plugin->schemes, scheme)) {
playlist = playlist_plugin_open_uri(plugin, uri);
if (playlist != NULL)
break;
@@ -143,7 +143,8 @@ playlist_list_open_stream_mime(struct input_stream *is)
const struct playlist_plugin *plugin = playlist_plugins[i];
if (playlist_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->mime_types, is->mime)) {
+ plugin->mime_types != NULL &&
+ string_array_contains(plugin->mime_types, is->mime)) {
/* rewind the stream, so each plugin gets a
fresh start */
input_stream_seek(is, 0, SEEK_SET);
@@ -168,8 +169,8 @@ playlist_list_open_stream_suffix(struct input_stream *is, const char *suffix)
for (unsigned i = 0; playlist_plugins[i] != NULL; ++i) {
const struct playlist_plugin *plugin = playlist_plugins[i];
- if (playlist_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->suffixes, suffix)) {
+ if (playlist_plugins_enabled[i] && plugin->suffixes != NULL &&
+ string_array_contains(plugin->suffixes, suffix)) {
/* rewind the stream, so each plugin gets a
fresh start */
input_stream_seek(is, 0, SEEK_SET);
@@ -213,8 +214,8 @@ playlist_suffix_supported(const char *suffix)
for (unsigned i = 0; playlist_plugins[i] != NULL; ++i) {
const struct playlist_plugin *plugin = playlist_plugins[i];
- if (playlist_plugins_enabled[i] &&
- stringFoundInStringArray(plugin->suffixes, suffix))
+ if (playlist_plugins_enabled[i] && plugin->suffixes != NULL &&
+ string_array_contains(plugin->suffixes, suffix))
return true;
}
diff --git a/src/utils.c b/src/utils.c
index 933a70a8c..ed8ef6c1a 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -132,13 +132,15 @@ int set_nonblocking(int fd)
#endif
}
-int stringFoundInStringArray(const char *const*array, const char *suffix)
+bool
+string_array_contains(const char *const* haystack, const char *needle)
{
- while (array && *array) {
- if (g_ascii_strcasecmp(*array, suffix) == 0)
- return 1;
- array++;
- }
+ assert(haystack != NULL);
+ assert(needle != NULL);
+
+ for (; *haystack != NULL; ++haystack)
+ if (g_ascii_strcasecmp(*haystack, needle) == 0)
+ return true;
- return 0;
+ return false;
}
diff --git a/src/utils.h b/src/utils.h
index d114003be..a77d4a03d 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -20,6 +20,8 @@
#ifndef MPD_UTILS_H
#define MPD_UTILS_H
+#include <stdbool.h>
+
#ifndef assert_static
/* Compile time assertion developed by Ralf Holly */
/* http://pera-software.com/articles/compile-time-assertions.pdf */
@@ -33,6 +35,15 @@ char *parsePath(char *path);
int set_nonblocking(int fd);
-int stringFoundInStringArray(const char *const*array, const char *suffix);
+/**
+ * Checks whether a string array contains the specified string.
+ *
+ * @param haystack a NULL terminated list of strings
+ * @param needle the string to search for; the comparison is
+ * case-insensitive for ASCII characters
+ * @return true if found
+ */
+bool
+string_array_contains(const char *const* haystack, const char *needle);
#endif