add BOM check to config reads

This commit is contained in:
somewhatlurker
2019-09-03 16:50:20 +10:00
parent 7c5294f0f5
commit b8f008aa5a
2 changed files with 25 additions and 1 deletions
@@ -232,6 +232,13 @@ bool IsLineInFile(LPCSTR searchLine, LPCWSTR fileName)
std::string line;
// check for BOM
std::getline(fileStream, line);
if (line.size() >= 3 & line.rfind("\xEF\xBB\xBF", 0) == 0)
fileStream.seekg(3);
else
fileStream.seekg(0);
while (std::getline(fileStream, line))
{
if (line.compare(searchLine) == 0)
@@ -259,8 +266,18 @@ void PrependFile(LPCSTR newStr, LPCWSTR fileName)
fileStream.seekg(0, std::ios::end);
origStr.reserve(fileStream.tellg());
fileStream.seekg(0, std::ios::beg);
// check for BOM
std::string BOMcheckLine;
std::getline(fileStream, BOMcheckLine);
if (BOMcheckLine.size() >= 3 & BOMcheckLine.rfind("\xEF\xBB\xBF", 0) == 0)
fileStream.seekg(3);
else
fileStream.seekg(0);
origStr.assign((std::istreambuf_iterator<char>(fileStream)), std::istreambuf_iterator<char>());
std::string outStr = newStr;
outStr += origStr;
@@ -51,6 +51,13 @@ namespace TLAC::FileSystem
{
std::string line;
// check for BOM
std::getline(fileStream, line);
if (line.size() >= 3 & line.rfind("\xEF\xBB\xBF", 0) == 0)
fileStream.seekg(3);
else
fileStream.seekg(0);
while (std::getline(fileStream, line))
{
if (IsComment(line))
@@ -67,6 +74,6 @@ namespace TLAC::FileSystem
bool ConfigFile::IsComment(const std::string &line)
{
return line.size() <= 0 || line[0] == '#' || line[0] == '[' || line._Starts_with("//");
return line.size() <= 0 || line[0] == '#' || line[0] == '[' || (line.size() >= 2 & line.rfind("//", 0) == 0);
}
}