| Index: src/plugin/PluginIniFileW.cpp | 
| =================================================================== | 
| deleted file mode 100644 | 
| --- a/src/plugin/PluginIniFileW.cpp | 
| +++ /dev/null | 
| @@ -1,395 +0,0 @@ | 
| -#include "PluginStdAfx.h" | 
| - | 
| -#include "PluginIniFileW.h" | 
| -#include "PluginChecksum.h" | 
| - | 
| -#if (defined PRODUCT_ADBLOCKPLUS) | 
| -#include "PluginClient.h" | 
| -#endif | 
| - | 
| - | 
| -CPluginIniFileW::CPluginIniFileW(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 CPluginIniFileW::SetInitialChecksumString(const CString& str) | 
| -{ | 
| -  m_checksumInit = str; | 
| -} | 
| - | 
| -CString CPluginIniFileW::GetFilePath() const | 
| -{ | 
| -  return m_filename; | 
| -} | 
| - | 
| - | 
| -void CPluginIniFileW::Clear() | 
| -{ | 
| -  m_data.clear(); | 
| -  m_sectionNames.clear(); | 
| -  m_checksumInit.Empty(); | 
| -  m_checksum->Clear(); | 
| -} | 
| - | 
| -bool CPluginIniFileW::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 CPluginIniFileW::ReadString(const CStringW& memFile) | 
| -{ | 
| -  bool isOk = true; | 
| - | 
| -  DWORD checksumValue = 0; | 
| - | 
| -  m_checksum->Clear(); | 
| -  m_checksum->Add(m_checksumInit); | 
| - | 
| -  CPluginIniFileW::TSectionData sectionData; | 
| -  CStringW sectionName; | 
| - | 
| -  bool bHasSection = false; | 
| - | 
| -  // Parse file string | 
| -  int pos = 0; | 
| -  CStringW line = memFile.Tokenize(L"\r\n", pos); | 
| - | 
| -  // Remove initial unicode-chars | 
| -  if (line.GetAt(0) == 0xfeff) | 
| -  { | 
| -    line = line.Right(line.GetLength() - 1); | 
| -  } | 
| -  else | 
| -  { | 
| -  } | 
| - | 
| -  while (pos >= 0) | 
| -  { | 
| -    line.Trim(); | 
| - | 
| -    if (!line.IsEmpty()) | 
| -    { | 
| -      // Comment | 
| -      if (line.GetAt(0) == L'#') | 
| -      { | 
| -      } | 
| -      // Section start | 
| -      else if (line.GetAt(0) == L'[' && line.GetAt(line.GetLength() - 1) == L']') | 
| -      { | 
| -        if (bHasSection) | 
| -        { | 
| -          m_data[sectionName] = sectionData; | 
| -          sectionData.clear(); | 
| -        } | 
| - | 
| -        // Add section name to list | 
| -        sectionName = line.Mid(1, line.GetLength() - 2); | 
| - | 
| -        DEBUG_INI("Ini::Read section:" + sectionName) | 
| - | 
| -          // 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(L'=')) > 0) | 
| -        { | 
| -          CStringW key = line.Left(pos).Trim(); | 
| -          CStringW 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)_wtol(line); | 
| -        } | 
| -      } | 
| -      else | 
| -      { | 
| -        DEBUG_INI("Ini::Read ignoring line::" + CString(line)) | 
| -      } | 
| -    } | 
| - | 
| -    line = memFile.Tokenize(L"\r\n", pos); | 
| -  } | 
| - | 
| -  // Add final section | 
| -  if (bHasSection) | 
| -  { | 
| -    m_data[sectionName] = sectionData; | 
| -  } | 
| - | 
| -  m_isValidChecksum = (checksumValue == m_checksum->Get()); | 
| - | 
| -  return isOk; | 
| -} | 
| - | 
| - | 
| -bool CPluginIniFileW::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); | 
| - | 
| -    // Read file | 
| -    WCHAR buffer[1026]; | 
| -    LPVOID pBuffer = buffer; | 
| -    LPBYTE pByteBuffer = (LPBYTE)pBuffer; | 
| -    DWORD dwBytesRead = 0; | 
| -    CStringW fileContent; | 
| -    BOOL bRead = TRUE; | 
| -    while ((bRead = ::ReadFile(hFile, pBuffer, 1024, &dwBytesRead, NULL)) == TRUE && dwBytesRead > 0) | 
| -    { | 
| -      pByteBuffer[dwBytesRead] = 0; | 
| -      pByteBuffer[dwBytesRead+1] = 0; | 
| - | 
| -      fileContent += buffer; | 
| -    } | 
| - | 
| -    // Read error | 
| -    if (!bRead) | 
| -    { | 
| -      m_lastError = ::GetLastError(); | 
| -      isRead = false; | 
| -    } | 
| - | 
| -    // Close file | 
| -    ::CloseHandle(hFile); | 
| - | 
| -    // Parse file | 
| -    if (isRead) | 
| -    { | 
| -      isRead = ReadString(fileContent); | 
| -    } | 
| -  } | 
| - | 
| -  return isRead; | 
| -} | 
| - | 
| - | 
| -bool CPluginIniFileW::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 | 
| -    { | 
| -      CStringW line; | 
| - | 
| -      // Write warning | 
| -      if (m_hasChecksum) | 
| -      { | 
| -        line += "# Please do not edit this file!\r\n\r\n";; | 
| -      } | 
| - | 
| -      for (CPluginIniFileW::TData::iterator it = m_data.begin(); it != m_data.end(); ++it) | 
| -      { | 
| -        line += L"[" + it->first + L"]\r\n"; | 
| - | 
| -        m_checksum->Add(it->first); | 
| - | 
| -        for (CPluginIniFileW::TSectionData::iterator itValues = it->second.begin(); itValues != it->second.end(); ++itValues) | 
| -        { | 
| -          line += itValues->first + L"=" + itValues->second + L"\r\n"; | 
| - | 
| -          m_checksum->Add(itValues->first); | 
| -          m_checksum->Add(itValues->second); | 
| -        } | 
| - | 
| -        line += L"\r\n"; | 
| -      } | 
| - | 
| -      // Add checksum | 
| -      if (m_hasChecksum) | 
| -      { | 
| -        line += L"[Checksum]\r\n"; | 
| - | 
| -        CStringW checksum; | 
| -        checksum.Format(L"%lu\r\n", m_checksum->Get()); | 
| - | 
| -        line += checksum; | 
| -      } | 
| - | 
| -      // Write file | 
| -      DWORD dwBytesWritten = 0; | 
| -      if (::WriteFile(hFile, line.GetBuffer(), line.GetLength()*2, &dwBytesWritten, NULL) && dwBytesWritten == line.GetLength()*2) | 
| -      { | 
| -        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 | 
| -CStringW CPluginIniFileW::GetValue(const CStringW& section, const CStringW& key) const | 
| -{ | 
| -  CStringW 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 CPluginIniFileW::SetValue(const CStringW& section, const CStringW& key, const CStringW& value) | 
| -{ | 
| -  bool isSet = false; | 
| - | 
| -  CPluginIniFileW::TData::iterator it = m_data.find(section); | 
| -  if (it != m_data.end()) | 
| -  { | 
| -    CPluginIniFileW::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 CPluginIniFileW::SetValue(const CStringW& section, const CStringW& key, int value) | 
| -{ | 
| -  CStringW valueStr; | 
| -  valueStr.Format(L"%d", value); | 
| - | 
| -  return SetValue(section, key, valueStr); | 
| -} | 
| - | 
| - | 
| -// Used to find out if a given section exists | 
| -bool CPluginIniFileW::HasSection(const CStringW& section) const | 
| -{ | 
| -  return m_sectionNames.find(section) != m_sectionNames.end(); | 
| -} | 
| - | 
| - | 
| -// Used to find out if a given key exists | 
| -bool CPluginIniFileW::HasKey(const CStringW& section, const CStringW& key) const | 
| -{ | 
| -  return !GetValue(section, key).IsEmpty(); | 
| -} | 
| - | 
| - | 
| -void CPluginIniFileW::UpdateSection(const CStringW& section, const CPluginIniFileW::TSectionData& data) | 
| -{ | 
| -  m_data[section] = data; | 
| -  m_isDirty = true; | 
| -} | 
| - | 
| - | 
| -// Used to retrieve all of the  section names in the ini file | 
| -const CPluginIniFileW::TSectionNames& CPluginIniFileW::GetSectionNames() const | 
| -{ | 
| -  return m_sectionNames; | 
| -} | 
| - | 
| - | 
| -// Used to retrieve all key/value pairs of a given section. | 
| -CPluginIniFileW::TSectionData CPluginIniFileW::GetSectionData(const CStringW& section) const | 
| -{ | 
| -  CPluginIniFileW::TSectionData sectionData; | 
| - | 
| -  CPluginIniFileW::TData::const_iterator it = m_data.find(section); | 
| -  if (it != m_data.end()) | 
| -  { | 
| -    sectionData = it->second; | 
| -  } | 
| - | 
| -  return sectionData; | 
| -} | 
| - | 
| -bool CPluginIniFileW::IsValidChecksum() const | 
| -{ | 
| -  return m_isValidChecksum && m_hasChecksum || !m_hasChecksum; | 
| -} | 
| - | 
| -unsigned int CPluginIniFileW::GetLastError() const | 
| -{ | 
| -  return m_lastError; | 
| -} | 
|  |