1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00

[table] skip_script

This commit is contained in:
Witold Filipczyk 2023-09-24 17:56:06 +02:00
parent 81b89946e6
commit 78543c55ee

View File

@ -44,8 +44,9 @@ add_table_bad_html_start(struct table *table, char *start)
&& !table->bad_html[table->bad_html_size - 1].end)
return;
if (realloc_bad_html(&table->bad_html, table->bad_html_size))
if (realloc_bad_html(&table->bad_html, table->bad_html_size)) {
table->bad_html[table->bad_html_size++].start = start;
}
}
static void
@ -538,6 +539,42 @@ skip_table(char *html, char *eof)
}
}
static char *
skip_script(char *html, char *eof)
{
int level = 1;
while (1) {
char *name;
int namelen, closing_tag = 0;
while (html < eof
&& (*html != '<'
|| parse_element(html, eof, &name, &namelen, NULL,
&html)))
html++;
if (html >= eof) return eof;
if (!namelen) continue;
if (*name == '/') {
closing_tag = 1;
name++; namelen--;
if (!namelen) continue;
}
if (!c_strlcasecmp(name, namelen, "SCRIPT", 6)) {
if (!closing_tag) {
level++;
} else {
level--;
if (!level) return html;
}
}
}
}
struct table *
parse_table(char *html, char *eof, char **end,
char *attr, int sh, struct html_context *html_context)
@ -608,6 +645,11 @@ see:
closing_tag = 0;
}
if (!c_strlcasecmp(name, namelen, "SCRIPT", 6)) {
en = skip_script(en, eof);
goto see;
}
if (!c_strlcasecmp(name, namelen, "TABLE", 5)) {
if (!closing_tag) {
en = skip_table(en, eof);