diff options
Diffstat (limited to 'pkg/netsurf/libhubbub')
| -rw-r--r-- | pkg/netsurf/libhubbub/entities.awk | 55 | ||||
| -rw-r--r-- | pkg/netsurf/libhubbub/gen.rc | 33 | ||||
| -rw-r--r-- | pkg/netsurf/libhubbub/rev | 1 | ||||
| m--------- | pkg/netsurf/libhubbub/src | 0 |
4 files changed, 89 insertions, 0 deletions
diff --git a/pkg/netsurf/libhubbub/entities.awk b/pkg/netsurf/libhubbub/entities.awk new file mode 100644 index 00000000..43ccc89b --- /dev/null +++ b/pkg/netsurf/libhubbub/entities.awk @@ -0,0 +1,55 @@ +BEGIN { + for (i = 32; i <= 126; ++i) + ord[sprintf("%c", i)] = i + n = -1 +} + +function makenode(c) { + ++n + splits[n] = c + left[n] = -1 + equal[n] = -1 + right[n] = -1 + values[n] = 0 +} + +function insert(nodes, id, c) { + nextid = nodes[id] + if (nextid != -1) + return nextid + makenode(c) + nodes[id] = n + return n +} + +/^(#|$)/ {next} + +{ + id = 0 + c = ord[substr($1, 1, 1)] + if (n < 0) + makenode(c) + for (i = 1; i <= length($1) + 1;) { + if (c < splits[id]) { + id = insert(left, id, c) + } else if (c == splits[id]) { + if (i >= length($1)) + values[id] = $2 + if (c == 0) + break + ++i + c = i <= length($1) ? ord[substr($1, i, 1)] : 0 + id = insert(equal, id, c) + } else { + id = insert(right, id, c) + } + } +} + +END { + print "static hubbub_entity_node dict[] = {" + for (i = 0; i <= n; ++i) + print "\t{ "splits[i]", "left[i]", "equal[i]", "right[i]", "values[i]" }," + print "};" + print "static int32_t dict_root = 0;" +} diff --git a/pkg/netsurf/libhubbub/gen.rc b/pkg/netsurf/libhubbub/gen.rc new file mode 100644 index 00000000..63cef77b --- /dev/null +++ b/pkg/netsurf/libhubbub/gen.rc @@ -0,0 +1,33 @@ +cflags\ + -isystem pkg/netsurf/libdom/src/include\ + -isystem pkg/netsurf/libparserutils/src/include\ + -isystem pkg/netsurf/libwapcaplet/src/include\ + -I '$outdir' \ + -I '$srcdir'/src\ + -I '$srcdir'/include + +build '$outdir'/entities.inc awk '$srcdir'/build/Entities '|' '$dir'/entities.awk ; with\ + expr '-f $dir/entities.awk' + +phony deps\ + '$outdir'/entities.inc\ + '$builddir'/pkg/netsurf/^(libdom libparserutils libwapcaplet)^/fetch.stamp + +lib libhubbub.a -d '$dir'/deps src/^(\ + parser.c\ + charset/detect.c\ + tokeniser/^(entities.c tokeniser.c)\ + treebuilder/^(\ + treebuilder.c\ + initial.c before_html.c before_head.c in_head.c\ + in_head_noscript.c after_head.c in_body.c in_table.c\ + in_caption.c in_column_group.c in_table_body.c in_row.c\ + in_cell.c in_select.c in_select_in_table.c\ + in_foreign_content.c after_body.c in_frameset.c\ + after_frameset.c after_after_body.c after_after_frameset.c\ + generic_rcdata.c\ + )\ + utils/^(errors.c string.c)\ +) '$builddir'/pkg/netsurf/libparserutils/libparserutils.a + +fetch git diff --git a/pkg/netsurf/libhubbub/rev b/pkg/netsurf/libhubbub/rev new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/pkg/netsurf/libhubbub/rev @@ -0,0 +1 @@ +1 diff --git a/pkg/netsurf/libhubbub/src b/pkg/netsurf/libhubbub/src new file mode 160000 +Subproject 73071c0dea1e4bcfd094810d051aebc74e6c648 |
