Index: src/ch/UpdateChecker.cpp =================================================================== diff -u -N -rd9982d1ee462dceb76298ef4216f0b6122d004a6 -rd5c3edd0d167db9b5d47d04248820fda49499a5e --- src/ch/UpdateChecker.cpp (.../UpdateChecker.cpp) (revision d9982d1ee462dceb76298ef4216f0b6122d004a6) +++ src/ch/UpdateChecker.cpp (.../UpdateChecker.cpp) (revision d5c3edd0d167db9b5d47d04248820fda49499a5e) @@ -1,112 +1,112 @@ -#include "stdafx.h" -#include "UpdateChecker.h" -#include -#include -#include "../common/version.h" -#include "../libicpf/cfg.h" -#include "../libicpf/exception.h" - -CUpdateChecker::ECheckResult CUpdateChecker::CheckForUpdates(const tchar_t* pszSite, bool bCheckBeta) -{ - try - { - CString strSite(pszSite); - strSite.Replace(_T("http://"), _T("")); - - CInternetSession inetSession; - CHttpConnection* pHttpConnection = inetSession.GetHttpConnection(strSite, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 80); - if(!pHttpConnection) - { - m_eResult = eResult_Error; - return m_eResult; - } - - CString strAddr = _T("chver.ini"); - CHttpFile* pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, strAddr); - if(!pHttpFile) - { - m_eResult = eResult_Error; - return m_eResult; - } - - if(!pHttpFile->SendRequest()) - { - m_eResult = eResult_Error; - return m_eResult; - } - - const size_t stBufferSize(65536); - tchar_t* pszBuf = new tchar_t[stBufferSize]; - UINT uiRD = pHttpFile->Read(pszBuf, stBufferSize - 1); - if(uiRD > 0) - pszBuf[uiRD] = _T('\0'); - - // convert text to unicode - icpf::config cfg(icpf::config::eIni); - const uint_t uiVersionNumeric = cfg.register_string(_t("Version/Numeric"), _t("")); - const uint_t uiVersionReadable = cfg.register_string(_t("Version/Human Readable"), _t("")); - const uint_t uiDownloadAddress = cfg.register_string(_t("Version/Download Address"), pszSite); - const uint_t uiBetaVersionNumeric = cfg.register_string(_t("Version/Numeric Beta"), _t("")); - const uint_t uiBetaVersionReadable = cfg.register_string(_t("Version/Human Readable Beta"), _t("")); - const uint_t uiBetaDownloadAddress = cfg.register_string(_t("Version/Download Address Beta"), pszSite); - try - { - cfg.read_from_buffer(pszBuf, uiRD); - } - catch(icpf::exception& e) - { - m_strLastError = e.get_desc(); - - delete [] pszBuf; - m_eResult = eResult_Error; - return m_eResult; - } - delete [] pszBuf; - - if(bCheckBeta) - { - m_strReadableVersion = cfg.get_string(uiBetaVersionReadable); - m_strNumericVersion = cfg.get_string(uiBetaVersionNumeric); - m_strDownloadAddress = cfg.get_string(uiBetaDownloadAddress); - } - - if(!bCheckBeta || m_strNumericVersion.IsEmpty()) - { - m_strNumericVersion = cfg.get_string(uiVersionNumeric); - m_strReadableVersion = cfg.get_string(uiVersionReadable); - m_strDownloadAddress = cfg.get_string(uiDownloadAddress); - } - - // and compare to current version - ushort_t usVer[4]; - if(_stscanf(m_strNumericVersion, _t("%hu.%hu.%hu.%hu"), &usVer[0], &usVer[1], &usVer[2], &usVer[3]) != 4) - { - TRACE(_T("Error parsing retrieved version number.")); - m_eResult = eResult_Error; - return m_eResult; - } - - ull_t ullCurrentVersion = ((ull_t)PRODUCT_VERSION1) << 48 | ((ull_t)PRODUCT_VERSION2) << 32 | ((ull_t)PRODUCT_VERSION3) << 16 | ((ull_t)PRODUCT_VERSION4); - ull_t ullSiteVersion = ((ull_t)usVer[0]) << 48 | ((ull_t)usVer[1]) << 32 | ((ull_t)usVer[2]) << 16 | ((ull_t)usVer[3]); - - if(ullCurrentVersion < ullSiteVersion) - m_eResult = eResult_VersionNewer; - else if(ullCurrentVersion == ullSiteVersion) - m_eResult = eResult_VersionCurrent; - else - m_eResult = eResult_VersionOlder; - - return m_eResult; - } - catch(CInternetException* e) - { - TCHAR* pszBuffer = m_strLastError.GetBufferSetLength(1024); - e->GetErrorMessage(pszBuffer, 1023); - pszBuffer[1023] = _T('\0'); - m_strLastError.ReleaseBuffer(); - m_strLastError.TrimRight(); - - m_eResult = eResult_Error; - return m_eResult; - } -} +#include "stdafx.h" +#include "UpdateChecker.h" +#include +#include +#include "../common/version.h" +#include "../libicpf/cfg.h" +#include "../libicpf/exception.h" + +CUpdateChecker::ECheckResult CUpdateChecker::CheckForUpdates(const tchar_t* pszSite, bool bCheckBeta) +{ + try + { + CString strSite(pszSite); + strSite.Replace(_T("http://"), _T("")); + + CInternetSession inetSession; + CHttpConnection* pHttpConnection = inetSession.GetHttpConnection(strSite, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 80); + if(!pHttpConnection) + { + m_eResult = eResult_Error; + return m_eResult; + } + + CString strAddr = _T("chver.ini"); + CHttpFile* pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, strAddr); + if(!pHttpFile) + { + m_eResult = eResult_Error; + return m_eResult; + } + + if(!pHttpFile->SendRequest()) + { + m_eResult = eResult_Error; + return m_eResult; + } + + const size_t stBufferSize(65536); + tchar_t* pszBuf = new tchar_t[stBufferSize]; + UINT uiRD = pHttpFile->Read(pszBuf, stBufferSize - 1); + if(uiRD > 0) + pszBuf[uiRD] = _T('\0'); + + // convert text to unicode + icpf::config cfg(icpf::config::eIni); + const uint_t uiVersionNumeric = cfg.register_string(_t("Version/Numeric"), _t("")); + const uint_t uiVersionReadable = cfg.register_string(_t("Version/Human Readable"), _t("")); + const uint_t uiDownloadAddress = cfg.register_string(_t("Version/Download Address"), pszSite); + const uint_t uiBetaVersionNumeric = cfg.register_string(_t("Version/Numeric Beta"), _t("")); + const uint_t uiBetaVersionReadable = cfg.register_string(_t("Version/Human Readable Beta"), _t("")); + const uint_t uiBetaDownloadAddress = cfg.register_string(_t("Version/Download Address Beta"), pszSite); + try + { + cfg.read_from_buffer(pszBuf, uiRD); + } + catch(icpf::exception& e) + { + m_strLastError = e.get_desc(); + + delete [] pszBuf; + m_eResult = eResult_Error; + return m_eResult; + } + delete [] pszBuf; + + if(bCheckBeta) + { + m_strReadableVersion = cfg.get_string(uiBetaVersionReadable); + m_strNumericVersion = cfg.get_string(uiBetaVersionNumeric); + m_strDownloadAddress = cfg.get_string(uiBetaDownloadAddress); + } + + if(!bCheckBeta || m_strNumericVersion.IsEmpty()) + { + m_strNumericVersion = cfg.get_string(uiVersionNumeric); + m_strReadableVersion = cfg.get_string(uiVersionReadable); + m_strDownloadAddress = cfg.get_string(uiDownloadAddress); + } + + // and compare to current version + ushort_t usVer[4]; + if(_stscanf(m_strNumericVersion, _t("%hu.%hu.%hu.%hu"), &usVer[0], &usVer[1], &usVer[2], &usVer[3]) != 4) + { + TRACE(_T("Error parsing retrieved version number.")); + m_eResult = eResult_Error; + return m_eResult; + } + + ull_t ullCurrentVersion = ((ull_t)PRODUCT_VERSION1) << 48 | ((ull_t)PRODUCT_VERSION2) << 32 | ((ull_t)PRODUCT_VERSION3) << 16 | ((ull_t)PRODUCT_VERSION4); + ull_t ullSiteVersion = ((ull_t)usVer[0]) << 48 | ((ull_t)usVer[1]) << 32 | ((ull_t)usVer[2]) << 16 | ((ull_t)usVer[3]); + + if(ullCurrentVersion < ullSiteVersion) + m_eResult = eResult_VersionNewer; + else if(ullCurrentVersion == ullSiteVersion) + m_eResult = eResult_VersionCurrent; + else + m_eResult = eResult_VersionOlder; + + return m_eResult; + } + catch(CInternetException* e) + { + TCHAR* pszBuffer = m_strLastError.GetBufferSetLength(1024); + e->GetErrorMessage(pszBuffer, 1023); + pszBuffer[1023] = _T('\0'); + m_strLastError.ReleaseBuffer(); + m_strLastError.TrimRight(); + + m_eResult = eResult_Error; + return m_eResult; + } +}