summaryrefslogtreecommitdiff
path: root/src/config/legacy/ConfigManager.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-13 22:19:37 +0100
committerGitHub <noreply@github.com>2026-04-13 22:19:37 +0100
commite539d21174211dad3fa5f8f5e8496bb7e5c7baf2 (patch)
treeb4801fcf536293ed2f5f63219b911aa77bb9bf91 /src/config/legacy/ConfigManager.cpp
parent933a24caa68d4d217207838bceabd5577838431c (diff)
config: fix safe mode config generation (#14024)
Diffstat (limited to 'src/config/legacy/ConfigManager.cpp')
-rw-r--r--src/config/legacy/ConfigManager.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/config/legacy/ConfigManager.cpp b/src/config/legacy/ConfigManager.cpp
index a1ab4e1c..ffc5cea5 100644
--- a/src/config/legacy/ConfigManager.cpp
+++ b/src/config/legacy/ConfigManager.cpp
@@ -987,8 +987,19 @@ void CConfigManager::reloadRuleConfigs() {
std::optional<std::string> CConfigManager::verifyConfigExists() {
auto mainConfigPath = Supplementary::Jeremy::getMainConfigPath();
- if (!mainConfigPath || !std::filesystem::exists(*mainConfigPath))
- return "broken config dir?";
+ if (!mainConfigPath)
+ return "Broken config directory";
+
+ std::error_code ec;
+ const bool VALID_CFG = std::filesystem::exists(*mainConfigPath, ec) && !ec;
+
+ if (!VALID_CFG && !g_pCompositor->m_explicitConfigPath.empty())
+ return "Invalid config file provided as explicit";
+
+ if (!VALID_CFG) {
+ if (const auto res = generateDefaultConfig(*mainConfigPath, g_pCompositor->m_safeMode); !res)
+ return res.error();
+ }
return {};
}