add BOM check to config reads
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user