1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-26 06:28:30 +02:00

Refactor endsWith() to not use the STL

There's not really any reason for this function to use heap-allocated
strings. So I've refactored it to not do that.

I would've used SDL_strrstr(), if it existed. It does not appear to
exist. But that's okay.
This commit is contained in:
Misa 2021-02-26 15:29:37 -08:00 committed by Ethan Lee
parent 3171a97160
commit 5d4c1b7e9d
4 changed files with 11 additions and 11 deletions

View File

@ -204,7 +204,7 @@ void FILESYSTEM_mountassets(const char* path)
FILESYSTEM_mount(zippath.c_str());
graphics.reloadresources();
FILESYSTEM_assetsmounted = true;
} else if (zip_path != "data.zip" && !endsWith(zip_path, "/data.zip") && endsWith(zip_path, ".zip")) {
} else if (zip_path != "data.zip" && !endsWith(zip_path.c_str(), "/data.zip") && endsWith(zip_path.c_str(), ".zip")) {
printf("Custom asset directory is .zip at %s\n", zip_path.c_str());
PHYSFS_File* zip = PHYSFS_openRead(zip_path.c_str());
zip_path += ".data.zip";

View File

@ -323,15 +323,15 @@ bool is_positive_num(const char* str, const bool hex)
return true;
}
bool endsWith(const std::string& str, const std::string& suffix)
bool endsWith(const char* str, const char* suffix)
{
if (str.size() < suffix.size())
const size_t str_size = SDL_strlen(str);
const size_t suffix_size = SDL_strlen(suffix);
if (str_size < suffix_size)
{
return false;
}
return str.compare(
str.size() - suffix.size(),
suffix.size(),
suffix
) == 0;
return SDL_strcmp(&str[str_size - suffix_size], suffix) == 0;
}

View File

@ -26,7 +26,7 @@ bool is_number(const char* str);
bool is_positive_num(const char* str, const bool hex);
bool endsWith(const std::string& str, const std::string& suffix);
bool endsWith(const char* str, const char* suffix);
#define INBOUNDS_VEC(index, vector) ((int) index >= 0 && (int) index < (int) vector.size())
#define INBOUNDS_ARR(index, array) ((int) index >= 0 && (int) index < (int) SDL_arraysize(array))

View File

@ -82,7 +82,7 @@ static void levelZipCallback(const char* filename)
{
std::string filename_ = filename;
if (endsWith(filename_, ".zip"))
if (endsWith(filename_.c_str(), ".zip"))
{
PHYSFS_File* zip = PHYSFS_openRead(filename_.c_str());
@ -1822,7 +1822,7 @@ bool editorclass::load(std::string& _path)
// the linefeed + the extremely specific amount of
// whitespace at the end of the contents.
if (endsWith(text, "\n ")) // linefeed + exactly 12 spaces
if (endsWith(text.c_str(), "\n ")) // linefeed + exactly 12 spaces
{
// 12 spaces + 1 linefeed = 13 chars
text = text.substr(0, text.length()-13);