wrap_in_html(): use strbuf_addstr_xml_quoted()
Use the new function to quote characters as they are being added to buf, rather than quoting them in *p and then copying them into buf. This increases code sharing, and changes the algorithm from O(N^2) to O(N) in the number of characters in a line. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f035ab6205
commit
3c64063558
23
imap-send.c
23
imap-send.c
@ -1339,21 +1339,6 @@ static int imap_store_msg(struct store *gctx, struct msg_data *msg)
|
|||||||
return DRV_OK;
|
return DRV_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void encode_html_chars(struct strbuf *p)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < p->len; i++) {
|
|
||||||
if (p->buf[i] == '&')
|
|
||||||
strbuf_splice(p, i, 1, "&", 5);
|
|
||||||
if (p->buf[i] == '<')
|
|
||||||
strbuf_splice(p, i, 1, "<", 4);
|
|
||||||
if (p->buf[i] == '>')
|
|
||||||
strbuf_splice(p, i, 1, ">", 4);
|
|
||||||
if (p->buf[i] == '"')
|
|
||||||
strbuf_splice(p, i, 1, """, 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wrap_in_html(struct strbuf *msg)
|
static void wrap_in_html(struct strbuf *msg)
|
||||||
{
|
{
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
@ -1372,12 +1357,12 @@ static void wrap_in_html(struct strbuf *msg)
|
|||||||
strbuf_addbuf(&buf, *p);
|
strbuf_addbuf(&buf, *p);
|
||||||
strbuf_addstr(&buf, pre_open);
|
strbuf_addstr(&buf, pre_open);
|
||||||
added_header = 1;
|
added_header = 1;
|
||||||
continue;
|
} else {
|
||||||
|
strbuf_addbuf(&buf, *p);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
strbuf_addstr_xml_quoted(&buf, (*p)->buf);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
encode_html_chars(*p);
|
|
||||||
strbuf_addbuf(&buf, *p);
|
|
||||||
}
|
}
|
||||||
strbuf_addstr(&buf, pre_close);
|
strbuf_addstr(&buf, pre_close);
|
||||||
strbuf_list_free(lines);
|
strbuf_list_free(lines);
|
||||||
|
Loading…
Reference in New Issue
Block a user