diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/ConfigManager.cpp | 6 | ||||
| -rw-r--r-- | src/config/legacy/ConfigManager.cpp | 15 |
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 {}; } |
