1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-06-30 01:55:30 +00:00
Commit Graph

222 Commits

Author SHA1 Message Date
Jonas Fonseca
6cd5e387e5 DOM: Change sgml-parser program to have sane exit code for incomplete input 2006-02-01 10:51:24 +01:00
Jonas Fonseca
c7843058fc DOM: Convert to use enum dom_code
Doh, ended pushing out half finished commits. :(
2006-02-01 10:38:21 +01:00
Jonas Fonseca
a983603863 DOM: Rename src/dom/dom.h src/dom/code.h
Additionally, add API doc mark.
2006-01-31 23:30:55 +01:00
Jonas Fonseca
4de26051b9 Ignore test files 2006-01-31 22:23:22 +01:00
Jonas Fonseca
92a9cafb6e DOM: Replace various DOM status/error/exception codes with dom_code enum
Replaces sgml_parser_code, dom_stack_code, and dom_exception_code and
generally tries to simplify things and remove redundant codes.
2006-01-31 22:01:35 +01:00
Jonas Fonseca
73c06aaa10 DOM: Add test for parsing randomized HTML
It uses mangleme by Michal Zalewski <lcamtuf@coredump.cx> to generate HTML
which is then fed into the sgml-parser program. By default 100 random HTML
documents are tested. But the test script takes the number of documents
to test against as an argument. Useful for torture testing the SGML parser.
2006-01-31 19:29:48 +01:00
Jonas Fonseca
f42dd94fb5 DOM: Fix test descriptions 2006-01-30 06:45:53 +01:00
Jonas Fonseca
7be0093e36 DOM: Add test for dumping DOM trees to SGML 2006-01-30 06:25:22 +01:00
Jonas Fonseca
f8a86a26c4 DOM: Add simple stack context based utility for dumping DOM trees to SGML 2006-01-30 06:07:16 +01:00
Jonas Fonseca
a3dcc7d5e5 DOM: Change the attribute node's quoted member to be unsigned char
It can hold NUL, ', or " depending on not quoted, single quoted or double
quoted.
2006-01-30 06:05:32 +01:00
Jonas Fonseca
bc50084475 DOM: Add get_dom_node_next() 2006-01-30 06:03:36 +01:00
Jonas Fonseca
ea675cbb6e DOM: Fix get_dom_node_map_index() so it returns the correct ordered index
This was cause by the recent change to allocate string during incremental
parsing where the node string was set after insertion. Test for this in the
works.

Fixes: b6b6d3c67e
2006-01-30 06:02:02 +01:00
Jonas Fonseca
f268d0c495 DOM: Add missing config.h #include 2006-01-30 05:55:35 +01:00
Jonas Fonseca
9fe0608bd2 DOM: Fix checking of out-of-bound access to scanned strings 2006-01-29 12:12:41 +01:00
Jonas Fonseca
2918e3f595 DOM: Add STATIC_DOM_STRING macro and make INIT_DOM_STRING cleaner 2006-01-28 22:55:15 +01:00
Jonas Fonseca
58b8635caf DOM: Add test to check that '\f' (form feed) counts as a newline 2006-01-28 22:51:52 +01:00
Jonas Fonseca
c223f6ce94 Sed the expected output instead of the output from sgml-parser 2006-01-28 15:12:49 +01:00
Jonas Fonseca
03c467bcbf Move URI normalization to the test library 2006-01-28 15:03:19 +01:00
Jonas Fonseca
b6b6d3c67e DOM: Allocate all node strings when doing incremental rendering
This changes init_dom_node_() to take an allocated argument saying whether
to allocate or not. If the value is -1, node->allocated will be set to the
value of node->parent->allocated. This way the value is inherited like we
do it in the menu code. It should be a sane default since we eventually
want not to rely on the 'underlying' source of the document and there will
be less variables to pass around.
2006-01-28 04:51:25 +01:00
Jonas Fonseca
24a9d103b4 DOM: Add allocated flag to struct dom_node; replaces subtype flags
Prepare for handling of allocated strings in the various nodes.
2006-01-28 04:50:04 +01:00
Jonas Fonseca
3b183c1685 Merge with git+ssh://pasky/srv/git/elinks.git 2006-01-28 03:36:47 +01:00
Jonas Fonseca
95c1de2315 Fix handling of incomplete processing instructions
When doing incremental rendering we now require the whole thing to be there
and that there is room for two tokens in the scanner token table.  This is
necessary because we have to generate both a processing target token and a
processing data token to make life simpler for the parser.

Remove processing instruction data case label from the main parser loop. It
is safer this way since it already assumes that the processing target token
has been stored.
2006-01-28 03:35:36 +01:00
Jonas Fonseca
823c594524 Use ssize_t instead of size_t for length since it must carry a signed value 2006-01-28 03:24:16 +01:00
Jonas Fonseca
00c4e0bfa2 Do not attempt to read *string when string == scanner->end
There might be other places that needs to be reviewd for this.
2006-01-28 03:23:06 +01:00
Jonas Fonseca
d92a074e40 Fix parsing of '<a< b>' where the scanner didn't rewind to the proper place
Add test for this tag soup combo.
2006-01-28 03:21:27 +01:00
Laurent MONIN
5114c9d110 Trim trailing whitespaces. 2006-01-28 01:59:22 +01:00
Jonas Fonseca
e5e06764c4 Improve checks for incompleteness when parsing attributes
Check whether there are '=' and value tokens before handling them. If there
is any doubt the whole attribute structure is 'pushed back' into the
stream. That way incremental parsing will not add the value as a new
attribute because the name token was handled in the previous parsing run.
2006-01-28 01:40:56 +01:00
Jonas Fonseca
4ab1dde874 Preserve the scanner state when it is not the 'default' state
This is necessary to make it possible to resume parsing of element
attributes. Allows the incomplete string in the parsing state struct to
be unset.
2006-01-28 01:24:30 +01:00
Jonas Fonseca
c6e83d1d9c Assert parsing depth >= parser stack depth
Like the comment says popping parsing nodes during incremental parsing
might trigger this.
2006-01-28 01:12:03 +01:00
Jonas Fonseca
9e7b0d4fa3 Remove assertion logic from parse_sgml_attributes()
They are getting out of hand and making it hard to use the function in
'unusual' situations (like when resuming parsing inside elements).
2006-01-28 01:09:05 +01:00
Jonas Fonseca
1e104afbba Improve error checking when adding nodes
Fail with SGML_PARSER_CODE_MEM_ALLOC.
2006-01-28 01:05:42 +01:00
Jonas Fonseca
74728cab05 Also set the node subtype for <?xml-stylesheet?> 2006-01-28 01:00:28 +01:00
Jonas Fonseca
bccf5512d6 Force an incomplete token for quoted attribute values when there's no end 2006-01-28 00:56:48 +01:00
Jonas Fonseca
a2376609e3 Expand the testing of incremental parsing
There are still some bugs to resolve.
2006-01-28 00:50:06 +01:00
Jonas Fonseca
0f8aa77ebb Add test for incremental SGML parsing
It is a loop that parses the same small document with various read sizes.
The sgml-parser program is updated to take --stdin option taking a the read
size as a required parameter.
2006-01-27 07:49:15 +01:00
Jonas Fonseca
b25cd27232 Add support incremental parsing
That is, add the last parts that saves and resumes previous incomplete
parsing states. Now the parsing stack push handler checks if the parent has
a resume flag set. When set, the incomplete fragment to resume is restored
and the new source fragment appended and parsing is continued.
2006-01-27 07:47:17 +01:00
Jonas Fonseca
9d91994f3c Propone updating the scanner->state until incompleteness has been checked
That way the scanner state is meaningful when resuming during incremental
parsing.
2006-01-27 07:41:42 +01:00
Jonas Fonseca
afb45aace5 Add support for scanning comment endings such as '--!>' correctly 2006-01-25 18:18:01 +01:00
Jonas Fonseca
2eba71d95b Add support for testing normalization using the DOM configuration module 2006-01-20 02:08:46 +01:00
Jonas Fonseca
cc61578fcb Fix node pushing in walk_dom_nodes() 2006-01-20 02:07:24 +01:00
Jonas Fonseca
22e647813e Fix DOM_CONFIG_NORMALIZE_WHITESPACE comment 2006-01-20 02:06:41 +01:00
Jonas Fonseca
7fe214fbb2 Fix text node appending; fix DOM configuration parser 2006-01-19 04:54:30 +01:00
Jonas Fonseca
fe43bf8a4f Fix leaks in the DOM stack tracer 2006-01-19 04:51:33 +01:00
Jonas Fonseca
126ae8c764 #include dom/node.h instead of dom/stack.h 2006-01-19 04:50:10 +01:00
Jonas Fonseca
34b12d21bd Upgrade to use dom_stack_codes in the callbacks 2006-01-17 16:58:19 +01:00
Jonas Fonseca
2cd151c5c5 Add parse_dom_config() which converts a textual config list to flags 2006-01-17 16:55:10 +01:00
Jonas Fonseca
1d52d67e50 Add get_dom_node_child() which searches for a node with given type 2006-01-16 07:11:02 +01:00
Jonas Fonseca
6c85c0f009 Add DOM configuration inspired module
It add support for normalizing a DOM document in various ways, such as
removing comments, converting CDATA section nodes to text nodes, cleanup
whitespace, etc.

Use it in the RSS renderer to sanitize the text to be rendered.
2006-01-16 05:12:34 +01:00
Jonas Fonseca
768f97c38e Add get_dom_node_prev() which gets the previous sibling of a DOM node 2006-01-16 05:10:22 +01:00
Jonas Fonseca
4e6b05394d ADD DOM_STACK_CODE_FREE_NODE so callbacks can remove nodes when popping 2006-01-16 05:09:45 +01:00
Jonas Fonseca
eecc22751d Use dom_stack_code enum for dom_stack_callback_T 2006-01-16 00:55:58 +01:00
Jonas Fonseca
4a2cde1c00 Introduce dom_stack_code enum and use it for push_dom_node() 2006-01-16 00:40:51 +01:00
Jonas Fonseca
2748d043f9 Autogenerate .vimrc files and put the master in config/vimrc
This changes the init target to be idempotent: most importantly it will now
never overwrite a Makefile if it exists. Additionally 'make init' will
generate the .vimrc files. Yay, no more stupid 'added fairies' commits! ;)
2006-01-15 18:38:58 +01:00
Jonas Fonseca
082031c10c Fix SGML parser test program 2006-01-14 12:44:06 +01:00
Jonas Fonseca
c8aa6c2360 Move struct sgml_parsing_state near the parsing state managing 2006-01-14 12:11:35 +01:00
Jonas Fonseca
e70b779366 Add code member to struct sgml_parser and simplify parsing state setup
parse_sgml() now just pushes a text node on the parsing state and the push
handler will now call parse_sgml_plain() and save the return code in
parser->code so parse_sgml() can return it. Much simpler.
2006-01-14 12:09:17 +01:00
Jonas Fonseca
0950996dd8 Change parse_sgml() to take buf+bufsize instead of DOM string 2006-01-14 11:32:11 +01:00
Jonas Fonseca
aecfb28711 Cleanup SGML info backends #includes and description 2006-01-14 08:07:00 +01:00
Laurent MONIN
5685221512 Trim trailing whitespaces. 2006-01-13 00:11:39 +01:00
Laurent MONIN
bdc59d5ac4 Store lib.o name in a variable named LIB_O_NAME. 2006-01-12 19:06:50 +01:00
Jonas Fonseca
2d80258f72 Mark doc'd headers with: /* API Doc :: <api-name> */ 2006-01-11 11:03:59 +01:00
Jonas Fonseca
dd2516f597 Oops, someone added stuff he wuz not s'posed to 2006-01-09 14:11:29 +01:00
Jonas Fonseca
620730e642 Document the DOM scanner 2006-01-09 14:01:48 +01:00
Jonas Fonseca
3b166b0633 Document the DOM stack 2006-01-09 12:44:57 +01:00
Jonas Fonseca
938c8a80b4 Support more implicit markup of source files 2006-01-09 11:01:36 +01:00
Jonas Fonseca
db11b6452f Fix a typo and a ref:[] 2006-01-09 01:20:03 +01:00
Jonas Fonseca
5b818b20ba Use the new asciidoc code markup to document the DOM sgml parser 2006-01-08 23:36:07 +01:00
Jonas Fonseca
2f9c406ef1 Introduce add_to_dom_string() and turn init_dom_string() into its user 2006-01-08 03:40:54 +01:00
Jonas Fonseca
acb1f7e74d Refactor computation of scanner error string length to get_sgml_error_end() 2006-01-07 23:51:19 +01:00
Jonas Fonseca
534a16fff1 Improve error detection 2006-01-07 23:40:21 +01:00
Jonas Fonseca
3835bf8449 A handful of fixes related to error detection
- Fix assertion failure by breaking the switch if an error token is next
   when previous was a processing instruction.
 - Fix <!notation parsing by skipping ident chars instead of spaces.
 - Improve checking of processing instruction 'target'-end and what error
   string is generated.
 - For now put all of the processing instruction data in the error token.
 - Remove a DBG()-print.
