5 char *xml_escape(const char *str) {
6 return xml_escape_data(str, strlen(str));
9 char *xml_escape_data(const char *str, int len) {
10 char *r = malloc(len * 5 + 1); /* Up to 5x the space if they're all &'s */
13 for (i = 0, j = 0; i < len; i++) {
16 memcpy(r + j, "<", 4);
20 memcpy(r + j, ">", 4);
24 memcpy(r + j, "&", 5);