Squashed commit of the following:
commit
396f8663f2fb7cc95a318675dc0f961abf1ca2d6
Author: Oleksandr Serhiienko <oserhiie@cisco.com>
Date: Wed Dec 16 13:52:00 2020 +0200
parser: fix escape logic for --dump-rule-meta output
static std::string escape(const std::string& s)
{
std::string res;
+ int quotes_first = 0;
+ int quotes_last = std::count(s.begin(), s.end(), '"') - 1;
+ int quotes_count = quotes_first;
for ( auto it = s.begin(); it != s.end(); ++it )
{
switch ( *it )
{
- case '"': res += ( it > s.begin() and it < s.end() - 1 ) ? "\\\"" : "\""; continue;
+ case '"':
+ {
+ if ( ( quotes_count > quotes_first ) and ( quotes_count < quotes_last ) )
+ res += "\\\"";
+ else
+ res += "\"";
+
+ ++quotes_count;
+ continue;
+ }
case '\\': res += "\\\\"; continue;
case '\a': res += "\\a"; continue;
case '\b': res += "\\b"; continue;