#include "common.h" #include "formatting.h" void entitize(char *buff, int size) { char *tmp = new char[size]; int in = 0, out = 0; while(buff[in]) { switch(buff[in]) { case '\"': in++; strncpy(tmp + out, """, size - out); out += 6; break; case '&': in++; strncpy(tmp + out, "&", size - out); out += 5; break; case '\'': in++; strncpy(tmp + out, "'", size - out); out += 6; break; case '<': in++; strncpy(tmp + out, "<", size - out); out += 4; break; case '>': in++; strncpy(tmp + out, ">", size - out); out += 4; break; default: tmp[out++] = buff[in++]; } } tmp[out] = 0; strncpy(buff, tmp, size); delete tmp; buff[size - 1] = 0; } void unentitize(char *buff) { int in = 0, out = 0; while(buff[in]) { if(buff[in] == '&') { if(strcmp(buff + in, """) == 0) { buff[out++] = '\"'; in += 6; } else if(strcmp(buff + in, "&") == 0) { buff[out++] = '&'; in += 5; } else if(strcmp(buff + in, "'") == 0) { buff[out++] = '\''; in += 6; } else if(strcmp(buff + in, "<") == 0) { buff[out++] = '<'; in += 4; } else if(strcmp(buff + in, ">") == 0) { buff[out++] = '>'; in += 4; } else buff[out++] = buff[in++]; } else buff[out++] = buff[in++]; } buff[out] = 0; } void strip_tags(char *buff) { int in = 0, out = 0; while(buff[in]) { if(buff[in] == '<') { while(buff[in] && buff[in] != '>') in++; in++; } else buff[out++] = buff[in++]; } buff[out] = 0; }