mirror of
https://github.com/yawut/SDL.git
synced 2026-06-22 12:29:50 -05:00
Refined the string escaping algorithm.
This commit is contained in:
parent
d758dadb41
commit
7d9bdb201b
|
|
@ -148,9 +148,9 @@ EscapeString(const char *string)
|
|||
break;
|
||||
case '\'': totalSize += 6; //SDL_strlen("'");
|
||||
break;
|
||||
case '"': totalSize += 6; //SDL_strlen(""");
|
||||
case '"': totalSize += 6; //SDL_strlen(""");
|
||||
break;
|
||||
case '<': totalSize += 4; //SDL_strlen("<");
|
||||
case '<': totalSize += 4; //SDL_strlen("<");
|
||||
break;
|
||||
case '>': totalSize += 4; //SDL_strlen(">");
|
||||
break;
|
||||
|
|
@ -167,53 +167,41 @@ EscapeString(const char *string)
|
|||
}
|
||||
|
||||
// escape the string
|
||||
int retBufferCounter = 0;
|
||||
for(counter = 0; counter < maxCount; ++counter) {
|
||||
char character = string[counter];
|
||||
char *curRetBuffer = retBuffer;
|
||||
char *curString = string;
|
||||
|
||||
char character = *curString;
|
||||
while( (character = *curString++) ) {
|
||||
|
||||
switch(character) {
|
||||
case '&':
|
||||
retBuffer[retBufferCounter++] = '&';
|
||||
retBuffer[retBufferCounter++] = 'a';
|
||||
retBuffer[retBufferCounter++] = 'm';
|
||||
retBuffer[retBufferCounter++] = 'p';
|
||||
retBuffer[retBufferCounter++] = ';';
|
||||
memcpy((void *)curRetBuffer, (void *)"&", 5);
|
||||
curRetBuffer += 5;
|
||||
break;
|
||||
case '\'':
|
||||
retBuffer[retBufferCounter++] = '&';
|
||||
retBuffer[retBufferCounter++] = 'a';
|
||||
retBuffer[retBufferCounter++] = 'p';
|
||||
retBuffer[retBufferCounter++] = 'o';
|
||||
retBuffer[retBufferCounter++] = 's';
|
||||
retBuffer[retBufferCounter++] = ';';
|
||||
memcpy((void *)curRetBuffer, (void *)"'", 6);
|
||||
curRetBuffer += 6;
|
||||
break;
|
||||
case '"':
|
||||
retBuffer[retBufferCounter++] = '&';
|
||||
retBuffer[retBufferCounter++] = 'q';
|
||||
retBuffer[retBufferCounter++] = 'u';
|
||||
retBuffer[retBufferCounter++] = 'o';
|
||||
retBuffer[retBufferCounter++] = 't';
|
||||
retBuffer[retBufferCounter++] = ';';
|
||||
memcpy((void *)curRetBuffer, (void *)""", 6);
|
||||
curRetBuffer += 6;
|
||||
break;
|
||||
case '<':
|
||||
retBuffer[retBufferCounter++] = '&';
|
||||
retBuffer[retBufferCounter++] = 'l';
|
||||
retBuffer[retBufferCounter++] = 't';
|
||||
retBuffer[retBufferCounter++] = ';';
|
||||
memcpy((void *)curRetBuffer, (void *)"<", 4);
|
||||
curRetBuffer += 4;
|
||||
break;
|
||||
case '>': totalSize += SDL_strlen(">");
|
||||
retBuffer[retBufferCounter++] = '&';
|
||||
retBuffer[retBufferCounter++] = 'g';
|
||||
retBuffer[retBufferCounter++] = 't';
|
||||
retBuffer[retBufferCounter++] = ';';
|
||||
case '>':
|
||||
memcpy((void *)curRetBuffer, (void *)">", 4);
|
||||
curRetBuffer += 4;
|
||||
break;
|
||||
default:
|
||||
retBuffer[retBufferCounter++] = character;
|
||||
*curRetBuffer = character;
|
||||
curRetBuffer += 1;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
retBuffer[retBufferCounter] = '\0';
|
||||
*curRetBuffer = '\0';
|
||||
|
||||
return retBuffer;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user