| Index: src/plugin/PluginIniFile.cpp |
| =================================================================== |
| deleted file mode 100644 |
| --- a/src/plugin/PluginIniFile.cpp |
| +++ /dev/null |
| @@ -1,397 +0,0 @@ |
| -#include "PluginStdAfx.h" |
| - |
| -#include "PluginIniFile.h" |
| -#include "PluginChecksum.h" |
| - |
| -#if (defined PRODUCT_ADBLOCKPLUS) |
| -#include "PluginClient.h" |
| -#endif |
| - |
| - |
| -CPluginIniFile::CPluginIniFile(const CString& filename, bool hasChecksum) : |
| - m_isValidChecksum(false), m_isDirty(false), m_filename(filename), m_hasChecksum(hasChecksum), m_lastError(0) |
| -{ |
| - m_checksum = std::auto_ptr<CPluginChecksum>(new CPluginChecksum()); |
| -} |
| - |
| -void CPluginIniFile::SetInitialChecksumString(const CString& str) |
| -{ |
| - m_checksumInit = str; |
| -} |
| - |
| -CString CPluginIniFile::GetFilePath() const |
| -{ |
| - return m_filename; |
| -} |
| - |
| - |
| -void CPluginIniFile::Clear() |
| -{ |
| - m_data.clear(); |
| - m_sectionNames.clear(); |
| - m_checksumInit.Empty(); |
| - m_checksum->Clear(); |
| -} |
| - |
| - |
| -bool CPluginIniFile::Exists() |
| -{ |
| - bool isExisting = false; |
| - |
| - HANDLE hFile = ::CreateFile(m_filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| - if (hFile != INVALID_HANDLE_VALUE) |
| - { |
| - isExisting = true; |
| - ::CloseHandle(hFile); |
| - } |
| - |
| - return isExisting; |
| -} |
| - |
| - |
| -bool CPluginIniFile::ReadString(const CStringA& memFile) |
| -{ |
| - bool isOk = true; |
| - |
| - DWORD checksumValue = 0; |
| - |
| - m_checksum->Clear(); |
| - m_checksum->Add(m_checksumInit); |
| - |
| - // Read file |
| - std::string buffer(memFile); |
| - |
| - std::istringstream is; |
| - is.str(buffer); |
| - |
| - CPluginIniFile::TSectionData sectionData; |
| - CStringA sectionName; |
| - |
| - bool bHasSection = false; |
| - |
| - while (isOk && !is.eof()) |
| - { |
| - char szLine[256]; |
| - is.getline(szLine, 255); |
| - |
| - if (is.fail() && !is.eof()) |
| - { |
| - is.clear(); |
| - isOk = false; |
| - break; |
| - } |
| - |
| - CStringA line(szLine); |
| - line.Trim(); |
| - |
| - if (!line.IsEmpty()) |
| - { |
| - // Comment |
| - if (line.GetAt(0) == '#') |
| - { |
| - } |
| - // Section start |
| - else if (line.GetAt(0) == '[' && line.GetAt(line.GetLength() - 1) == ']') |
| - { |
| - if (bHasSection) |
| - { |
| - m_data[sectionName] = sectionData; |
| - sectionData.clear(); |
| - } |
| - |
| - // Add section name to list |
| - sectionName = line.Mid(1, line.GetLength() - 2); |
| - |
| - // Add to checksum |
| - if (m_hasChecksum && sectionName != "Checksum") |
| - { |
| - m_checksum->Add(sectionName); |
| - } |
| - |
| - m_sectionNames.insert(sectionName); |
| - |
| - bHasSection = true; |
| - } |
| - // Section data |
| - else if (bHasSection) |
| - { |
| - int pos = 0; |
| - if ((pos = line.Find('=')) > 0) |
| - { |
| - CStringA key = line.Left(pos).Trim(); |
| - CStringA value = line.Right(line.GetLength() - pos - 1).Trim(); |
| - |
| - if (!key.IsEmpty()) |
| - { |
| - sectionData[key] = value; |
| - } |
| - |
| - if (m_hasChecksum && sectionName != "Checksum") |
| - { |
| - m_checksum->Add(key); |
| - m_checksum->Add(value); |
| - } |
| - } |
| - else if (m_hasChecksum && sectionName == "Checksum") |
| - { |
| - checksumValue = (DWORD)atol(line); |
| - } |
| - } |
| - } |
| - } |
| - |
| - // Add final section |
| - if (bHasSection) |
| - { |
| - m_data[sectionName] = sectionData; |
| - } |
| - |
| - m_isValidChecksum = checksumValue == m_checksum->Get(); |
| - |
| - return isOk; |
| -} |
| - |
| - |
| -bool CPluginIniFile::Read() |
| -{ |
| - bool isRead = true; |
| - |
| - m_lastError = 0; |
| - |
| - // Read file |
| - HANDLE hFile = ::CreateFile(m_filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| - if (hFile == INVALID_HANDLE_VALUE) |
| - { |
| - m_lastError = ::GetLastError(); |
| - isRead = false; |
| - } |
| - else |
| - { |
| - DEBUG_INI("Ini::Reading file " + m_filename); |
| - |
| - DWORD checksumValue = 0; |
| - m_checksum->Clear(); |
| - |
| - CPluginIniFile::TSectionData sectionData; |
| - CStringA sectionName; |
| - |
| - bool bHasSection = false; |
| - |
| - // Read file |
| - char buffer[8194]; |
| - LPVOID pBuffer = buffer; |
| - LPBYTE pByteBuffer = (LPBYTE)pBuffer; |
| - DWORD dwBytesRead = 0; |
| - CStringA fileContent; |
| - BOOL bRead = TRUE; |
| - while ((bRead = ::ReadFile(hFile, pBuffer, 8192, &dwBytesRead, NULL)) == TRUE && dwBytesRead > 0) |
| - { |
| - pByteBuffer[dwBytesRead] = 0; |
| - |
| - fileContent += buffer; |
| - } |
| - |
| - // Read error |
| - if (!bRead) |
| - { |
| - m_lastError = ::GetLastError(); |
| - isRead = false; |
| - } |
| - |
| - // Close file |
| - ::CloseHandle(hFile); |
| - |
| - // Parse the file |
| - isRead = ReadString(fileContent); |
| - } |
| - |
| - return isRead; |
| -} |
| - |
| - |
| -bool CPluginIniFile::Write() |
| -{ |
| - bool isWritten = true; |
| - |
| - m_lastError = 0; |
| - |
| - DEBUG_INI("Ini::Write " + m_filename); |
| - |
| - // Save file |
| - if (m_isDirty) |
| - { |
| - DEBUG_INI("Ini::Writing file " + m_filename); |
| - |
| - m_checksum->Clear(); |
| - |
| - // Create file |
| - HANDLE hFile = ::CreateFile(m_filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); |
| - if (hFile == INVALID_HANDLE_VALUE) |
| - { |
| - m_lastError = ::GetLastError(); |
| - isWritten = false; |
| - } |
| - else |
| - { |
| - CStringA line; |
| - |
| - // Write warning |
| - if (m_hasChecksum) |
| - { |
| - line += "# Please do not edit this file!\r\n\r\n";; |
| - } |
| - |
| - for (CPluginIniFile::TData::iterator it = m_data.begin(); it != m_data.end(); ++it) |
| - { |
| - line += "[" + it->first + "]\r\n"; |
| - |
| - m_checksum->Add(it->first); |
| - |
| - for (CPluginIniFile::TSectionData::iterator itValues = it->second.begin(); itValues != it->second.end(); ++itValues) |
| - { |
| - line += itValues->first + "=" + itValues->second + "\r\n"; |
| - |
| - m_checksum->Add(itValues->first); |
| - m_checksum->Add(itValues->second); |
| - } |
| - |
| - line += "\r\n"; |
| - } |
| - |
| - // Add checksum |
| - if (m_hasChecksum) |
| - { |
| - line += "[Checksum]\r\n"; |
| - |
| - CStringA checksum; |
| - checksum.Format("%lu\r\n", m_checksum->Get()); |
| - |
| - line += checksum; |
| - } |
| - |
| - // Write file |
| - DWORD dwBytesWritten = 0; |
| - if (::WriteFile(hFile, line.GetBuffer(), line.GetLength(), &dwBytesWritten, NULL) && dwBytesWritten == line.GetLength()) |
| - { |
| - m_isDirty = false; |
| - |
| - Clear(); |
| - } |
| - else |
| - { |
| - m_lastError = ::GetLastError(); |
| - isWritten = false; |
| - } |
| - |
| - // Close file |
| - ::CloseHandle(hFile); |
| - } |
| - } |
| - |
| - return isWritten; |
| -} |
| - |
| - |
| -// Used to retrieve a value give the section and key |
| -CStringA CPluginIniFile::GetValue(const CStringA& section, const CStringA& key) const |
| -{ |
| - CStringA value; |
| - |
| - TSectionData sectionData = GetSectionData(section); |
| - |
| - TSectionData::iterator it = sectionData.find(key); |
| - if (it != sectionData.end()) |
| - { |
| - value = it->second; |
| - } |
| - |
| - return value; |
| -} |
| - |
| - |
| -// Used to add or set a key value pair to a section |
| -bool CPluginIniFile::SetValue(const CStringA& section, const CStringA& key, const CStringA& value) |
| -{ |
| - bool isSet = false; |
| - |
| - CPluginIniFile::TData::iterator it = m_data.find(section); |
| - if (it != m_data.end()) |
| - { |
| - CPluginIniFile::TSectionData::iterator itValue = it->second.find(key); |
| - if (itValue != it->second.end()) |
| - { |
| - if (itValue->second != value) |
| - { |
| - m_isDirty = true; |
| - } |
| - } |
| - |
| - it->second[key] = value; |
| - isSet = true; |
| - } |
| - |
| - return isSet; |
| -} |
| - |
| - |
| -// Used to add or set a key value pair to a section |
| -bool CPluginIniFile::SetValue(const CStringA& section, const CStringA& key, int value) |
| -{ |
| - CStringA valueStr; |
| - valueStr.Format("%d", value); |
| - |
| - return SetValue(section, key, valueStr); |
| -} |
| - |
| - |
| -// Used to find out if a given section exists |
| -bool CPluginIniFile::HasSection(const CStringA& section) const |
| -{ |
| - return m_sectionNames.find(section) != m_sectionNames.end(); |
| -} |
| - |
| - |
| -// Used to find out if a given key exists |
| -bool CPluginIniFile::HasKey(const CStringA& section, const CStringA& key) const |
| -{ |
| - return !GetValue(section, key).IsEmpty(); |
| -} |
| - |
| - |
| -void CPluginIniFile::UpdateSection(const CStringA& section, const CPluginIniFile::TSectionData& data) |
| -{ |
| - m_data[section] = data; |
| - m_isDirty = true; |
| -} |
| - |
| - |
| -// Used to retrieve all of the section names in the ini file |
| -const CPluginIniFile::TSectionNames& CPluginIniFile::GetSectionNames() const |
| -{ |
| - return m_sectionNames; |
| -} |
| - |
| - |
| -// Used to retrieve all key/value pairs of a given section. |
| -CPluginIniFile::TSectionData CPluginIniFile::GetSectionData(const CStringA& section) const |
| -{ |
| - CPluginIniFile::TSectionData sectionData; |
| - |
| - CPluginIniFile::TData::const_iterator it = m_data.find(section); |
| - if (it != m_data.end()) |
| - { |
| - sectionData = it->second; |
| - } |
| - |
| - return sectionData; |
| -} |
| - |
| -bool CPluginIniFile::IsValidChecksum() const |
| -{ |
| - return m_isValidChecksum && m_hasChecksum || !m_hasChecksum; |
| -} |
| - |
| -unsigned int CPluginIniFile::GetLastError() const |
| -{ |
| - return m_lastError; |
| -} |