2006-01-07 05:18:43 +01:00
Jonas Fonseca
97f403a9d9 Add a test file for checking detection of errors by the SGML parser 2006-01-07 05:15:16 +01:00
Jonas Fonseca
03ee543e21 Make sgml-parser request error detection when passed --error option 2006-01-07 04:27:08 +01:00
Jonas Fonseca
c993a0012e Add basic support for detection errors while scanning
It mostly uses the checking for incompleteness already in place. Tested
lightly so it will definately need some more work.
2006-01-07 04:26:08 +01:00
Jonas Fonseca
5defc48eb3 Add basic support for requesting error detection; SGML scanner part missing 2006-01-07 04:21:39 +01:00
Jonas Fonseca
a1e5122183 Drop unnneeded URL argument and simplify test helpers 2006-01-07 02:14:45 +01:00
Jonas Fonseca
f1c3c90a4f Move line counting tests to own file; simplifies a few things 2006-01-07 02:02:21 +01:00
Jonas Fonseca
dee8ac5b45 Move test for incompleteness to own file 2006-01-07 01:48:51 +01:00
Jonas Fonseca
7ff2cb2607 Improve a comment a bit 2006-01-07 01:41:07 +01:00
Jonas Fonseca
7c65c06b41 Move up enum sgml_parser_code declaration 2006-01-07 01:29:44 +01:00
Jonas Fonseca
c9c41e38a2 test_expect_incomplete(): Put sgml-parser output to /dev/null 2006-01-07 01:27:48 +01:00
Jonas Fonseca
f8d44ffe32 scan_sgml_tokens(): Drop local variable and use scanner->current
... so lower level scanners can change the next token to use.
2006-01-07 01:25:42 +01:00
Jonas Fonseca
bca330fcbd Simplify incomplete test helper and fix quoting problem 2006-01-07 01:22:14 +01:00
Jonas Fonseca
215d7ec158 Append memdebug to test dependencies in Makefile.lib 2006-01-06 22:11:45 +01:00
Jonas Fonseca
5f5c78a87f Realign the test docs with reality 2006-01-06 18:32:22 +01:00
Jonas Fonseca
ab8a4b2847 Add more tests based on test/comments.html 2006-01-05 15:36:18 +01:00
Laurent MONIN
31c30864e0 Trim trailing whitespaces. 2006-01-04 18:08:48 +01:00
Jonas Fonseca
0bfb1d7742 Free nodes created on the SGML parsing stack 2006-01-04 00:29:10 +01:00
Jonas Fonseca
66cf866ab6 Cleanup the DOM stack flags; s/KEEP_NODES/FREE_NODES/ 2006-01-03 20:35:32 +01:00
Jonas Fonseca
7a5f699a88 Drop unneeded -b arg to cmp, which isn't available in FreeBSD's version 2006-01-03 20:00:06 +01:00
Jonas Fonseca
146ca09c43 Improve support for running 'make test' when srcdir != builddir
Additionally, also make TESTDEPS conditionally contain memdebug object
binary only if CONFIG_DEBUG is yes.
2006-01-03 19:04:17 +01:00
Jonas Fonseca
50183bf5d8 Add support for recursively running all tests 2006-01-03 02:07:51 +01:00
Jonas Fonseca
ba5bdfec00 Move the 'make test' handling to Makefile.lib
The test rule is defined when TEST_PROGS is defined. Users should also set
TESTDEPS to get the correct object files linked in.
2006-01-03 00:45:22 +01:00
Jonas Fonseca
23f0085842 Move src/dom/test/libtest test/libtest.sh, put path to it in TEST_LIB 2006-01-03 00:34:10 +01:00
Jonas Fonseca
f88cbe6761 Add check of incomplete text 2006-01-02 22:35:03 +01:00
Jonas Fonseca
42156f4477 Change one test description to start with 'Parse ...' 2006-01-02 22:31:28 +01:00
Jonas Fonseca
f75ccffbc7 Fix SGML parsing and scanning so that all tests succeeds
This includes checking the return token of get_next_dom_scanner_token() and
fixing the calculated size of recovered processing instruction data tokens.
2006-01-02 21:04:51 +01:00
Jonas Fonseca
0160c0a464 Make it possible to test how incomplete input is parsed
Also fix the expected output of proc. instruction test.
2006-01-02 21:02:41 +01:00
Jonas Fonseca
e78d43f1ac Add mode where the SGML scanner checks for completeness 2006-01-02 17:46:09 +01:00
Jonas Fonseca
af72dd8435 Make parse_sgml() return the sgml_parser_code enum
It is mostly just ignored for now. The SGML parser test tool will however
return parser code.
2006-01-02 17:40:42 +01:00