diff --git a/radio/src/gui/colorlcd/radio/radio_tools.cpp b/radio/src/gui/colorlcd/radio/radio_tools.cpp index bb5dd6922..41fbfa667 100644 --- a/radio/src/gui/colorlcd/radio/radio_tools.cpp +++ b/radio/src/gui/colorlcd/radio/radio_tools.cpp @@ -126,6 +126,12 @@ static void scanLuaTools(std::list& scripts) char path[FF_MAX_LFN + 1] = SCRIPTS_TOOLS_PATH "/"; strcat(path, fno.fname); if (inFolder) { + // check if .lua with same name exists - skip folder to avoid duplicate entries + auto plen = strlen(path); + strcat(path, ".lua"); + if (f_stat(path, nullptr) == FR_OK) + continue; + path[plen] = 0; strcat(path, "/main.lua"); if (f_stat(path, nullptr) != FR_OK) continue; diff --git a/radio/src/gui/common/stdlcd/radio_tools.cpp b/radio/src/gui/common/stdlcd/radio_tools.cpp index 108f41ced..9ffbc85dc 100644 --- a/radio/src/gui/common/stdlcd/radio_tools.cpp +++ b/radio/src/gui/common/stdlcd/radio_tools.cpp @@ -147,6 +147,12 @@ void menuRadioTools(event_t event) char path[FF_MAX_LFN + 1] = SCRIPTS_TOOLS_PATH "/"; strcat(path, fno.fname); if (inFolder) { + // check if .lua with same name exists - skip folder to avoid duplicate entries + auto plen = strlen(path); + strcat(path, ".lua"); + if (f_stat(path, nullptr) == FR_OK) + continue; + path[plen] = 0; strcat(path, "/main.lua"); if (f_stat(path, nullptr) != FR_OK) continue;