summaryrefslogtreecommitdiff
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
parent933a24caa68d4d217207838bceabd5577838431c (diff)
config: fix safe mode config generation (#14024)
-rw-r--r--src/config/ConfigManager.cpp6
-rw-r--r--src/config/legacy/ConfigManager.cpp15
2 files changed, 13 insertions, 8 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 0c106629..5238f9dd 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -36,12 +36,6 @@ bool Config::initConfigManager() {
Log::logger->log(Log::CRIT, "Couldn't load config: {}", ec.message());
return false;
}
-
- // generate default
- if (const auto v = g_mgr->generateDefaultConfig(filePath); !v) {
- Log::logger->log(Log::CRIT, "Couldn't generate default config: {}", v.error());
- return false;
- }
}
return true;
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 {};
}