#include <string.h>
#include <stdlib.h>
#include "escapery.h"
char *xml_escape(const char *str) {
return xml_escape_data(str, strlen(str));
}
char *xml_escape_data(const char *str, int len) {
char *r = malloc(len * 5 + 1);
int i, j;
for (i = 0, j = 0; i < len; i++) {
switch(str[i]) {
case '<':
memcpy(r + j, "<", 4);
j += 4;
break;
case '>':
memcpy(r + j, ">", 4);
j += 4;
break;
case '&':
memcpy(r + j, "&", 5);
j += 5;
break;
default:
r[j] = str[i];
j += 1;
}
}
r[j] = 0;
return r;
}