43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
* The empty string in the second argument leads to a syntax error
* when the macro is not used with a string literal. Unfortunately
* the error is not overly explicit.
*/
/* BLOB_APPEND_BLOB -- append blob contents to another */
#define BLOB_APPEND_BLOB(dest, src) \
blob_append_safe_html((dest), blob_buffer(src), blob_size(src))
/* HTML escapes
**
** html_escape() converts < to <, > to >, and & to &.
** html_quote() goes further and converts " into " and ' in '.
*/
|
|
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
* The empty string in the second argument leads to a syntax error
* when the macro is not used with a string literal. Unfortunately
* the error is not overly explicit.
*/
/* BLOB_APPEND_BLOB -- append blob contents to another */
#define BLOB_APPEND_BLOB(dest, src) \
safe_html_append((dest), blob_buffer(src), blob_size(src))
/* HTML escapes
**
** html_escape() converts < to <, > to >, and & to &.
** html_quote() goes further and converts " into " and ' in '.
*/
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
&& sqlite3_strnicmp("</h1>", &data[size-5],5)==0
){
int nTag = html_tag_length(data);
blob_append(title, data+nTag, size - nTag - 5);
return;
}
INTER_BLOCK(ob);
blob_append_safe_html(ob, data, size);
BLOB_APPEND_LITERAL(ob, "\n");
}
static void html_blockcode(struct Blob *ob, struct Blob *text, void *opaque){
INTER_BLOCK(ob);
BLOB_APPEND_LITERAL(ob, "<pre><code>");
html_escape(ob, blob_buffer(text), blob_size(text));
|
|
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
&& sqlite3_strnicmp("</h1>", &data[size-5],5)==0
){
int nTag = html_tag_length(data);
blob_append(title, data+nTag, size - nTag - 5);
return;
}
INTER_BLOCK(ob);
safe_html_append(ob, data, size);
BLOB_APPEND_LITERAL(ob, "\n");
}
static void html_blockcode(struct Blob *ob, struct Blob *text, void *opaque){
INTER_BLOCK(ob);
BLOB_APPEND_LITERAL(ob, "<pre><code>");
html_escape(ob, blob_buffer(text), blob_size(text));
|