diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 4159efb79..ae2308c49 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -590,12 +590,17 @@ char* SetStr(const char* str) { return new_str; } -bool StrCaseStr_P(const char* source, const char* search) { +char* StrCaseStr_P(const char* source, const char* search) { char case_source[strlen_P(source) +1]; UpperCase_P(case_source, source); char case_search[strlen_P(search) +1]; UpperCase_P(case_search, search); - return (strstr(case_source, case_search) != nullptr); + char *cp = strstr(case_source, case_search); + if (cp) { + uint32_t offset = cp - case_source; + cp = (char*)source + offset; + } + return cp; } bool IsNumeric(const char* value) { @@ -1534,16 +1539,7 @@ bool ValidModule(uint32_t index) } bool ValidTemplate(const char *search) { -/* - char template_name[strlen(SettingsText(SET_TEMPLATE_NAME)) +1]; - char search_name[strlen(search) +1]; - - LowerCase(template_name, SettingsText(SET_TEMPLATE_NAME)); - LowerCase(search_name, search); - - return (strstr(template_name, search_name) != nullptr); -*/ - return StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search); + return (StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); } String AnyModuleName(uint32_t index)