diff --git a/src/rime/lever/custom_settings.cc b/src/rime/lever/custom_settings.cc index 1b3dfd2550..b2978bfe36 100644 --- a/src/rime/lever/custom_settings.cc +++ b/src/rime/lever/custom_settings.cc @@ -15,6 +15,15 @@ namespace fs = boost::filesystem; namespace rime { +static string remove_suffix(const string& input, const string& suffix) { + return boost::ends_with(input, suffix) ? + input.substr(0, input.length() - suffix.length()) : input; +} + +static string custom_config_file(const string& config_id) { + return remove_suffix(config_id, ".schema") + ".custom.yaml"; +} + CustomSettings::CustomSettings(Deployer* deployer, const string& config_id, const string& generator_id) @@ -34,7 +43,7 @@ bool CustomSettings::Load() { return false; } } - fs::path custom_config_path(user_data_path / (config_id_ + ".custom.yaml")); + fs::path custom_config_path(user_data_path / custom_config_file(config_id_)); custom_config_.LoadFromFile(custom_config_path.string()); modified_ = false; return true; @@ -46,7 +55,7 @@ bool CustomSettings::Save() { Signature signature(generator_id_, "customization"); signature.Sign(&custom_config_, deployer_); fs::path custom_config_path(deployer_->user_data_dir); - custom_config_path /= config_id_ + ".custom.yaml"; + custom_config_path /= custom_config_file(config_id_); custom_config_.SaveToFile(custom_config_path.string()); modified_ = false; return true; @@ -80,7 +89,7 @@ bool CustomSettings::Customize(const string& key, bool CustomSettings::IsFirstRun() { fs::path custom_config_path(deployer_->user_data_dir); - custom_config_path /= config_id_ + ".custom.yaml"; + custom_config_path /= custom_config_file(config_id_); Config config; if (!config.LoadFromFile(custom_config_path.string())) return true;