aboutsummaryrefslogtreecommitdiffstats
path: root/fm.h
diff options
context:
space:
mode:
authorAmbrose Li <ambrose.li@gmail.com>2020-08-25 03:48:09 +0000
committerAmbrose Li <ambrose.li@gmail.com>2020-08-25 03:48:09 +0000
commit48c9ec565d0a8e147adb61eb79777812688bfbaa (patch)
treed249686b321e535348c1426eddfa10b610ef5858 /fm.h
parentUpdate ChangeLog (diff)
downloadw3m-48c9ec565d0a8e147adb61eb79777812688bfbaa.tar.gz
w3m-48c9ec565d0a8e147adb61eb79777812688bfbaa.zip
In HTML5 anchors should not be closed when encountering divs, for example, but should be closed when encountering buttons, for example. Many sites that use HTML5-style anchors end up having links displayed with zero-length link texts. The proposed patch correct this behaviour by detecting whether the document is HTML5, then suppressing the close-anchor action in CLOSE_A if it's an HTML5 document. A new macro handles the HTML5-specific cases where anchors are not already always closed.
This also fixes a bug in the tokenizing FSM in etc.c that prevented the !doctype element from being recognized; the fix is necessary because HTML5 detection depends on checking the !doctype element.
Diffstat (limited to 'fm.h')
-rw-r--r--fm.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/fm.h b/fm.h
index 4a17ecc..330fd09 100644
--- a/fm.h
+++ b/fm.h
@@ -661,6 +661,7 @@ struct readbuffer {
#endif /* FORMAT_NICE */
#define RB_DEL 0x100000
#define RB_S 0x200000
+#define RB_HTML5 0x400000
#define RB_GET_ALIGN(obuf) ((obuf)->flag&RB_ALIGN)
#define RB_SET_ALIGN(obuf,align) {(obuf)->flag &= ~RB_ALIGN; (obuf)->flag |= (align); }
@@ -673,7 +674,7 @@ struct readbuffer {
RB_SET_ALIGN(obuf,(obuf)->flag_stack[--(obuf)->flag_sp]); \
}
-/* status flags */
+/* state of token scanning finite state machine */
#define R_ST_NORMAL 0 /* normal */
#define R_ST_TAG0 1 /* within tag, just after < */
#define R_ST_TAG 2 /* within tag */