From b54d8ee7df123dd72eeb2914ed520d59424e5b2e Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Mon, 12 May 2014 21:17:15 +0200 Subject: [PATCH] Move some logic for getting config values to CAutoConfig Signed-off-by: Sven Strickroth --- src/Git/GitIndex.cpp | 6 +-- src/TortoiseProc/ProjectProperties.cpp | 62 ++++++---------------- src/TortoiseProc/ProjectProperties.h | 6 --- src/TortoiseProc/Settings/GitSettings.h | 20 ++----- src/TortoiseProc/Settings/SetDialogs3.cpp | 12 ++--- src/TortoiseProc/Settings/SetDialogs3.h | 4 +- src/TortoiseProc/Settings/SettingGitConfig.cpp | 12 ++--- src/TortoiseProc/Settings/SettingGitConfig.h | 4 +- .../Settings/SettingsBugtraqConfig.cpp | 18 +++---- src/TortoiseProc/Settings/SettingsBugtraqConfig.h | 4 +- src/TortoiseShell/GITPropertyPage.cpp | 19 +++---- src/Utils/SmartLibgit2Ref.h | 49 ++++++++++++++++- 12 files changed, 104 insertions(+), 112 deletions(-) diff --git a/src/Git/GitIndex.cpp b/src/Git/GitIndex.cpp index ec5178786..31a07aa58 100644 --- a/src/Git/GitIndex.cpp +++ b/src/Git/GitIndex.cpp @@ -1114,11 +1114,7 @@ bool CGitIgnoreList::CheckAndUpdateCoreExcludefile(const CString &adminDir) git_config_add_file_ondisk(config, CGit::GetGitPathStringA(globalXDGConfig), GIT_CONFIG_LEVEL_XDG, FALSE); if (!m_sMsysGitBinPath.IsEmpty()) git_config_add_file_ondisk(config, CGit::GetGitPathStringA(systemConfig), GIT_CONFIG_LEVEL_SYSTEM, FALSE); - const char * out = NULL; - CStringA name(_T("core.excludesfile")); - git_config_get_string(&out, config, name); - CStringA excludesFileA(out); - excludesFile = CUnicodeUtils::GetUnicode(excludesFileA); + config.GetString(_T("core.excludesfile"), excludesFile); if (excludesFile.IsEmpty()) excludesFile = GetWindowsHome() + _T("\\.config\\git\\ignore"); else if (excludesFile.Find(_T("~/")) == 0) diff --git a/src/TortoiseProc/ProjectProperties.cpp b/src/TortoiseProc/ProjectProperties.cpp index 66bf6f877..dcabeb965 100644 --- a/src/TortoiseProc/ProjectProperties.cpp +++ b/src/TortoiseProc/ProjectProperties.cpp @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2003-2011,2013 - TortoiseGit +// Copyright (C) 2003-2011,2013-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -45,37 +45,9 @@ ProjectProperties::ProjectProperties(void) lProjectLanguage = 0; } -int ProjectProperties::GetStringProps(CString &prop, const CString &key) -{ - ATLASSERT(gitconfig); - - CStringA keyA = CUnicodeUtils::GetUTF8(key); - const char * value = nullptr; - if (git_config_get_string(&value, gitconfig, keyA)) - return -1; - - prop = CUnicodeUtils::GetUnicode(value); - - return 0; -} - -int ProjectProperties::GetBOOLProps(BOOL &b, const CString &key) -{ - ATLASSERT(gitconfig); - - CStringA keyA = CUnicodeUtils::GetUTF8(key); - int value = FALSE; - if (git_config_get_bool(&value, gitconfig, keyA)) - return -1; - - b = value; - - return 0; -} - int ProjectProperties::ReadProps() { - gitconfig.New(); + CAutoConfig gitconfig(true); CString adminDirPath; if (g_GitAdminDir.GetAdminDirPath(g_Git.m_CurrentDir, adminDirPath)) git_config_add_file_ondisk(gitconfig, CGit::GetGitPathStringA(adminDirPath + L"config"), GIT_CONFIG_LEVEL_APP, FALSE); // this needs to have the highest priority in order to override .tgitconfig settings @@ -97,23 +69,23 @@ int ProjectProperties::ReadProps() CString sPropVal; - GetStringProps(this->sLabel,BUGTRAQPROPNAME_LABEL); - GetStringProps(this->sMessage,BUGTRAQPROPNAME_MESSAGE); + gitconfig.GetString(BUGTRAQPROPNAME_LABEL, sLabel); + gitconfig.GetString(BUGTRAQPROPNAME_MESSAGE, sMessage); nBugIdPos = sMessage.Find(L"%BUGID%"); - GetStringProps(this->sUrl,BUGTRAQPROPNAME_URL); + gitconfig.GetString(BUGTRAQPROPNAME_URL, sUrl); - GetBOOLProps(this->bWarnIfNoIssue,BUGTRAQPROPNAME_WARNIFNOISSUE); - GetBOOLProps(this->bNumber,BUGTRAQPROPNAME_NUMBER); - GetBOOLProps(this->bAppend,BUGTRAQPROPNAME_APPEND); + gitconfig.GetBOOL(BUGTRAQPROPNAME_WARNIFNOISSUE, bWarnIfNoIssue); + gitconfig.GetBOOL(BUGTRAQPROPNAME_NUMBER, bNumber); + gitconfig.GetBOOL(BUGTRAQPROPNAME_APPEND, bAppend); - GetStringProps(sProviderUuid, BUGTRAQPROPNAME_PROVIDERUUID); - GetStringProps(sProviderUuid64, BUGTRAQPROPNAME_PROVIDERUUID64); - GetStringProps(sProviderParams, BUGTRAQPROPNAME_PROVIDERPARAMS); + gitconfig.GetString(BUGTRAQPROPNAME_PROVIDERUUID, sProviderUuid); + gitconfig.GetString(BUGTRAQPROPNAME_PROVIDERUUID64, sProviderUuid64); + gitconfig.GetString(BUGTRAQPROPNAME_PROVIDERPARAMS, sProviderParams); - GetBOOLProps(this->bWarnNoSignedOffBy, PROJECTPROPNAME_WARNNOSIGNEDOFFBY); - GetStringProps(sIcon, PROJECTPROPNAME_ICON); + gitconfig.GetBOOL(PROJECTPROPNAME_WARNNOSIGNEDOFFBY, bWarnNoSignedOffBy); + gitconfig.GetString(PROJECTPROPNAME_ICON, sIcon); - GetStringProps(sPropVal, BUGTRAQPROPNAME_LOGREGEX); + gitconfig.GetString(BUGTRAQPROPNAME_LOGREGEX, sPropVal); sCheckRe = sPropVal; if (sCheckRe.Find('\n')>=0) @@ -126,7 +98,7 @@ int ProjectProperties::ReadProps() sCheckRe = sCheckRe.Trim(); } - if (GetStringProps(sPropVal, PROJECTPROPNAME_LOGWIDTHLINE) == 0) + if (gitconfig.GetString(PROJECTPROPNAME_LOGWIDTHLINE, sPropVal) == 0) { CString val; val = sPropVal; @@ -134,7 +106,7 @@ int ProjectProperties::ReadProps() nLogWidthMarker = _ttoi(val) + 2; // HACK, + 2 needed } - if (GetStringProps(sPropVal, PROJECTPROPNAME_PROJECTLANGUAGE) == 0) + if (gitconfig.GetString(PROJECTPROPNAME_PROJECTLANGUAGE, sPropVal) == 0) { CString val; val = sPropVal; @@ -147,7 +119,7 @@ int ProjectProperties::ReadProps() } } - if (GetStringProps(sPropVal, PROJECTPROPNAME_LOGMINSIZE) == 0) + if (gitconfig.GetString(PROJECTPROPNAME_LOGMINSIZE, sPropVal) == 0) { CString val; val = sPropVal; diff --git a/src/TortoiseProc/ProjectProperties.h b/src/TortoiseProc/ProjectProperties.h index 4f6d502ff..6fec56d14 100644 --- a/src/TortoiseProc/ProjectProperties.h +++ b/src/TortoiseProc/ProjectProperties.h @@ -58,10 +58,6 @@ public: */ BOOL ReadProps(); -private: - int GetStringProps(CString &prop, const CString &key); - int GetBOOLProps(BOOL &b, const CString &key); - public: /** * Searches for the BugID inside a log message. If one is found, @@ -200,8 +196,6 @@ public: CString sProviderUuid64; private: - CAutoConfig gitconfig; - /** * Constructing regex objects is expensive. Therefore, cache them here. */ diff --git a/src/TortoiseProc/Settings/GitSettings.h b/src/TortoiseProc/Settings/GitSettings.h index e78d94b86..a2d5a476b 100644 --- a/src/TortoiseProc/Settings/GitSettings.h +++ b/src/TortoiseProc/Settings/GitSettings.h @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2013 - TortoiseGit +// Copyright (C) 2013-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -213,8 +213,8 @@ protected: return SafeDataImpl(config); } - virtual void LoadDataImpl(git_config * config) = 0; - virtual BOOL SafeDataImpl(git_config * config) = 0; + virtual void LoadDataImpl(CAutoConfig& config) = 0; + virtual BOOL SafeDataImpl(CAutoConfig& config) = 0; virtual void EnDisableControls() = 0; static void AddTrueFalseToComboBox(CComboBox &combobox) @@ -224,26 +224,16 @@ protected: combobox.AddString(_T("false")); } - static void GetBoolConfigValueComboBox(git_config * config, const CString &key, CComboBox &combobox) + static void GetBoolConfigValueComboBox(CAutoConfig& config, const CString &key, CComboBox &combobox) { - CStringA keyA = CUnicodeUtils::GetUTF8(key); BOOL out = 0; - if (git_config_get_bool(&out, config, keyA) == GIT_ENOTFOUND) + if (config.GetBOOL(key, out) == GIT_ENOTFOUND) combobox.SetCurSel(0); else if (out) combobox.SetCurSel(1); else combobox.SetCurSel(2); } - - static int GetConfigValue(git_config * config, const CString &key, CString &value) - { - CStringA keyA = CUnicodeUtils::GetUTF8(key); - const char *out = nullptr; - int retval = git_config_get_string(&out, config, keyA); - value = CUnicodeUtils::GetUnicode((CStringA)out); - return retval; - } }; #define GITSETTINGS_DDX \ diff --git a/src/TortoiseProc/Settings/SetDialogs3.cpp b/src/TortoiseProc/Settings/SetDialogs3.cpp index 41da46a20..904d516ba 100644 --- a/src/TortoiseProc/Settings/SetDialogs3.cpp +++ b/src/TortoiseProc/Settings/SetDialogs3.cpp @@ -101,11 +101,11 @@ static void SelectLanguage(CComboBox &combobox, LONG langueage) } } -void CSetDialogs3::LoadDataImpl(git_config * config) +void CSetDialogs3::LoadDataImpl(CAutoConfig& config) { { CString value; - if (GetConfigValue(config, PROJECTPROPNAME_PROJECTLANGUAGE, value) == GIT_ENOTFOUND && m_iConfigSource != 0) + if (config.GetString(PROJECTPROPNAME_PROJECTLANGUAGE, value) == GIT_ENOTFOUND && m_iConfigSource != 0) m_langCombo.SetCurSel(0); else if (value == _T("-1")) m_langCombo.SetCurSel(2); @@ -132,7 +132,7 @@ void CSetDialogs3::LoadDataImpl(git_config * config) { m_LogMinSize = _T(""); CString value; - m_bInheritLogMinSize = (GetConfigValue(config, PROJECTPROPNAME_LOGMINSIZE, value) == GIT_ENOTFOUND); + m_bInheritLogMinSize = (config.GetString(PROJECTPROPNAME_LOGMINSIZE, value) == GIT_ENOTFOUND); if (!value.IsEmpty() || m_iConfigSource == 0) { int nMinLogSize = _ttoi(value); @@ -144,7 +144,7 @@ void CSetDialogs3::LoadDataImpl(git_config * config) { m_Border = _T(""); CString value; - m_bInheritBorder = (GetConfigValue(config, PROJECTPROPNAME_LOGWIDTHLINE, value) == GIT_ENOTFOUND); + m_bInheritBorder = (config.GetString(PROJECTPROPNAME_LOGWIDTHLINE, value) == GIT_ENOTFOUND); if (!value.IsEmpty() || m_iConfigSource == 0) { int nLogWidthMarker = _ttoi(value); @@ -155,14 +155,14 @@ void CSetDialogs3::LoadDataImpl(git_config * config) GetBoolConfigValueComboBox(config, PROJECTPROPNAME_WARNNOSIGNEDOFFBY, m_cWarnNoSignedOffBy); - m_bInheritIconFile = (GetConfigValue(config, PROJECTPROPNAME_ICON, m_iconFile) == GIT_ENOTFOUND); + m_bInheritIconFile = (config.GetString(PROJECTPROPNAME_ICON, m_iconFile) == GIT_ENOTFOUND); m_bNeedSave = false; SetModified(FALSE); UpdateData(FALSE); } -BOOL CSetDialogs3::SafeDataImpl(git_config * config) +BOOL CSetDialogs3::SafeDataImpl(CAutoConfig& config) { if (m_langCombo.GetCurSel() == 2) // disable { diff --git a/src/TortoiseProc/Settings/SetDialogs3.h b/src/TortoiseProc/Settings/SetDialogs3.h index 6125c6299..4fb61101d 100644 --- a/src/TortoiseProc/Settings/SetDialogs3.h +++ b/src/TortoiseProc/Settings/SetDialogs3.h @@ -47,8 +47,8 @@ protected: virtual BOOL PreTranslateMessage(MSG* pMsg); virtual BOOL OnApply(); - virtual void LoadDataImpl(git_config * config); - virtual BOOL SafeDataImpl(git_config * config); + virtual void LoadDataImpl(CAutoConfig& config); + virtual BOOL SafeDataImpl(CAutoConfig& config); virtual void EnDisableControls(); afx_msg void OnChange(); diff --git a/src/TortoiseProc/Settings/SettingGitConfig.cpp b/src/TortoiseProc/Settings/SettingGitConfig.cpp index 914b49c51..6886f66b4 100644 --- a/src/TortoiseProc/Settings/SettingGitConfig.cpp +++ b/src/TortoiseProc/Settings/SettingGitConfig.cpp @@ -132,9 +132,9 @@ BOOL CSettingGitConfig::OnInitDialog() } // CSettingGitConfig message handlers -void CSettingGitConfig::LoadDataImpl(git_config * config) +void CSettingGitConfig::LoadDataImpl(CAutoConfig& config) { - m_bInheritSigningKey = (GetConfigValue(config, _T("user.signingkey"), m_UserSigningKey) == GIT_ENOTFOUND); + m_bInheritSigningKey = (config.GetString(_T("user.signingkey"), m_UserSigningKey) == GIT_ENOTFOUND); // special handling for UserName and UserEmail, because these can also be defined as environment variables for effective settings if (m_iConfigSource == 0) @@ -147,8 +147,8 @@ void CSettingGitConfig::LoadDataImpl(git_config * config) } else { - m_bInheritUserName = (GetConfigValue(config, _T("user.name"), m_UserName) == GIT_ENOTFOUND); - m_bInheritEmail = (GetConfigValue(config, _T("user.email"), m_UserEmail) == GIT_ENOTFOUND); + m_bInheritUserName = (config.GetString(_T("user.name"), m_UserName) == GIT_ENOTFOUND); + m_bInheritEmail = (config.GetString(_T("user.email"), m_UserEmail) == GIT_ENOTFOUND); } if (git_config_get_bool(&m_bAutoCrlf, config, "core.autocrlf") == GIT_ENOTFOUND) @@ -170,7 +170,7 @@ void CSettingGitConfig::LoadDataImpl(git_config * config) else { CString sSafeCrLf; - GetConfigValue(config, _T("core.safecrlf"), sSafeCrLf); + config.GetString(_T("core.safecrlf"), sSafeCrLf); sSafeCrLf = sSafeCrLf.MakeLower().Trim(); if (sSafeCrLf == _T("warn")) m_cSafeCrLf.SetCurSel(3); @@ -210,7 +210,7 @@ void CSettingGitConfig::OnChange() SetModified(); } -BOOL CSettingGitConfig::SafeDataImpl(git_config * config) +BOOL CSettingGitConfig::SafeDataImpl(CAutoConfig& config) { if (!Save(config, _T("user.name"), m_UserName, m_bInheritUserName == TRUE)) return FALSE; diff --git a/src/TortoiseProc/Settings/SettingGitConfig.h b/src/TortoiseProc/Settings/SettingGitConfig.h index a3b915592..e2e423289 100644 --- a/src/TortoiseProc/Settings/SettingGitConfig.h +++ b/src/TortoiseProc/Settings/SettingGitConfig.h @@ -44,8 +44,8 @@ protected: BOOL OnApply(); virtual BOOL PreTranslateMessage(MSG* pMsg); - virtual void LoadDataImpl(git_config * config); - virtual BOOL SafeDataImpl(git_config * config); + virtual void LoadDataImpl(CAutoConfig& config); + virtual BOOL SafeDataImpl(CAutoConfig& config); virtual void EnDisableControls(); DECLARE_MESSAGE_MAP() diff --git a/src/TortoiseProc/Settings/SettingsBugtraqConfig.cpp b/src/TortoiseProc/Settings/SettingsBugtraqConfig.cpp index a22b2da17..62f9d606b 100644 --- a/src/TortoiseProc/Settings/SettingsBugtraqConfig.cpp +++ b/src/TortoiseProc/Settings/SettingsBugtraqConfig.cpp @@ -150,7 +150,7 @@ void CSettingsBugtraqConfig::OnChange() SetModified(); } -void CSettingsBugtraqConfig::LoadDataImpl(git_config * config) +void CSettingsBugtraqConfig::LoadDataImpl(CAutoConfig& config) { if (m_iConfigSource == 0) { @@ -205,16 +205,16 @@ void CSettingsBugtraqConfig::LoadDataImpl(git_config * config) } else { - m_bInheritURL = (GetConfigValue(config, BUGTRAQPROPNAME_URL, m_URL) == GIT_ENOTFOUND); - m_bInheritMessage = (GetConfigValue(config, BUGTRAQPROPNAME_MESSAGE, m_Message) == GIT_ENOTFOUND); - m_bInheritLabel = (GetConfigValue(config, BUGTRAQPROPNAME_LABEL, m_Label) == GIT_ENOTFOUND); + m_bInheritURL = (config.GetString(BUGTRAQPROPNAME_URL, m_URL) == GIT_ENOTFOUND); + m_bInheritMessage = (config.GetString(BUGTRAQPROPNAME_MESSAGE, m_Message) == GIT_ENOTFOUND); + m_bInheritLabel = (config.GetString(BUGTRAQPROPNAME_LABEL, m_Label) == GIT_ENOTFOUND); GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_NUMBER, m_cNumber); GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_APPEND, m_cAppend); GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_WARNIFNOISSUE, m_cWarningifnoissue); - m_bInheritLogregex = (GetConfigValue(config, BUGTRAQPROPNAME_LOGREGEX, m_Logregex) == GIT_ENOTFOUND); - m_bInheritParams = (GetConfigValue(config, BUGTRAQPROPNAME_PROVIDERPARAMS, m_Params) == GIT_ENOTFOUND); - m_bInheritUUID32 = (GetConfigValue(config, BUGTRAQPROPNAME_PROVIDERUUID, m_UUID32) == GIT_ENOTFOUND); - m_bInheritUUID64 = (GetConfigValue(config, BUGTRAQPROPNAME_PROVIDERUUID64, m_UUID64) == GIT_ENOTFOUND); + m_bInheritLogregex = (config.GetString(BUGTRAQPROPNAME_LOGREGEX, m_Logregex) == GIT_ENOTFOUND); + m_bInheritParams = (config.GetString(BUGTRAQPROPNAME_PROVIDERPARAMS, m_Params) == GIT_ENOTFOUND); + m_bInheritUUID32 = (config.GetString(BUGTRAQPROPNAME_PROVIDERUUID, m_UUID32) == GIT_ENOTFOUND); + m_bInheritUUID64 = (config.GetString(BUGTRAQPROPNAME_PROVIDERUUID64, m_UUID64) == GIT_ENOTFOUND); } m_Logregex.Trim(); @@ -225,7 +225,7 @@ void CSettingsBugtraqConfig::LoadDataImpl(git_config * config) UpdateData(FALSE); } -BOOL CSettingsBugtraqConfig::SafeDataImpl(git_config * config) +BOOL CSettingsBugtraqConfig::SafeDataImpl(CAutoConfig& config) { if (!Save(config, BUGTRAQPROPNAME_URL, m_URL, m_bInheritURL == TRUE)) return FALSE; diff --git a/src/TortoiseProc/Settings/SettingsBugtraqConfig.h b/src/TortoiseProc/Settings/SettingsBugtraqConfig.h index 26b6e8d54..3328ebcf7 100644 --- a/src/TortoiseProc/Settings/SettingsBugtraqConfig.h +++ b/src/TortoiseProc/Settings/SettingsBugtraqConfig.h @@ -44,8 +44,8 @@ protected: afx_msg void OnBnClickedTestbugtraqregexbutton(); - virtual void LoadDataImpl(git_config * config); - virtual BOOL SafeDataImpl(git_config * config); + virtual void LoadDataImpl(CAutoConfig& config); + virtual BOOL SafeDataImpl(CAutoConfig& config); virtual void EnDisableControls(); DECLARE_MESSAGE_MAP() diff --git a/src/TortoiseShell/GITPropertyPage.cpp b/src/TortoiseShell/GITPropertyPage.cpp index 8ea48db72..3c60aef5f 100644 --- a/src/TortoiseShell/GITPropertyPage.cpp +++ b/src/TortoiseShell/GITPropertyPage.cpp @@ -534,13 +534,6 @@ void CGitPropertyPage::LogThreadEntry(void *param) ((CGitPropertyPage*)param)->LogThread(); } -static void ReadConfigValue(git_config * config, CString& value, const char * key) -{ - const char * out = nullptr; - git_config_get_string(&out, config, key); - value = CUnicodeUtils::GetUnicode(out); -} - void CGitPropertyPage::InitWorkfileView() { if (filenames.empty()) @@ -561,13 +554,13 @@ void CGitPropertyPage::InitWorkfileView() CString autocrlf; CString safecrlf; - CAutoConfig config; - if (!git_repository_config(config.GetPointer(), repository)) + CAutoConfig config(repository); + if (config) { - ReadConfigValue(config, username, "user.name"); - ReadConfigValue(config, useremail, "user.email"); - ReadConfigValue(config, autocrlf, "core.autocrlf"); - ReadConfigValue(config, safecrlf, "core.safecrlf"); + config.GetString(L"user.name", username); + config.GetString(L"user.email", useremail); + config.GetString(L"core.autocrlf", autocrlf); + config.GetString(L"core.safecrlf", safecrlf); } CString branch; diff --git a/src/Utils/SmartLibgit2Ref.h b/src/Utils/SmartLibgit2Ref.h index fcf712934..1dc4d25dd 100644 --- a/src/Utils/SmartLibgit2Ref.h +++ b/src/Utils/SmartLibgit2Ref.h @@ -72,7 +72,7 @@ public: return IsValid(); } - bool IsValid() + bool IsValid() const { return m_Ref != nullptr; } @@ -216,6 +216,11 @@ class CAutoConfig : public CSmartLibgit2Ref public: CAutoConfig() {} + CAutoConfig(CAutoRepository &repo) + { + git_repository_config(&m_Ref, repo); + } + CAutoConfig(bool init) { if (init) @@ -227,11 +232,53 @@ public: CleanUp(); git_config_new(&m_Ref); } + ~CAutoConfig() { CleanUp(); } + int GetString(const CString &key, CString &value) const + { + if (!IsValid()) + return -1; + + const char* out = nullptr; + int ret = 0; + if ((ret = git_config_get_string(&out, m_Ref, CUnicodeUtils::GetUTF8(key)))) + { + value.Empty(); + return ret; + } + + value = CUnicodeUtils::GetUnicode((CStringA)out); + + return ret; + } + + int GetBOOL(const CString &key, BOOL &b) const + { + if (!IsValid()) + return -1; + + return git_config_get_bool(&b, m_Ref, CUnicodeUtils::GetUTF8(key)); + } + + int GetBool(const CString &key, bool &b) const + { + if (!IsValid()) + return -1; + + int value = FALSE; + int ret = 0; + if ((ret = GetBOOL(key, value))) + return ret; + + b = (value == TRUE); + + return ret; + } + protected: virtual void FreeRef() { -- 2.11.4.GIT