util/StringUtil: add FindStringSuffix()
This commit is contained in:
parent
c19292c036
commit
820debf45a
@ -173,12 +173,9 @@ LoadPlaylistFileInfo(PlaylistInfo &info,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
const auto *const name_fs_str = name_fs.c_str();
|
const auto *const name_fs_str = name_fs.c_str();
|
||||||
const size_t name_length = name_fs.length();
|
const auto *const name_fs_end =
|
||||||
|
FindStringSuffix(name_fs_str, PLAYLIST_FILE_SUFFIX);
|
||||||
if (name_length < ARRAY_SIZE(PLAYLIST_FILE_SUFFIX))
|
if (name_fs_end == nullptr)
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!StringEndsWith(name_fs_str, PLAYLIST_FILE_SUFFIX))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
FileInfo fi;
|
FileInfo fi;
|
||||||
@ -186,8 +183,7 @@ LoadPlaylistFileInfo(PlaylistInfo &info,
|
|||||||
!fi.IsRegular())
|
!fi.IsRegular())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
PathTraitsFS::string name(name_fs_str,
|
PathTraitsFS::string name(name_fs_str, name_fs_end);
|
||||||
name_length + 1 - ARRAY_SIZE(PLAYLIST_FILE_SUFFIX));
|
|
||||||
std::string name_utf8 = PathToUTF8(name.c_str());
|
std::string name_utf8 = PathToUTF8(name.c_str());
|
||||||
if (name_utf8.empty())
|
if (name_utf8.empty())
|
||||||
return false;
|
return false;
|
||||||
|
@ -96,6 +96,21 @@ StringEndsWith(const char *haystack, const char *needle)
|
|||||||
needle, needle_length) == 0;
|
needle, needle_length) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
FindStringSuffix(const char *p, const char *suffix)
|
||||||
|
{
|
||||||
|
const size_t p_length = strlen(p);
|
||||||
|
const size_t suffix_length = strlen(suffix);
|
||||||
|
|
||||||
|
if (p_length < suffix_length)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
const char *q = p + p_length - suffix_length;
|
||||||
|
return memcmp(q, suffix, suffix_length) == 0
|
||||||
|
? q
|
||||||
|
: nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
CopyString(char *gcc_restrict dest, const char *gcc_restrict src, size_t size)
|
CopyString(char *gcc_restrict dest, const char *gcc_restrict src, size_t size)
|
||||||
{
|
{
|
||||||
|
@ -90,6 +90,14 @@ gcc_pure
|
|||||||
bool
|
bool
|
||||||
StringEndsWith(const char *haystack, const char *needle);
|
StringEndsWith(const char *haystack, const char *needle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given string ends with the specified suffix. If yes,
|
||||||
|
* returns the position of the suffix, and nullptr otherwise.
|
||||||
|
*/
|
||||||
|
gcc_pure
|
||||||
|
const char *
|
||||||
|
FindStringSuffix(const char *p, const char *suffix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy a string. If the buffer is too small, then the string is
|
* Copy a string. If the buffer is too small, then the string is
|
||||||
* truncated. This is a safer version of strncpy().
|
* truncated. This is a safer version of strncpy().
|
||||||
|
Loading…
Reference in New Issue
Block a user