From 2b21312b367bbde7473e95093fbebbf79e693df1 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 17 Feb 2014 23:29:08 +0100 Subject: [PATCH] util/StringUtil: add StringEndsWith() Replaces g_str_has_suffix(). --- src/PlaylistFile.cxx | 5 ++--- src/util/StringUtil.cxx | 11 +++++++++++ src/util/StringUtil.hxx | 4 ++++ 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 - #include #include #include @@ -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 @@ -54,6 +54,17 @@ StringStartsWith(const char *haystack, const char *needle) return memcmp(haystack, needle, length) == 0; } +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) { 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. *