Commit 8190ae31 authored by Markus Kauppila's avatar Markus Kauppila

Refined the string escaping algorithm.

parent 6ab0dd49
...@@ -148,9 +148,9 @@ EscapeString(const char *string) ...@@ -148,9 +148,9 @@ EscapeString(const char *string)
break; break;
case '\'': totalSize += 6; //SDL_strlen("'"); case '\'': totalSize += 6; //SDL_strlen("'");
break; break;
case '"': totalSize += 6; //SDL_strlen("""); case '"': totalSize += 6; //SDL_strlen(""");
break; break;
case '<': totalSize += 4; //SDL_strlen("&lt;"); case '<': totalSize += 4; //SDL_strlen("&lt;");
break; break;
case '>': totalSize += 4; //SDL_strlen("&gt;"); case '>': totalSize += 4; //SDL_strlen("&gt;");
break; break;
...@@ -167,53 +167,41 @@ EscapeString(const char *string) ...@@ -167,53 +167,41 @@ EscapeString(const char *string)
} }
// escape the string // escape the string
int retBufferCounter = 0; char *curRetBuffer = retBuffer;
for(counter = 0; counter < maxCount; ++counter) { char *curString = string;
char character = string[counter];
char character = *curString;
while( (character = *curString++) ) {
switch(character) { switch(character) {
case '&': case '&':
retBuffer[retBufferCounter++] = '&'; memcpy((void *)curRetBuffer, (void *)"&amp;", 5);
retBuffer[retBufferCounter++] = 'a'; curRetBuffer += 5;
retBuffer[retBufferCounter++] = 'm';
retBuffer[retBufferCounter++] = 'p';
retBuffer[retBufferCounter++] = ';';
break; break;
case '\'': case '\'':
retBuffer[retBufferCounter++] = '&'; memcpy((void *)curRetBuffer, (void *)"&apos;", 6);
retBuffer[retBufferCounter++] = 'a'; curRetBuffer += 6;
retBuffer[retBufferCounter++] = 'p';
retBuffer[retBufferCounter++] = 'o';
retBuffer[retBufferCounter++] = 's';
retBuffer[retBufferCounter++] = ';';
break; break;
case '"': case '"':
retBuffer[retBufferCounter++] = '&'; memcpy((void *)curRetBuffer, (void *)"&quot;", 6);
retBuffer[retBufferCounter++] = 'q'; curRetBuffer += 6;
retBuffer[retBufferCounter++] = 'u';
retBuffer[retBufferCounter++] = 'o';
retBuffer[retBufferCounter++] = 't';
retBuffer[retBufferCounter++] = ';';
break; break;
case '<': case '<':
retBuffer[retBufferCounter++] = '&'; memcpy((void *)curRetBuffer, (void *)"&lt;", 4);
retBuffer[retBufferCounter++] = 'l'; curRetBuffer += 4;
retBuffer[retBufferCounter++] = 't';
retBuffer[retBufferCounter++] = ';';
break; break;
case '>': totalSize += SDL_strlen("&gt;"); case '>':
retBuffer[retBufferCounter++] = '&'; memcpy((void *)curRetBuffer, (void *)"&gt;", 4);
retBuffer[retBufferCounter++] = 'g'; curRetBuffer += 4;
retBuffer[retBufferCounter++] = 't';
retBuffer[retBufferCounter++] = ';';
break; break;
default: default:
retBuffer[retBufferCounter++] = character; *curRetBuffer = character;
curRetBuffer += 1;
break; break;
} }
} }
retBuffer[retBufferCounter] = '\0'; *curRetBuffer = '\0';
return retBuffer; return retBuffer;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment