unsigned int escape_char_for_xml()

in src/util.c [295:332]


unsigned int escape_char_for_xml(char *in, char *out)
{
	unsigned int count = 0;
	size_t pos_in = 0, pos_out = 0;

	for (pos_in = 0; in[pos_in]; pos_in++) {
		count++;
		switch (in[pos_in]) {
		case '>':
			memcpy(out + pos_out, ">", 4);
			pos_out = pos_out + 4;
			break;
		case '<':
			memcpy(out + pos_out, "&lt;", 4);
			pos_out = pos_out + 4;
			break;
		case '&':
			memcpy(out + pos_out, "&amp;", 5);
			pos_out = pos_out + 5;
			break;
		case '\'':
			memcpy(out + pos_out, "&apos;", 6);
			pos_out = pos_out + 6;
			break;
		case '\"':
			memcpy(out + pos_out, "&quot;", 6);
			pos_out = pos_out + 6;
			break;
		case '\n':
			break;
		default:
			count--;
			memcpy(out + pos_out, in + pos_in, 1);
			pos_out++;
		}
	}
	return count;
}