Greatly reduce the amount we escape in .sm files.
Now we just escape :;\ and //
This commit is contained in:
+15
-12
@@ -569,10 +569,17 @@ RString SmEscape( const char *cUnescaped, int len )
|
|||||||
RString answer = "";
|
RString answer = "";
|
||||||
for( int i = 0; i < len; ++i )
|
for( int i = 0; i < len; ++i )
|
||||||
{
|
{
|
||||||
if( cUnescaped[i] == '=' || cUnescaped[i] == '\\' || cUnescaped[i] == ':' ||
|
// Other characters we could theoretically escape:
|
||||||
cUnescaped[i] == '[' || cUnescaped[i] == ']' || cUnescaped[i] == ';' ||
|
// NotesWriterSM.cpp used to claim ',' should be escaped, but there was no explanation why
|
||||||
cUnescaped[i] == '#' || cUnescaped[i] == '\r' || cUnescaped[i] == '\n' ||
|
// '#' is both a control character and a valid part of a parameter. The only way for there to be
|
||||||
cUnescaped[i] == ',' )
|
// any confusion is in a misformatted .sm file, though, so it is unnecessary to escape it.
|
||||||
|
if( cUnescaped[i] == '/' && i + 1 < len && cUnescaped[i + 1] == '/' )
|
||||||
|
{
|
||||||
|
answer += "\\/\\/";
|
||||||
|
++i; // increment here so we skip both //s
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if( cUnescaped[i] == '\\' || cUnescaped[i] == ':' || cUnescaped[i] == ';' )
|
||||||
answer += "\\";
|
answer += "\\";
|
||||||
answer += cUnescaped[i];
|
answer += cUnescaped[i];
|
||||||
}
|
}
|
||||||
@@ -591,16 +598,12 @@ RString DwiEscape( const char *cUnescaped, int len )
|
|||||||
{
|
{
|
||||||
switch( cUnescaped[i] )
|
switch( cUnescaped[i] )
|
||||||
{
|
{
|
||||||
case '=': answer += '-'; break;
|
// TODO: Which of these characters actually affect DWI?
|
||||||
case '\\':
|
case '\\':
|
||||||
case ':':
|
case ':':
|
||||||
case '[':
|
case ';': answer += '|'; break;
|
||||||
case ']':
|
case '[': answer += '('; break;
|
||||||
case ';': answer += 'I'; break;
|
case ']': answer += ')'; break;
|
||||||
case '#':
|
|
||||||
case '\r':
|
|
||||||
case '\n':
|
|
||||||
case ',': answer += ' '; break;
|
|
||||||
default: answer += cUnescaped[i];
|
default: answer += cUnescaped[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user