summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/IniFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Src/IniFile.cpp')
-rw-r--r--Source/Core/Common/Src/IniFile.cpp54
1 files changed, 17 insertions, 37 deletions
diff --git a/Source/Core/Common/Src/IniFile.cpp b/Source/Core/Common/Src/IniFile.cpp
index 0b265543de..2eca8df929 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)
{
- 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;
+ if (line[0] == '#')
+ return;
- // Allow preservation of spacing before comment
- if (FirstCommentChar > 0)
- {
- while (line[FirstCommentChar - 1] == ' ' || line[FirstCommentChar - 1] == 9) // 9 == tab
- {
- FirstCommentChar--;
- }
- }
+ int FirstEquals = (int)line.find("=", 0);
- 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<std::string>::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<std::string>::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<std::string>::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<std::string>::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<std::string>& keys) c
for (std::vector<std::string>::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;
@@ -421,11 +406,6 @@ bool IniFile::Load(const char* filename)
// New section!
std::string sub = line.substr(1, endpos - 1);
sections.push_back(Section(sub));
-
- if (endpos + 1 < line.size())
- {
- sections[sections.size() - 1].comment = line.substr(endpos + 1);
- }
}
}
else
@@ -459,7 +439,7 @@ bool IniFile::Save(const char* filename)
if (section.name != "")
{
- out << "[" << section.name << "]" << section.comment << std::endl;
+ out << "[" << section.name << "]" << std::endl;
}
for (std::vector<std::string>::const_iterator liter = section.lines.begin(); liter != section.lines.end(); ++liter)