1
mirror of https://github.com/flipperdevices/flipperzero-firmware.git synced 2025-12-12 04:41:26 +04:00

[FL-3888] Make file extensions case-insensitive (#3828)

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Georgii Surkov
2024-08-09 08:14:40 +01:00
committed by GitHub
parent 3672efa7da
commit d2ff2825ca
6 changed files with 52 additions and 4 deletions

View File

@@ -17,6 +17,7 @@ struct FuriString {
#undef furi_string_replace_all
#undef furi_string_start_with
#undef furi_string_end_with
#undef furi_string_end_withi
#undef furi_string_search_char
#undef furi_string_search_rchar
#undef furi_string_trim
@@ -218,10 +219,28 @@ bool furi_string_end_with(const FuriString* v, const FuriString* v2) {
return string_end_with_string_p(v->string, v2->string);
}
bool furi_string_end_withi(const FuriString* v, const FuriString* v2) {
return furi_string_end_withi_str(v, string_get_cstr(v2->string));
}
bool furi_string_end_with_str(const FuriString* v, const char str[]) {
return string_end_with_str_p(v->string, str);
}
bool furi_string_end_withi_str(const FuriString* v, const char str[]) {
M_STR1NG_CONTRACT(v);
M_ASSERT(str != NULL);
const size_t str_len = strlen(str);
const size_t v_len = string_size(v->string);
if(v_len < str_len) {
return false;
}
return strcasecmp(&string_get_cstr(v->string)[v_len - str_len], str) == 0;
}
size_t furi_string_search_char(const FuriString* v, char c, size_t start) {
return string_search_char(v->string, c, start);
}

View File

@@ -510,6 +510,15 @@ bool furi_string_start_with_str(const FuriString* string, const char start[]);
*/
bool furi_string_end_with(const FuriString* string, const FuriString* end);
/** Test if the string ends with the given string (case insensitive according to the current locale).
*
* @param string The FuriString instance
* @param end The end
*
* @return true if string ends with
*/
bool furi_string_end_withi(const FuriString* string, const FuriString* end);
/** Test if the string ends with the given C string.
*
* @param string The FuriString instance
@@ -519,6 +528,15 @@ bool furi_string_end_with(const FuriString* string, const FuriString* end);
*/
bool furi_string_end_with_str(const FuriString* string, const char end[]);
/** Test if the string ends with the given C string (case insensitive according to the current locale).
*
* @param string The FuriString instance
* @param end The end
*
* @return true if string ends with
*/
bool furi_string_end_withi_str(const FuriString* string, const char end[]);
//---------------------------------------------------------------------------
// Trim
//---------------------------------------------------------------------------
@@ -699,6 +717,13 @@ void furi_string_utf8_decode(char c, FuriStringUTF8State* state, FuriStringUnico
#define furi_string_end_with(a, b) \
FURI_STRING_SELECT2(furi_string_end_with, furi_string_end_with_str, a, b)
/** Test if the string ends with the given string (or C string) (case insensitive according to the current locale).
*
* (string, [c]string)
*/
#define furi_string_end_withi(a, b) \
FURI_STRING_SELECT2(furi_string_end_withi, furi_string_end_withi_str, a, b)
/** Append a string (or C string) to the string.
*
* (string, [c]string)