in src/main/cpp/jsonlayout.cpp [216:311]
void JSONLayout::appendItem(const LogString& input, LogString& buf)
{
/* add leading quote */
buf.push_back(0x22);
logchar specialChars[] =
{
0x08, /* \b backspace */
0x09, /* \t tab */
0x0a, /* \n newline */
0x0c, /* \f form feed */
0x0d, /* \r carriage return */
0x22, /* \" double quote */
0x5c, /* \\ backslash */
0x00 /* terminating NULL for C-strings */
};
size_t start = 0;
size_t found = input.find_first_of(specialChars, start);
while (found != LogString::npos)
{
if (found > start)
{
buf.append(input, start, found - start);
}
switch (input[found])
{
case 0x08:
/* \b backspace */
buf.push_back(0x5c);
buf.push_back('b');
break;
case 0x09:
/* \t tab */
buf.push_back(0x5c);
buf.push_back('t');
break;
case 0x0a:
/* \n newline */
buf.push_back(0x5c);
buf.push_back('n');
break;
case 0x0c:
/* \f form feed */
buf.push_back(0x5c);
buf.push_back('f');
break;
case 0x0d:
/* \r carriage return */
buf.push_back(0x5c);
buf.push_back('r');
break;
case 0x22:
/* \" double quote */
buf.push_back(0x5c);
buf.push_back(0x22);
break;
case 0x5c:
/* \\ backslash */
buf.push_back(0x5c);
buf.push_back(0x5c);
break;
default:
buf.push_back(input[found]);
break;
}
start = found + 1;
if (found < input.size())
{
found = input.find_first_of(specialChars, start);
}
else
{
found = LogString::npos;
}
}
if (start < input.size())
{
buf.append(input, start, input.size() - start);
}
/* add trailing quote */
buf.push_back(0x22);
}