aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-02-17 23:29:08 +0100
committerMax Kellermann <max@duempel.org>2014-02-18 09:18:42 +0100
commit2b21312b367bbde7473e95093fbebbf79e693df1 (patch)
tree2878849657a8a525b8a72e7bc3f3bd57415cb82d
parent3a818b6d45bc6b01c0092afc3f420ced668e9967 (diff)
downloadmpd-2b21312b367bbde7473e95093fbebbf79e693df1.tar.gz
mpd-2b21312b367bbde7473e95093fbebbf79e693df1.tar.xz
mpd-2b21312b367bbde7473e95093fbebbf79e693df1.zip
util/StringUtil: add StringEndsWith()
Replaces g_str_has_suffix().
-rw-r--r--src/PlaylistFile.cxx5
-rw-r--r--src/util/StringUtil.cxx11
-rw-r--r--src/util/StringUtil.hxx4
3 files changed, 17 insertions, 3 deletions
diff --git a/src/PlaylistFile.cxx b/src/PlaylistFile.cxx
index a729ac8a0..f5ac2735f 100644
--- a/src/PlaylistFile.cxx
+++ b/src/PlaylistFile.cxx
@@ -36,11 +36,10 @@
#include "fs/Charset.hxx"
#include "fs/FileSystem.hxx"
#include "fs/DirectoryReader.hxx"
+#include "util/StringUtil.hxx"
#include "util/UriUtil.hxx"
#include "util/Error.hxx"
-#include <glib.h>
-
#include <assert.h>
#include <sys/stat.h>
#include <string.h>
@@ -147,7 +146,7 @@ LoadPlaylistFileInfo(PlaylistInfo &info,
memchr(name_fs_str, '\n', name_length) != nullptr)
return false;
- if (!g_str_has_suffix(name_fs_str, PLAYLIST_FILE_SUFFIX))
+ if (!StringEndsWith(name_fs_str, PLAYLIST_FILE_SUFFIX))
return false;
const auto path_fs = AllocatedPath::Build(parent_path_fs, name_fs);
diff --git a/src/util/StringUtil.cxx b/src/util/StringUtil.cxx
index dfe436fd8..9a1a74f86 100644
--- a/src/util/StringUtil.cxx
+++ b/src/util/StringUtil.cxx
@@ -55,6 +55,17 @@ StringStartsWith(const char *haystack, const char *needle)
}
bool
+StringEndsWith(const char *haystack, const char *needle)
+{
+ const size_t haystack_length = strlen(haystack);
+ const size_t needle_length = strlen(needle);
+
+ return haystack_length >= needle_length &&
+ memcmp(haystack + haystack_length - needle_length,
+ needle, needle_length) == 0;
+}
+
+bool
string_array_contains(const char *const* haystack, const char *needle)
{
assert(haystack != nullptr);
diff --git a/src/util/StringUtil.hxx b/src/util/StringUtil.hxx
index a48e2abc9..779d5d776 100644
--- a/src/util/StringUtil.hxx
+++ b/src/util/StringUtil.hxx
@@ -51,6 +51,10 @@ gcc_pure
bool
StringStartsWith(const char *haystack, const char *needle);
+gcc_pure
+bool
+StringEndsWith(const char *haystack, const char *needle);
+
/**
* Checks whether a string array contains the specified string.
*