Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Count how many bytes str would contain if it would be rss escapped
- */
- static int
- rss_escaped_len(const char *str)
- {
- int i;
- int len = 0;
- for(i=0; i<strlen(str); i++) {
- switch (str[i]) {
- case '>':
- case '<':
- len += 4;
- break;
- case '&':
- len += 5;
- break;
- case '\"':
- case '\'':
- len += 6;
- break;
- default:
- len++;
- break;
- }
- }
- return len;
- }
- /*
- * RSS (xml) escape a string
- */
- static const char*
- rss_escape(const char *str)
- {
- static char buf[1024];
- char esc[7];
- int esc_len;
- char *p;
- char *p_end;
- int len;
- int i;
- len = rss_escaped_len(str);
- len = MIN(len, sizeof(buf) - 1);
- p = buf;
- p_end = buf + len;
- memset(buf, 0, sizeof(buf));
- for(i=0; i<strlen(str); i++) {
- switch (str[i]) {
- case '<':
- strcpy(esc, "<");
- break;
- case '>':
- strcpy(esc, ">");
- break;
- case '&':
- strcpy(esc, "&");
- break;
- case '\"':
- strcpy(esc, """);
- break;
- case '\'':
- strcpy(esc, "'");
- break;
- default:
- esc[0] = str[i];
- esc[1] = 0;
- break;
- }
- esc_len = strlen(esc);
- if(p_end < p+esc_len)
- break;
- strcpy(p, esc);
- p += esc_len;
- }
- p[len] = '\0';
- return buf;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement