diff --git a/Source/Core/Common/Src/IniFile.cpp b/Source/Core/Common/Src/IniFile.cpp index 0b265543de..89741b5e3c 100644 --- a/Source/Core/Common/Src/IniFile.cpp +++ b/Source/Core/Common/Src/IniFile.cpp @@ -20,45 +20,30 @@ namespace { -static void ParseLine(const std::string& line, std::string* keyOut, std::string* valueOut, std::string* commentOut) +static void ParseLine(const std::string& line, std::string* keyOut, std::string* valueOut) { + if (line[0] == '#') + return; + int FirstEquals = (int)line.find("=", 0); - int FirstCommentChar = -1; - // Comments - if (FirstCommentChar < 0) - FirstCommentChar = - (int)line.find("#", FirstEquals > 0 ? FirstEquals : 0); - if (FirstCommentChar < 0 && line[0] == ';') - FirstCommentChar = 0; - - // Allow preservation of spacing before comment - if (FirstCommentChar > 0) - { - while (line[FirstCommentChar - 1] == ' ' || line[FirstCommentChar - 1] == 9) // 9 == tab - { - FirstCommentChar--; - } - } - - if ((FirstEquals >= 0) && ((FirstCommentChar < 0) || (FirstEquals < FirstCommentChar))) + if (FirstEquals >= 0) { // Yes, a valid line! *keyOut = StripSpaces(line.substr(0, FirstEquals)); - if (commentOut) *commentOut = FirstCommentChar > 0 ? line.substr(FirstCommentChar) : std::string(""); - if (valueOut) *valueOut = StripQuotes(StripSpaces(line.substr(FirstEquals + 1, FirstCommentChar - FirstEquals - 1))); + if (valueOut) *valueOut = StripQuotes(StripSpaces(line.substr(FirstEquals + 1, std::string::npos))); } } } -std::string* IniFile::Section::GetLine(const char* key, std::string* valueOut, std::string* commentOut) +std::string* IniFile::Section::GetLine(const char* key, std::string* valueOut) { for (std::vector::iterator iter = lines.begin(); iter != lines.end(); ++iter) { std::string& line = *iter; std::string lineKey; - ParseLine(line, &lineKey, valueOut, commentOut); + ParseLine(line, &lineKey, valueOut); if (!strcasecmp(lineKey.c_str(), key)) return &line; } @@ -67,12 +52,12 @@ std::string* IniFile::Section::GetLine(const char* key, std::string* valueOut, s void IniFile::Section::Set(const char* key, const char* newValue) { - std::string value, commented; - std::string* line = GetLine(key, &value, &commented); + std::string value; + std::string* line = GetLine(key, &value); if (line) { // Change the value - keep the key and comment - *line = StripSpaces(key) + " = " + newValue + commented; + *line = StripSpaces(key) + " = " + newValue; } else { @@ -91,7 +76,7 @@ void IniFile::Section::Set(const char* key, const std::string& newValue, const s bool IniFile::Section::Get(const char* key, std::string* value, const char* defaultValue) { - std::string* line = GetLine(key, value, 0); + std::string* line = GetLine(key, value); if (!line) { if (defaultValue) @@ -224,7 +209,7 @@ bool IniFile::Section::Exists(const char *key) const for (std::vector::const_iterator iter = lines.begin(); iter != lines.end(); ++iter) { std::string lineKey; - ParseLine(*iter, &lineKey, NULL, NULL); + ParseLine(*iter, &lineKey, NULL); if (!strcasecmp(lineKey.c_str(), key)) return true; } @@ -233,7 +218,7 @@ bool IniFile::Section::Exists(const char *key) const bool IniFile::Section::Delete(const char *key) { - std::string* line = GetLine(key, 0, 0); + std::string* line = GetLine(key, 0); for (std::vector::iterator liter = lines.begin(); liter != lines.end(); ++liter) { if (line == &*liter) @@ -313,7 +298,7 @@ bool IniFile::DeleteKey(const char* sectionName, const char* key) Section* section = GetSection(sectionName); if (!section) return false; - std::string* line = section->GetLine(key, 0, 0); + std::string* line = section->GetLine(key, 0); for (std::vector::iterator liter = section->lines.begin(); liter != section->lines.end(); ++liter) { if (line == &(*liter)) @@ -335,7 +320,7 @@ bool IniFile::GetKeys(const char* sectionName, std::vector& keys) c for (std::vector::const_iterator liter = section->lines.begin(); liter != section->lines.end(); ++liter) { std::string key; - ParseLine(*liter, &key, 0, 0); + ParseLine(*liter, &key, 0); keys.push_back(key); } return true; diff --git a/Source/Core/Common/Src/IniFile.h b/Source/Core/Common/Src/IniFile.h index 10e1cfdbb9..cc4d1515be 100644 --- a/Source/Core/Common/Src/IniFile.h +++ b/Source/Core/Common/Src/IniFile.h @@ -25,7 +25,7 @@ public: bool Exists(const char *key) const; bool Delete(const char *key); - std::string* GetLine(const char* key, std::string* valueOut, std::string* commentOut); + std::string* GetLine(const char* key, std::string* valueOut); void Set(const char* key, const char* newValue); void Set(const char* key, const std::string& newValue, const std::string& defaultValue);