From 8bdf66a1f5f21c05414ab48c294ca13d2f91a1b3 Mon Sep 17 00:00:00 2001 From: leitner Date: Wed, 17 Sep 2014 13:58:59 +0000 Subject: [PATCH] add scan_html_tagarg --- CHANGES | 2 +- textcode.h | 31 ++++++++++++++++++------------- textcode/fmt_html.c | 6 +++++- textcode/scan_html.c | 12 ++++++++++-- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/CHANGES b/CHANGES index 30fb65f..4c3d9a3 100644 --- a/CHANGES +++ b/CHANGES @@ -16,7 +16,7 @@ switch epoll from level triggering to edge triggering introduce io_eagain_read and io_eagain_write (discontinue using io_eagain plz) fix buffer_get - add fmt_html_tagarg, fmt_xml + add fmt_html_tagarg, fmt_xml, scan_html_tagarg 0.29: save 8 bytes in taia.h for 64-bit systems diff --git a/textcode.h b/textcode.h index 336668a..2bb1132 100644 --- a/textcode.h +++ b/textcode.h @@ -57,19 +57,24 @@ size_t fmt_base85(char* dest,const char* src,size_t len); /* These read one line from src, decode it, and write the result to * dest. The number of decoded bytes is written to destlen. dest * should be able to hold strlen(src) bytes as a rule of thumb. */ -size_t scan_uuencoded(const char *src,char *dest,size_t *destlen); -size_t scan_base64(const char *src,char *dest,size_t *destlen); -size_t scan_quotedprintable(const char *src,char *dest,size_t *destlen); -size_t scan_urlencoded(const char *src,char *dest,size_t *destlen); -size_t scan_urlencoded2(const char *src,char *dest,size_t *destlen); -size_t scan_yenc(const char *src,char *dest,size_t *destlen); -size_t scan_hexdump(const char *src,char *dest,size_t *destlen); -size_t scan_html(const char *src,char *dest,size_t *destlen); -size_t scan_cescape(const char *src,char *dest,size_t *destlen); -size_t scan_ldapescape(const char* src,char* dest,size_t *destlen); -size_t scan_jsonescape(const char* src,char* dest,size_t *destlen); - -size_t scan_base85(const char* src,char* dest,size_t *destlen); +size_t scan_uuencoded(const char* src,char* dest,size_t* destlen); +size_t scan_base64(const char* src,char* dest,size_t* destlen); +size_t scan_quotedprintable(const char* src,char* dest,size_t* destlen); +size_t scan_urlencoded(const char* src,char* dest,size_t* destlen); +size_t scan_urlencoded2(const char* src,char* dest,size_t* destlen); +size_t scan_yenc(const char* src,char* dest,size_t* destlen); +size_t scan_hexdump(const char* src,char* dest,size_t* destlen); +/* decodes all html5-standardized &foo; escapes, and also + * "
" to "\n" and "

" to "\n\n", leaves the rest of the tags alone */ +size_t scan_html(const char* src,char* dest,size_t* destlen); +/* decodes all html5-standardized &foo; escapes, but leaves all tags + * alone */ +size_t scan_html_tagarg(const char* src,char* dest,size_t* destlen); +size_t scan_cescape(const char* src,char* dest,size_t* destlen); +size_t scan_ldapescape(const char* src,char* dest,size_t* destlen); +size_t scan_jsonescape(const char* src,char* dest,size_t* destlen); + +size_t scan_base85(const char* src,char* dest,size_t* destlen); #ifdef STRALLOC_H /* WARNING: these functions _append_ to the stralloc, not overwrite! */ diff --git a/textcode/fmt_html.c b/textcode/fmt_html.c index bd3e238..4847d90 100644 --- a/textcode/fmt_html.c +++ b/textcode/fmt_html.c @@ -13,7 +13,11 @@ size_t fmt_html(char* dest,const char* src,size_t len) { case '<': seq="<"; goto doit; case '>': seq=">"; goto doit; case '\n': - seq="
"; + if (i")) { dest[written]='\n'; i+=3; @@ -75,3 +75,11 @@ size_t scan_html(const char *src,char *dest,size_t *destlen) { *destlen=written; return i; } + +size_t scan_html_tagarg(const char *src,char *dest,size_t *destlen) { + return scan_html_inner(src,dest,destlen,1); +} + +size_t scan_html(const char *src,char *dest,size_t *destlen) { + return scan_html_inner(src,dest,destlen,0); +}