Fix for 3867545, finance.yahoo.com lays out incorrectly. Add a quirk that will...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Dec 2004 01:38:04 +0000 (01:38 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Dec 2004 01:38:04 +0000 (01:38 +0000)
down below floats when there is insufficient space.  Instead we will match Gecko and just spill out of the
containing block to the right.  This appears to be the more common desired behavior, despite being wrong.
WinIE sometimes wraps and sometimes doesn't, but it's really hard for us to match its inconsistency.

        Reviewed by john

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::getClearDelta):
        * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
        * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
        * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
        * layout-tests/fast/block/margin-collapse/102-expected.txt:
        * layout-tests/fast/block/margin-collapse/102.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8174 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/fast/block/float/tableshifting.html [new file with mode: 0644]
LayoutTests/fast/block/margin-collapse/102-expected.txt
LayoutTests/fast/block/margin-collapse/102.html
WebCore/ChangeLog-2005-08-23
WebCore/khtml/misc/htmlattrs.c
WebCore/khtml/misc/htmltags.c
WebCore/khtml/rendering/render_block.cpp

diff --git a/LayoutTests/fast/block/float/tableshifting.html b/LayoutTests/fast/block/float/tableshifting.html
new file mode 100644 (file)
index 0000000..b03e784
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+
+    <title>Jeffrey Zeldman Presents: The Daily Report</title>
+
+<style>
+        
+#bravefourhundred {
+       width: 385px;
+}
+
+img {
+    margin-top:1em;
+    display: block;
+    background-color:yellow;
+}
+
+.foo { float:left;width:100px; height:100px;background-color:green }
+
+</style>
+
+
+
+  </head>
+
+<body>
+<div id="bravefourhundred">
+<div>The yellow block should be to the right of the green block.</div>
+<div class="foo"></div><img width="395" height="275" border="0">
+</div>
+</body>
+</html>
index e6bce7b2d18775afb35299dedf0885c918afdf5f..8b7422b4955f19c57d1537091bcabc81968e7010 100644 (file)
@@ -1,10 +1,10 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {DIV} at (0,0) size 385x411
-        RenderBlock {DIV} at (0,0) size 385x36
+layer at (0,0) size 800x427
+  RenderBlock {HTML} at (0,0) size 800x427
+    RenderBody {BODY} at (8,8) size 784x411
+      RenderBlock {DIV} at (0,0) size 400x411
+        RenderBlock {DIV} at (0,0) size 400x36
           RenderText {TEXT} at (0,0) size 364x36
             text run at (0,0) width 364: "There should be no vertical space between the two blocks"
             text run at (0,18) width 43: "below."
index 03a8e129c33b0a08b2a999a96138764be51851c1..acf1c1159438be37e9ad277d32c494d79a7b08e8 100644 (file)
@@ -1,3 +1,4 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
 
@@ -6,7 +7,7 @@
 <style>
         
 #bravefourhundred {
-       width: 385px;
+       width: 400px;
 }
 
 img {
index 7495f9a9bbfaee4d0d512e6e00996e48018ac8b3..b3680d974712c48daeefa2b48e8bed09e6ea86bd 100644 (file)
@@ -1,3 +1,20 @@
+2004-12-09  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3867545, finance.yahoo.com lays out incorrectly.  Add a quirk that will prevent tables from moving
+       down below floats when there is insufficient space.  Instead we will match Gecko and just spill out of the
+       containing block to the right.  This appears to be the more common desired behavior, despite being wrong.
+       WinIE sometimes wraps and sometimes doesn't, but it's really hard for us to match its inconsistency.
+       
+        Reviewed by john
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::getClearDelta):
+        * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
+        * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
+        * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
+        * layout-tests/fast/block/margin-collapse/102-expected.txt:
+        * layout-tests/fast/block/margin-collapse/102.html:
+
 2004-12-09  Richard Williamson   <rjw@apple.com>
 
        Fixed <rdar://problem/3914078> worldclock crashing gc related
@@ -39,6 +56,7 @@
 
 === Safari-175 ===
 
+>>>>>>> 1.3603
 2004-12-09  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by John
index 3f9faae470cdc3fcca346f30b2a946f9bfc73dff..9f07241b1e343f76e40feb2123117cba16cae062 100644 (file)
@@ -1,45 +1,14 @@
-/* ANSI-C code produced by gperf version 3.0.1 */
+/* ANSI-C code produced by gperf version 2.7.2 */
 /* Command-line: gperf -c -a -L ANSI-C -D -E -C -o -t -k '*' -NfindAttr -Hhash_attr -Wwordlist_attr -s 2 htmlattrs.gperf  */
-
-#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-/* The character set is not based on ISO-646.  */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
-#endif
-
-#line 1 "htmlattrs.gperf"
-
 /* This file is automatically generated from
 #htmlattrs.in by makeattrs, do not edit */
 /* Copyright 1999 Lars Knoll */
 #include "htmlattrs.h"
-#line 7 "htmlattrs.gperf"
 struct attrs {
     const char *name;
     int id;
 };
-/* maximum key range = 705, duplicates = 0 */
+/* maximum key range = 1379, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -53,79 +22,66 @@ hash_attr (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708,  10,  10, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708,  10,  25,   5,
-        0,   5,  60,  40, 140,  30, 135, 210,  15,  35,
-       90,   0,   0,   0,   0,   0,   0,  85, 150, 225,
-       70,  10,  20, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
-      708, 708, 708, 708, 708, 708, 708
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382,   10, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382,   30,  170,   10,
+        45,    0,  120,   55,  100,    0,    0,   90,   30,  360,
+         0,    0,    0,    0,  215,    5,    0,   65,   20,   35,
+        25,   15,    0, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382
     };
   register int hval = len;
 
   switch (hval)
     {
       default:
+      case 15:
         hval += asso_values[(unsigned char)str[14]];
-      /*FALLTHROUGH*/
       case 14:
         hval += asso_values[(unsigned char)str[13]];
-      /*FALLTHROUGH*/
       case 13:
         hval += asso_values[(unsigned char)str[12]];
-      /*FALLTHROUGH*/
       case 12:
         hval += asso_values[(unsigned char)str[11]];
-      /*FALLTHROUGH*/
       case 11:
         hval += asso_values[(unsigned char)str[10]];
-      /*FALLTHROUGH*/
       case 10:
         hval += asso_values[(unsigned char)str[9]];
-      /*FALLTHROUGH*/
       case 9:
         hval += asso_values[(unsigned char)str[8]];
-      /*FALLTHROUGH*/
       case 8:
         hval += asso_values[(unsigned char)str[7]];
-      /*FALLTHROUGH*/
       case 7:
         hval += asso_values[(unsigned char)str[6]];
-      /*FALLTHROUGH*/
       case 6:
         hval += asso_values[(unsigned char)str[5]];
-      /*FALLTHROUGH*/
       case 5:
         hval += asso_values[(unsigned char)str[4]];
-      /*FALLTHROUGH*/
       case 4:
         hval += asso_values[(unsigned char)str[3]];
-      /*FALLTHROUGH*/
       case 3:
         hval += asso_values[(unsigned char)str[2]];
-      /*FALLTHROUGH*/
       case 2:
-        hval += asso_values[(unsigned char)str[1]+1];
-      /*FALLTHROUGH*/
+        hval += asso_values[(unsigned char)str[1]];
       case 1:
         hval += asso_values[(unsigned char)str[0]];
         break;
@@ -145,448 +101,369 @@ findAttr (register const char *str, register unsigned int len)
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 15,
       MIN_HASH_VALUE = 3,
-      MAX_HASH_VALUE = 707
+      MAX_HASH_VALUE = 1381
     };
 
   static const struct attrs wordlist_attr[] =
     {
-#line 177 "htmlattrs.gperf"
       {"top", ATTR_TOP},
-#line 118 "htmlattrs.gperf"
-      {"ondrop", ATTR_ONDROP},
-#line 167 "htmlattrs.gperf"
-      {"src", ATTR_SRC},
-#line 159 "htmlattrs.gperf"
+      {"size", ATTR_SIZE},
+      {"cite", ATTR_CITE},
+      {"content", ATTR_CONTENT},
+      {"type", ATTR_TYPE},
       {"scope", ATTR_SCOPE},
-#line 52 "htmlattrs.gperf"
-      {"coords", ATTR_COORDS},
-#line 119 "htmlattrs.gperf"
-      {"onerror", ATTR_ONERROR},
-#line 42 "htmlattrs.gperf"
-      {"code", ATTR_CODE},
-#line 132 "htmlattrs.gperf"
-      {"onreset", ATTR_ONRESET},
-#line 84 "htmlattrs.gperf"
-      {"loop", ATTR_LOOP},
-#line 109 "htmlattrs.gperf"
+      {"text", ATTR_TEXT},
       {"oncopy", ATTR_ONCOPY},
-#line 131 "htmlattrs.gperf"
-      {"onpaste", ATTR_ONPASTE},
-#line 46 "htmlattrs.gperf"
-      {"cols", ATTR_COLS},
-#line 45 "htmlattrs.gperf"
-      {"color", ATTR_COLOR},
-#line 14 "htmlattrs.gperf"
-      {"accept", ATTR_ACCEPT},
-#line 180 "htmlattrs.gperf"
-      {"type", ATTR_TYPE},
-#line 125 "htmlattrs.gperf"
-      {"onload", ATTR_ONLOAD},
-#line 60 "htmlattrs.gperf"
       {"enctype", ATTR_ENCTYPE},
-#line 44 "htmlattrs.gperf"
-      {"codetype", ATTR_CODETYPE},
-#line 28 "htmlattrs.gperf"
-      {"border", ATTR_BORDER},
-#line 73 "htmlattrs.gperf"
+      {"loop", ATTR_LOOP},
+      {"title", ATTR_TITLE},
+      {"span", ATTR_SPAN},
+      {"onpaste", ATTR_ONPASTE},
+      {"action", ATTR_ACTION},
       {"id", ATTR_ID},
-#line 136 "htmlattrs.gperf"
+      {"cols", ATTR_COLS},
       {"onselect", ATTR_ONSELECT},
-#line 53 "htmlattrs.gperf"
-      {"data", ATTR_DATA},
-#line 150 "htmlattrs.gperf"
-      {"prompt", ATTR_PROMPT},
-#line 101 "htmlattrs.gperf"
-      {"onabort", ATTR_ONABORT},
-#line 134 "htmlattrs.gperf"
-      {"onscroll", ATTR_ONSCROLL},
-#line 12 "htmlattrs.gperf"
-      {"abbr", ATTR_ABBR},
-#line 19 "htmlattrs.gperf"
+      {"style", ATTR_STYLE},
+      {"accept", ATTR_ACCEPT},
+      {"code", ATTR_CODE},
+      {"nosave", ATTR_NOSAVE},
       {"alt", ATTR_ALT},
-#line 32 "htmlattrs.gperf"
-      {"char", ATTR_CHAR},
-#line 164 "htmlattrs.gperf"
-      {"shape", ATTR_SHAPE},
-#line 137 "htmlattrs.gperf"
-      {"onselectstart", ATTR_ONSELECTSTART},
-#line 23 "htmlattrs.gperf"
       {"axis", ATTR_AXIS},
-#line 39 "htmlattrs.gperf"
+      {"plain", ATTR_PLAIN},
+      {"vspace", ATTR_VSPACE},
+      {"oninput", ATTR_ONINPUT},
+      {"codetype", ATTR_CODETYPE},
+      {"oncut", ATTR_ONCUT},
+      {"colspan", ATTR_COLSPAN},
       {"class", ATTR_CLASS},
-#line 112 "htmlattrs.gperf"
-      {"ondrag", ATTR_ONDRAG},
-#line 35 "htmlattrs.gperf"
-      {"charset", ATTR_CHARSET},
-#line 43 "htmlattrs.gperf"
-      {"codebase", ATTR_CODEBASE},
-#line 41 "htmlattrs.gperf"
-      {"clear", ATTR_CLEAR},
-#line 29 "htmlattrs.gperf"
-      {"bordercolor", ATTR_BORDERCOLOR},
-#line 48 "htmlattrs.gperf"
-      {"compact", ATTR_COMPACT},
-#line 62 "htmlattrs.gperf"
-      {"for", ATTR_FOR},
-#line 133 "htmlattrs.gperf"
-      {"onresize", ATTR_ONRESIZE},
-#line 117 "htmlattrs.gperf"
-      {"ondragstart", ATTR_ONDRAGSTART},
-#line 174 "htmlattrs.gperf"
-      {"target", ATTR_TARGET},
-#line 152 "htmlattrs.gperf"
-      {"rel", ATTR_REL},
-#line 75 "htmlattrs.gperf"
-      {"ismap", ATTR_ISMAP},
-#line 161 "htmlattrs.gperf"
-      {"scrolldelay", ATTR_SCROLLDELAY},
-#line 49 "htmlattrs.gperf"
-      {"composite", ATTR_COMPOSITE},
-#line 142 "htmlattrs.gperf"
+      {"z-index", ATTR_Z_INDEX},
+      {"selected", ATTR_SELECTED},
       {"pagey", ATTR_PAGEY},
-#line 40 "htmlattrs.gperf"
+      {"data", ATTR_DATA},
+      {"onload", ATTR_ONLOAD},
+      {"pagex", ATTR_PAGEX},
+      {"lang", ATTR_LANG},
+      {"align", ATTR_ALIGN},
+      {"link", ATTR_LINK},
+      {"keytype", ATTR_KEYTYPE},
       {"classid", ATTR_CLASSID},
-#line 77 "htmlattrs.gperf"
-      {"label", ATTR_LABEL},
-#line 110 "htmlattrs.gperf"
-      {"oncut", ATTR_ONCUT},
-#line 163 "htmlattrs.gperf"
-      {"selected", ATTR_SELECTED},
-#line 61 "htmlattrs.gperf"
+      {"shape", ATTR_SHAPE},
+      {"valign", ATTR_VALIGN},
+      {"vlink", ATTR_VLINK},
+      {"onclick", ATTR_ONCLICK},
+      {"value", ATTR_VALUE},
+      {"hspace", ATTR_HSPACE},
+      {"longdesc", ATTR_LONGDESC},
+      {"left", ATTR_LEFT},
+      {"alink", ATTR_ALINK},
+      {"autosave", ATTR_AUTOSAVE},
       {"face", ATTR_FACE},
-#line 169 "htmlattrs.gperf"
+      {"valuetype", ATTR_VALUETYPE},
+      {"accesskey", ATTR_ACCESSKEY},
+      {"onkeyup", ATTR_ONKEYUP},
+      {"onunload", ATTR_ONUNLOAD},
+      {"cellspacing", ATTR_CELLSPACING},
+      {"width", ATTR_WIDTH},
+      {"object", ATTR_OBJECT},
+      {"noshade", ATTR_NOSHADE},
+      {"onkeydown", ATTR_ONKEYDOWN},
+      {"hidden", ATTR_HIDDEN},
+      {"unknown", ATTR_UNKNOWN},
+      {"onchange", ATTR_ONCHANGE},
+      {"http-equiv", ATTR_HTTP_EQUIV},
+      {"onfocus", ATTR_ONFOCUS},
+      {"onreset", ATTR_ONRESET},
+      {"noresize", ATTR_NORESIZE},
+      {"onresize", ATTR_ONRESIZE},
+      {"src", ATTR_SRC},
+      {"rev", ATTR_REV},
+      {"precision", ATTR_PRECISION},
+      {"pluginpage", ATTR_PLUGINPAGE},
+      {"version", ATTR_VERSION},
+      {"rel", ATTR_REL},
+      {"visibility", ATTR_VISIBILITY},
+      {"pluginspage", ATTR_PLUGINSPAGE},
       {"start", ATTR_START},
-#line 55 "htmlattrs.gperf"
+      {"cellpadding", ATTR_CELLPADDING},
+      {"rows", ATTR_ROWS},
+      {"color", ATTR_COLOR},
+      {"height", ATTR_HEIGHT},
+      {"checked", ATTR_CHECKED},
+      {"dir", ATTR_DIR},
+      {"challenge", ATTR_CHALLENGE},
+      {"label", ATTR_LABEL},
+      {"ondrop", ATTR_ONDROP},
+      {"codebase", ATTR_CODEBASE},
+      {"standby", ATTR_STANDBY},
+      {"language", ATTR_LANGUAGE},
+      {"tabindex", ATTR_TABINDEX},
+      {"direction", ATTR_DIRECTION},
+      {"coords", ATTR_COORDS},
+      {"wrap", ATTR_WRAP},
+      {"nowrap", ATTR_NOWRAP},
+      {"clear", ATTR_CLEAR},
+      {"rowspan", ATTR_ROWSPAN},
+      {"onscroll", ATTR_ONSCROLL},
+      {"contenteditable", ATTR_CONTENTEDITABLE},
+      {"target", ATTR_TARGET},
+      {"onselectstart", ATTR_ONSELECTSTART},
+      {"rules", ATTR_RULES},
+      {"results", ATTR_RESULTS},
+      {"disabled", ATTR_DISABLED},
       {"declare", ATTR_DECLARE},
-#line 166 "htmlattrs.gperf"
-      {"span", ATTR_SPAN},
-#line 54 "htmlattrs.gperf"
-      {"datetime", ATTR_DATETIME},
-#line 179 "htmlattrs.gperf"
+      {"for", ATTR_FOR},
       {"truespeed", ATTR_TRUESPEED},
-#line 173 "htmlattrs.gperf"
-      {"tableborder", ATTR_TABLEBORDER},
-#line 89 "htmlattrs.gperf"
-      {"mayscript", ATTR_MAYSCRIPT},
-#line 63 "htmlattrs.gperf"
-      {"frame", ATTR_FRAME},
-#line 149 "htmlattrs.gperf"
+      {"onkeypress", ATTR_ONKEYPRESS},
+      {"readonly", ATTR_READONLY},
+      {"ondrag", ATTR_ONDRAG},
+      {"scrolling", ATTR_SCROLLING},
+      {"char", ATTR_CHAR},
+      {"min", ATTR_MIN},
+      {"charset", ATTR_CHARSET},
+      {"onsearch", ATTR_ONSEARCH},
       {"profile", ATTR_PROFILE},
-#line 170 "htmlattrs.gperf"
-      {"style", ATTR_STYLE},
-#line 102 "htmlattrs.gperf"
-      {"onbeforecopy", ATTR_ONBEFORECOPY},
-#line 104 "htmlattrs.gperf"
-      {"onbeforepaste", ATTR_ONBEFOREPASTE},
-#line 47 "htmlattrs.gperf"
-      {"colspan", ATTR_COLSPAN},
-#line 56 "htmlattrs.gperf"
+      {"archive", ATTR_ARCHIVE},
+      {"composite", ATTR_COMPOSITE},
       {"defer", ATTR_DEFER},
-#line 105 "htmlattrs.gperf"
-      {"onblur", ATTR_ONBLUR},
-#line 87 "htmlattrs.gperf"
+      {"name", ATTR_NAME},
+      {"ondblclick", ATTR_ONDBLCLICK},
+      {"ondragend", ATTR_ONDRAGEND},
+      {"ismap", ATTR_ISMAP},
+      {"headers", ATTR_HEADERS},
+      {"compact", ATTR_COMPACT},
       {"max", ATTR_MAX},
-#line 175 "htmlattrs.gperf"
-      {"text", ATTR_TEXT},
-#line 37 "htmlattrs.gperf"
-      {"cellborder", ATTR_CELLBORDER},
-#line 16 "htmlattrs.gperf"
-      {"action", ATTR_ACTION},
-#line 57 "htmlattrs.gperf"
-      {"dir", ATTR_DIR},
-#line 80 "htmlattrs.gperf"
-      {"left", ATTR_LEFT},
-#line 90 "htmlattrs.gperf"
+      {"scrolldelay", ATTR_SCROLLDELAY},
+      {"onabort", ATTR_ONABORT},
+      {"accept-charset", ATTR_ACCEPT_CHARSET},
+      {"ondragleave", ATTR_ONDRAGLEAVE},
+      {"href", ATTR_HREF},
       {"media", ATTR_MEDIA},
-#line 182 "htmlattrs.gperf"
+      {"nohref", ATTR_NOHREF},
+      {"datetime", ATTR_DATETIME},
       {"usemap", ATTR_USEMAP},
-#line 141 "htmlattrs.gperf"
-      {"pagex", ATTR_PAGEX},
-#line 38 "htmlattrs.gperf"
-      {"cite", ATTR_CITE},
-#line 64 "htmlattrs.gperf"
-      {"frameborder", ATTR_FRAMEBORDER},
-#line 113 "htmlattrs.gperf"
-      {"ondragend", ATTR_ONDRAGEND},
-#line 100 "htmlattrs.gperf"
-      {"object", ATTR_OBJECT},
-#line 120 "htmlattrs.gperf"
-      {"onfocus", ATTR_ONFOCUS},
-#line 96 "htmlattrs.gperf"
-      {"noresize", ATTR_NORESIZE},
-#line 94 "htmlattrs.gperf"
-      {"name", ATTR_NAME},
-#line 176 "htmlattrs.gperf"
-      {"title", ATTR_TITLE},
-#line 114 "htmlattrs.gperf"
-      {"ondragenter", ATTR_ONDRAGENTER},
-#line 83 "htmlattrs.gperf"
-      {"longdesc", ATTR_LONGDESC},
-#line 165 "htmlattrs.gperf"
-      {"size", ATTR_SIZE},
-#line 70 "htmlattrs.gperf"
-      {"hspace", ATTR_HSPACE},
-#line 153 "htmlattrs.gperf"
-      {"results", ATTR_RESULTS},
-#line 135 "htmlattrs.gperf"
-      {"onsearch", ATTR_ONSEARCH},
-#line 148 "htmlattrs.gperf"
-      {"precision", ATTR_PRECISION},
-#line 144 "htmlattrs.gperf"
-      {"plain", ATTR_PLAIN},
-#line 34 "htmlattrs.gperf"
-      {"charoff", ATTR_CHAROFF},
-#line 78 "htmlattrs.gperf"
-      {"lang", ATTR_LANG},
-#line 157 "htmlattrs.gperf"
-      {"rules", ATTR_RULES},
-#line 189 "htmlattrs.gperf"
-      {"vspace", ATTR_VSPACE},
-#line 138 "htmlattrs.gperf"
-      {"onsubmit", ATTR_ONSUBMIT},
-#line 158 "htmlattrs.gperf"
+      {"pluginurl", ATTR_PLUGINURL},
+      {"placeholder", ATTR_PLACEHOLDER},
+      {"oversrc", ATTR_OVERSRC},
+      {"oncontextmenu", ATTR_ONCONTEXTMENU},
       {"scheme", ATTR_SCHEME},
-#line 26 "htmlattrs.gperf"
+      {"onblur", ATTR_ONBLUR},
       {"bgcolor", ATTR_BGCOLOR},
-#line 151 "htmlattrs.gperf"
-      {"readonly", ATTR_READONLY},
-#line 103 "htmlattrs.gperf"
-      {"onbeforecut", ATTR_ONBEFORECUT},
-#line 50 "htmlattrs.gperf"
-      {"content", ATTR_CONTENT},
-#line 59 "htmlattrs.gperf"
-      {"disabled", ATTR_DISABLED},
-#line 162 "htmlattrs.gperf"
-      {"scrolling", ATTR_SCROLLING},
-#line 13 "htmlattrs.gperf"
-      {"accept-charset", ATTR_ACCEPT_CHARSET},
-#line 74 "htmlattrs.gperf"
-      {"incremental", ATTR_INCREMENTAL},
-#line 139 "htmlattrs.gperf"
-      {"onunload", ATTR_ONUNLOAD},
-#line 68 "htmlattrs.gperf"
-      {"href", ATTR_HREF},
-#line 17 "htmlattrs.gperf"
-      {"align", ATTR_ALIGN},
-#line 121 "htmlattrs.gperf"
-      {"oninput", ATTR_ONINPUT},
-#line 154 "htmlattrs.gperf"
-      {"rev", ATTR_REV},
-#line 178 "htmlattrs.gperf"
-      {"topmargin", ATTR_TOPMARGIN},
-#line 116 "htmlattrs.gperf"
-      {"ondragover", ATTR_ONDRAGOVER},
-#line 27 "htmlattrs.gperf"
-      {"bgproperties", ATTR_BGPROPERTIES},
-#line 130 "htmlattrs.gperf"
+      {"multiple", ATTR_MULTIPLE},
+      {"html", ATTR_HTML},
       {"onmouseup", ATTR_ONMOUSEUP},
-#line 128 "htmlattrs.gperf"
       {"onmouseout", ATTR_ONMOUSEOUT},
-#line 65 "htmlattrs.gperf"
-      {"headers", ATTR_HEADERS},
-#line 33 "htmlattrs.gperf"
-      {"challenge", ATTR_CHALLENGE},
-#line 143 "htmlattrs.gperf"
-      {"placeholder", ATTR_PLACEHOLDER},
-#line 168 "htmlattrs.gperf"
-      {"standby", ATTR_STANDBY},
-#line 155 "htmlattrs.gperf"
-      {"rows", ATTR_ROWS},
-#line 192 "htmlattrs.gperf"
-      {"z-index", ATTR_Z_INDEX},
-#line 21 "htmlattrs.gperf"
       {"autocomplete", ATTR_AUTOCOMPLETE},
-#line 191 "htmlattrs.gperf"
-      {"wrap", ATTR_WRAP},
-#line 123 "htmlattrs.gperf"
-      {"onkeypress", ATTR_ONKEYPRESS},
-#line 91 "htmlattrs.gperf"
       {"method", ATTR_METHOD},
-#line 140 "htmlattrs.gperf"
-      {"oversrc", ATTR_OVERSRC},
-#line 115 "htmlattrs.gperf"
-      {"ondragleave", ATTR_ONDRAGLEAVE},
-#line 171 "htmlattrs.gperf"
-      {"summary", ATTR_SUMMARY},
-#line 98 "htmlattrs.gperf"
-      {"noshade", ATTR_NOSHADE},
-#line 172 "htmlattrs.gperf"
-      {"tabindex", ATTR_TABINDEX},
-#line 15 "htmlattrs.gperf"
-      {"accesskey", ATTR_ACCESSKEY},
-#line 93 "htmlattrs.gperf"
-      {"multiple", ATTR_MULTIPLE},
-#line 97 "htmlattrs.gperf"
-      {"nosave", ATTR_NOSAVE},
-#line 160 "htmlattrs.gperf"
-      {"scrollamount", ATTR_SCROLLAMOUNT},
-#line 92 "htmlattrs.gperf"
-      {"min", ATTR_MIN},
-#line 36 "htmlattrs.gperf"
-      {"checked", ATTR_CHECKED},
-#line 107 "htmlattrs.gperf"
-      {"onclick", ATTR_ONCLICK},
-#line 58 "htmlattrs.gperf"
-      {"direction", ATTR_DIRECTION},
-#line 30 "htmlattrs.gperf"
-      {"cellpadding", ATTR_CELLPADDING},
-#line 71 "htmlattrs.gperf"
-      {"html", ATTR_HTML},
-#line 31 "htmlattrs.gperf"
-      {"cellspacing", ATTR_CELLSPACING},
-#line 184 "htmlattrs.gperf"
-      {"value", ATTR_VALUE},
-#line 129 "htmlattrs.gperf"
-      {"onmouseover", ATTR_ONMOUSEOVER},
-#line 51 "htmlattrs.gperf"
-      {"contenteditable", ATTR_CONTENTEDITABLE},
-#line 106 "htmlattrs.gperf"
-      {"onchange", ATTR_ONCHANGE},
-#line 95 "htmlattrs.gperf"
-      {"nohref", ATTR_NOHREF},
-#line 76 "htmlattrs.gperf"
-      {"keytype", ATTR_KEYTYPE},
-#line 185 "htmlattrs.gperf"
-      {"valuetype", ATTR_VALUETYPE},
-#line 111 "htmlattrs.gperf"
-      {"ondblclick", ATTR_ONDBLCLICK},
-#line 124 "htmlattrs.gperf"
-      {"onkeyup", ATTR_ONKEYUP},
-#line 79 "htmlattrs.gperf"
-      {"language", ATTR_LANGUAGE},
-#line 127 "htmlattrs.gperf"
-      {"onmousemove", ATTR_ONMOUSEMOVE},
-#line 99 "htmlattrs.gperf"
-      {"nowrap", ATTR_NOWRAP},
-#line 156 "htmlattrs.gperf"
-      {"rowspan", ATTR_ROWSPAN},
-#line 22 "htmlattrs.gperf"
-      {"autosave", ATTR_AUTOSAVE},
-#line 186 "htmlattrs.gperf"
-      {"version", ATTR_VERSION},
-#line 145 "htmlattrs.gperf"
-      {"pluginpage", ATTR_PLUGINPAGE},
-#line 146 "htmlattrs.gperf"
-      {"pluginspage", ATTR_PLUGINSPAGE},
-#line 20 "htmlattrs.gperf"
-      {"archive", ATTR_ARCHIVE},
-#line 81 "htmlattrs.gperf"
-      {"leftmargin", ATTR_LEFTMARGIN},
-#line 183 "htmlattrs.gperf"
-      {"valign", ATTR_VALIGN},
-#line 69 "htmlattrs.gperf"
-      {"hreflang", ATTR_HREFLANG},
-#line 67 "htmlattrs.gperf"
-      {"hidden", ATTR_HIDDEN},
-#line 18 "htmlattrs.gperf"
-      {"alink", ATTR_ALINK},
-#line 147 "htmlattrs.gperf"
-      {"pluginurl", ATTR_PLUGINURL},
-#line 108 "htmlattrs.gperf"
-      {"oncontextmenu", ATTR_ONCONTEXTMENU},
-#line 66 "htmlattrs.gperf"
-      {"height", ATTR_HEIGHT},
-#line 25 "htmlattrs.gperf"
+      {"onmousedown", ATTR_ONMOUSEDOWN},
+      {"onbeforecopy", ATTR_ONBEFORECOPY},
       {"behavior", ATTR_BEHAVIOR},
-#line 88 "htmlattrs.gperf"
+      {"onbeforepaste", ATTR_ONBEFOREPASTE},
+      {"hreflang", ATTR_HREFLANG},
+      {"ondragenter", ATTR_ONDRAGENTER},
+      {"prompt", ATTR_PROMPT},
+      {"abbr", ATTR_ABBR},
+      {"ondragover", ATTR_ONDRAGOVER},
+      {"onbeforecut", ATTR_ONBEFORECUT},
+      {"charoff", ATTR_CHAROFF},
+      {"ondragstart", ATTR_ONDRAGSTART},
+      {"onsubmit", ATTR_ONSUBMIT},
       {"maxlength", ATTR_MAXLENGTH},
-#line 187 "htmlattrs.gperf"
-      {"visibility", ATTR_VISIBILITY},
-#line 126 "htmlattrs.gperf"
-      {"onmousedown", ATTR_ONMOUSEDOWN},
-#line 82 "htmlattrs.gperf"
-      {"link", ATTR_LINK},
-#line 24 "htmlattrs.gperf"
+      {"mayscript", ATTR_MAYSCRIPT},
+      {"border", ATTR_BORDER},
+      {"onerror", ATTR_ONERROR},
+      {"incremental", ATTR_INCREMENTAL},
+      {"topmargin", ATTR_TOPMARGIN},
+      {"bgproperties", ATTR_BGPROPERTIES},
+      {"onmouseover", ATTR_ONMOUSEOVER},
       {"background", ATTR_BACKGROUND},
-#line 190 "htmlattrs.gperf"
-      {"width", ATTR_WIDTH},
-#line 72 "htmlattrs.gperf"
-      {"http-equiv", ATTR_HTTP_EQUIV},
-#line 188 "htmlattrs.gperf"
-      {"vlink", ATTR_VLINK},
-#line 122 "htmlattrs.gperf"
-      {"onkeydown", ATTR_ONKEYDOWN},
-#line 85 "htmlattrs.gperf"
-      {"marginheight", ATTR_MARGINHEIGHT},
-#line 86 "htmlattrs.gperf"
+      {"cellborder", ATTR_CELLBORDER},
+      {"frame", ATTR_FRAME},
+      {"scrollamount", ATTR_SCROLLAMOUNT},
+      {"leftmargin", ATTR_LEFTMARGIN},
+      {"onmousemove", ATTR_ONMOUSEMOVE},
       {"marginwidth", ATTR_MARGINWIDTH},
-#line 181 "htmlattrs.gperf"
-      {"unknown", ATTR_UNKNOWN}
+      {"tableborder", ATTR_TABLEBORDER},
+      {"bordercolor", ATTR_BORDERCOLOR},
+      {"marginheight", ATTR_MARGINHEIGHT},
+      {"summary", ATTR_SUMMARY},
+      {"frameborder", ATTR_FRAMEBORDER}
     };
 
   static const short lookup[] =
     {
-       -1,  -1,  -1,   0,  -1,  -1,   1,  -1,   2,  -1,
-        3,   4,   5,  -1,   6,  -1,  -1,   7,  -1,   8,
-       -1,   9,  10,  -1,  11,  12,  13,  -1,  -1,  14,
-       -1,  15,  16,  17,  -1,  -1,  18,  19,  20,  21,
-       -1,  22,  23,  24,  25,  -1,  -1,  -1,  26,  27,
-       28,  -1,  -1,  29,  30,  31,  32,  33,  34,  -1,
-       35,  36,  37,  38,  -1,  -1,  -1,  -1,  39,  -1,
-       -1,  40,  -1,  -1,  -1,  -1,  41,  -1,  42,  -1,
-       43,  44,  -1,  -1,  45,  46,  -1,  47,  -1,  -1,
-       48,  -1,  -1,  -1,  -1,  49,  -1,  -1,  50,  51,
-       52,  -1,  53,  -1,  54,  -1,  -1,  -1,  55,  56,
-       -1,  57,  -1,  -1,  58,  59,  -1,  60,  -1,  -1,
-       61,  -1,  62,  63,  -1,  -1,  -1,  64,  -1,  -1,
-       65,  66,  -1,  67,  68,  69,  70,  -1,  71,  72,
-       73,  74,  -1,  -1,  -1,  75,  -1,  -1,  -1,  76,
-       -1,  77,  -1,  -1,  78,  -1,  79,  80,  81,  82,
-       83,  84,  -1,  85,  86,  -1,  87,  88,  89,  90,
-       91,  -1,  92,  -1,  93,  94,  95,  -1,  -1,  -1,
-       -1,  -1,  -1,  96,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  97,  98,  99,  -1,  -1, 100, 101, 102, 103,
-       -1,  -1,  -1,  -1, 104,  -1, 105,  -1, 106, 107,
-      108,  -1, 109, 110, 111, 112,  -1, 113,  -1, 114,
-      115,  -1, 116,  -1, 117,  -1, 118, 119,  -1, 120,
-       -1,  -1, 121,  -1,  -1,  -1,  -1, 122,  -1, 123,
-      124, 125, 126,  -1,  -1,  -1, 127, 128,  -1,  -1,
-       -1,  -1, 129, 130, 131,  -1,  -1,  -1, 132,  -1,
-       -1, 133, 134, 135,  -1,  -1,  -1, 136,  -1,  -1,
-       -1,  -1, 137,  -1, 138,  -1, 139,  -1,  -1, 140,
-       -1, 141,  -1,  -1,  -1, 142,  -1,  -1,  -1,  -1,
-       -1, 143,  -1,  -1,  -1, 144,  -1,  -1, 145,  -1,
-       -1, 146, 147,  -1, 148,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 149,  -1, 150, 151,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 152,  -1,  -1,  -1,
-       -1, 153, 154, 155,  -1,  -1,  -1, 156,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 157, 158, 159,  -1,  -1,
-      160,  -1,  -1,  -1,  -1,  -1, 161,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 162,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 163,  -1,  -1,  -1,
-      164,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 165,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 166,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 167,  -1,  -1,  -1,
-       -1,  -1,  -1, 168,  -1,  -1,  -1,  -1,  -1, 169,
-       -1,  -1,  -1,  -1,  -1, 170,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 171,  -1,  -1, 172,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      173,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 174,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 175,  -1,  -1,  -1,  -1,
-      176,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 177,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 178,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 179,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 180
+        -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
+        -1,    1,   -1,   -1,   -1,   -1,    2,   -1,
+        -1,    3,   -1,    4,    5,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,    6,   -1,    7,
+         8,   -1,    9,   10,   -1,   -1,   -1,   11,
+        -1,   -1,   12,   -1,   -1,   -1,   13,   14,
+        -1,   15,   -1,   -1,   -1,   16,   -1,   17,
+        18,   -1,   -1,   19,   -1,   20,   -1,   21,
+        22,   23,   -1,   -1,   -1,   -1,   -1,   24,
+        25,   -1,   -1,   -1,   -1,   -1,   26,   -1,
+        27,   -1,   28,   -1,   -1,   29,   -1,   30,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   31,   -1,   -1,   -1,   -1,   -1,
+        -1,   32,   -1,   -1,   -1,   33,   -1,   34,
+        -1,   -1,   -1,   35,   -1,   -1,   -1,   36,
+        37,   -1,   -1,   -1,   38,   -1,   -1,   39,
+        -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   41,   42,   -1,   -1,
+        -1,   43,   -1,   44,   -1,   -1,   45,   46,
+        -1,   47,   48,   49,   -1,   -1,   50,   -1,
+        -1,   -1,   -1,   -1,   51,   -1,   -1,   -1,
+        -1,   52,   -1,   -1,   -1,   -1,   53,   -1,
+        -1,   54,   55,   -1,   -1,   56,   -1,   -1,
+        -1,   57,   58,   59,   -1,   -1,   -1,   -1,
+        -1,   -1,   60,   -1,   61,   62,   -1,   -1,
+        -1,   -1,   -1,   63,   -1,   64,   -1,   65,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   66, -411, -114,   -2,   -1,
+        -1,   69,   -1,   -1,   -1,   -1,   70,   71,
+        -1,   -1,   -1,   -1,   -1,   72,   -1,   73,
+        74,   -1,   75,   76,   -1,   -1,   -1,   77,
+        78,   -1,   -1,   79,   80,   81,   82,   83,
+        84,   85,   86,   -1,   87,   -1,   -1,   -1,
+        88,   89,   -1,   -1,   -1,   -1,   90,   91,
+        -1,   92,   -1,   -1,   93,   -1,   94,   -1,
+        -1,   -1,   95,   -1,   96,   -1,   -1,   -1,
+        -1,   -1,   97,   -1,   98,   -1,   -1,   -1,
+        -1,   -1,   99,   -1,  100,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       101,   -1,   -1,   -1,   -1,   -1,   -1,  102,
+        -1,   -1,   -1,   -1,   -1,  103,   -1,   -1,
+        -1,  104,  105,  106,  107,   -1,   -1,  108,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  109,
+        -1,   -1,  110,   -1,   -1,   -1,   -1,  111,
+        -1,   -1,   -1,  112,   -1,   -1,   -1,  113,
+       114,   -1,   -1,   -1,  115,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  116,   -1,
+       117,  118,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  119,  120,   -1,   -1,   -1,  121,
+       122,   -1,  123,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  124,  125,   -1,   -1,  126,  127,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  128,   -1,  129,   -1,   -1,  130,
+       131,  132,   -1,  133,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  134,   -1,   -1,  135,   -1,  136,
+       137,  138,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  139,   -1,   -1,   -1,   -1,  140,  141,
+        -1,   -1,   -1,   -1,   -1,  142,  143,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       144,  145,   -1,  146,   -1,   -1,   -1,  147,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  148,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  149,  150,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  151,   -1,   -1,   -1,   -1,  152,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  153,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  154,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  155,  156,  157,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  158,   -1,   -1,   -1,  159,   -1,
+       160,  161,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  162,   -1,   -1,   -1,
+        -1,   -1,   -1,  163,  164,   -1,   -1,   -1,
+       165,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  166,   -1,   -1,
+       167,   -1,   -1,   -1,  168,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  169,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  170,   -1,   -1,
+        -1,   -1,  171,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  172,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  173,  174,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  175,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  176,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  177,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  178,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  179,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  180
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -604,12 +481,25 @@ findAttr (register const char *str, register unsigned int len)
               if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
                 return &wordlist_attr[index];
             }
+          else if (index < -TOTAL_KEYWORDS)
+            {
+              register int offset = - 1 - TOTAL_KEYWORDS - index;
+              register const struct attrs *wordptr = &wordlist_attr[TOTAL_KEYWORDS + lookup[offset]];
+              register const struct attrs *wordendptr = wordptr + -lookup[offset + 1];
+
+              while (wordptr < wordendptr)
+                {
+                  register const char *s = wordptr->name;
+
+                  if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+                    return wordptr;
+                  wordptr++;
+                }
+            }
         }
     }
   return 0;
 }
-#line 193 "htmlattrs.gperf"
-
 
 
 static const char * const attrList[] = {
index e7b6ff1bf7322789cd5c5944c7869546ff3dd9d0..175e79881ac5fc178b4c100cabc15f17332a5ba3 100644 (file)
@@ -1,44 +1,13 @@
-/* ANSI-C code produced by gperf version 3.0.1 */
+/* ANSI-C code produced by gperf version 2.7.2 */
 /* Command-line: gperf -a -L ANSI-C -D -E -C -l -o -t -k '*' -NfindTag -Hhash_tag -Wwordlist_tag htmltags.gperf  */
-
-#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-/* The character set is not based on ISO-646.  */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
-#endif
-
-#line 1 "htmltags.gperf"
-
 /* This file is automatically generated from htmltags.in by maketags, do not edit */
 /* Copyright 1999 Lars Knoll */
 #include "htmltags.h"
-#line 6 "htmltags.gperf"
 struct tags {
     const char *name;
     int id;
 };
-/* maximum key range = 365, duplicates = 0 */
+/* maximum key range = 305, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -52,64 +21,56 @@ hash_tag (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-       60,  55,  50,  45,  40,   5, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366,  15,  10,  35,
-       10,   5,  10,  10,  50,  40, 115,  30,   5,  15,
-       30,  55,   5,  85,  20,   0,   0,  65,  55,  35,
-       95,  70, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
-      366, 366, 366, 366, 366, 366, 366
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306,  30,
+       35,  40,  15,  25,  10, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306,   0,   5,  30,
+       35,   0, 105,   5,  47,  10,   0,  25,  45,  30,
+       15,   0, 100,  25,   5,  30,   0,  87,  90,   0,
+       20, 115, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
+      306, 306, 306, 306, 306, 306
     };
   register int hval = len;
 
   switch (hval)
     {
       default:
+      case 10:
         hval += asso_values[(unsigned char)str[9]];
-      /*FALLTHROUGH*/
       case 9:
         hval += asso_values[(unsigned char)str[8]];
-      /*FALLTHROUGH*/
       case 8:
         hval += asso_values[(unsigned char)str[7]];
-      /*FALLTHROUGH*/
       case 7:
         hval += asso_values[(unsigned char)str[6]];
-      /*FALLTHROUGH*/
       case 6:
         hval += asso_values[(unsigned char)str[5]];
-      /*FALLTHROUGH*/
       case 5:
         hval += asso_values[(unsigned char)str[4]];
-      /*FALLTHROUGH*/
       case 4:
         hval += asso_values[(unsigned char)str[3]];
-      /*FALLTHROUGH*/
       case 3:
         hval += asso_values[(unsigned char)str[2]];
-      /*FALLTHROUGH*/
       case 2:
-        hval += asso_values[(unsigned char)str[1]+1];
-      /*FALLTHROUGH*/
+        hval += asso_values[(unsigned char)str[1]];
       case 1:
         hval += asso_values[(unsigned char)str[0]];
         break;
@@ -129,273 +90,170 @@ findTag (register const char *str, register unsigned int len)
       MIN_WORD_LENGTH = 1,
       MAX_WORD_LENGTH = 10,
       MIN_HASH_VALUE = 1,
-      MAX_HASH_VALUE = 365
+      MAX_HASH_VALUE = 305
     };
 
   static const unsigned char lengthtable[] =
     {
-       1,  2,  1,  2,  1,  2,  3,  1,  2,  2,  3,  4,  3,  4,
-       5,  2,  4,  5,  1,  2,  4,  3,  4,  5,  2,  3,  4,  2,
-       8,  4,  5,  6,  7,  3,  5,  1,  2,  3,  4,  5,  2,  3,
-       5,  6,  2,  3,  6,  2,  3,  4,  1,  7,  3,  4,  2,  3,
-       2,  3,  4,  2,  5,  6,  2,  8,  6,  2,  5,  6,  2,  4,
-       5,  8,  5,  3,  4,  3,  4,  8,  3,  5,  6,  6,  7,  8,
-       4,  6,  6,  8,  5,  5,  7,  3,  4,  6,  7,  8,  7,  9,
-       7,  7,  6,  6,  6,  8, 10
+       1,  2,  1,  2,  4,  1,  2,  3,  4,  3,  1,  4,  1,  2,
+       8,  4,  2,  2,  4,  6,  3,  4,  2,  3,  2,  5,  3,  2,
+       5,  6,  2,  3,  2,  5,  6,  2,  3,  4,  2,  2,  5,  6,
+       3,  2,  2,  3,  2,  4,  5,  1,  2,  7,  3,  4,  5,  1,
+       6,  6,  3,  5,  6,  6,  7,  4,  3,  4,  7,  6,  3,  2,
+       4,  3,  5,  7,  4,  5,  4,  3,  7,  5,  6,  3,  4,  5,
+       7,  8,  4,  6,  5,  6,  8,  6,  7,  8,  5,  8,  9,  7,
+       5,  3, 10,  8,  6,  8,  8
     };
   static const struct tags wordlist_tag[] =
     {
-#line 87 "htmltags.gperf"
-      {"s", ID_S},
-#line 106 "htmltags.gperf"
-      {"tr", ID_TR},
-#line 82 "htmltags.gperf"
-      {"p", ID_P},
-#line 100 "htmltags.gperf"
-      {"td", ID_TD},
-#line 17 "htmltags.gperf"
-      {"b", ID_B},
-#line 24 "htmltags.gperf"
-      {"br", ID_BR},
-#line 85 "htmltags.gperf"
-      {"pre", ID_PRE},
-#line 11 "htmltags.gperf"
       {"a", ID_A},
-#line 33 "htmltags.gperf"
-      {"dd", ID_DD},
-#line 38 "htmltags.gperf"
-      {"dl", ID_DL},
-#line 34 "htmltags.gperf"
-      {"del", ID_DEL},
-#line 18 "htmltags.gperf"
-      {"base", ID_BASE},
-#line 69 "htmltags.gperf"
-      {"map", ID_MAP},
-#line 88 "htmltags.gperf"
-      {"samp", ID_SAMP},
-#line 98 "htmltags.gperf"
-      {"table", ID_TABLE},
-#line 40 "htmltags.gperf"
-      {"em", ID_EM},
-#line 16 "htmltags.gperf"
+      {"tt", ID_TT},
+      {"b", ID_B},
+      {"tr", ID_TR},
       {"area", ID_AREA},
-#line 64 "htmltags.gperf"
-      {"label", ID_LABEL},
-#line 56 "htmltags.gperf"
       {"i", ID_I},
-#line 103 "htmltags.gperf"
-      {"th", ID_TH},
-#line 72 "htmltags.gperf"
+      {"br", ID_BR},
+      {"wbr", ID_WBR},
+      {"abbr", ID_ABBR},
+      {"big", ID_BIG},
+      {"q", ID_Q},
+      {"nobr", ID_NOBR},
+      {"s", ID_S},
+      {"em", ID_EM},
+      {"textarea", ID_TEXTAREA},
       {"meta", ID_META},
-#line 31 "htmltags.gperf"
-      {"col", ID_COL},
-#line 43 "htmltags.gperf"
-      {"font", ID_FONT},
-#line 45 "htmltags.gperf"
-      {"frame", ID_FRAME},
-#line 54 "htmltags.gperf"
+      {"dt", ID_DT},
+      {"td", ID_TD},
+      {"base", ID_BASE},
+      {"object", ID_OBJECT},
+      {"bdo", ID_BDO},
+      {"cite", ID_CITE},
+      {"ol", ID_OL},
+      {"img", ID_IMG},
+      {"th", ID_TH},
+      {"image", ID_IMG},
+      {"dir", ID_DIR},
       {"hr", ID_HR},
-#line 35 "htmltags.gperf"
-      {"dfn", ID_DFN},
-#line 44 "htmltags.gperf"
-      {"form", ID_FORM},
-#line 52 "htmltags.gperf"
+      {"table", ID_TABLE},
+      {"center", ID_CENTER},
+      {"li", ID_LI},
+      {"ins", ID_INS},
       {"h6", ID_H6},
-#line 46 "htmltags.gperf"
-      {"frameset", ID_FRAMESET},
-#line 30 "htmltags.gperf"
+      {"title", ID_TITLE},
+      {"strong", ID_STRONG},
+      {"h4", ID_H4},
+      {"kbd", ID_KBD},
       {"code", ID_CODE},
-#line 91 "htmltags.gperf"
-      {"small", ID_SMALL},
-#line 90 "htmltags.gperf"
-      {"select", ID_SELECT},
-#line 14 "htmltags.gperf"
-      {"address", ID_ADDRESS},
-#line 97 "htmltags.gperf"
-      {"sup", ID_SUP},
-#line 41 "htmltags.gperf"
+      {"dd", ID_DD},
+      {"h5", ID_H5},
       {"embed", ID_EMBED},
-#line 108 "htmltags.gperf"
-      {"u", ID_U},
-#line 107 "htmltags.gperf"
-      {"tt", ID_TT},
-#line 96 "htmltags.gperf"
-      {"sub", ID_SUB},
-#line 73 "htmltags.gperf"
-      {"nobr", ID_NOBR},
-#line 83 "htmltags.gperf"
-      {"param", ID_PARAM},
-#line 79 "htmltags.gperf"
-      {"ol", ID_OL},
-#line 20 "htmltags.gperf"
-      {"bdo", ID_BDO},
-#line 104 "htmltags.gperf"
+      {"strike", ID_STRIKE},
+      {"col", ID_COL},
+      {"h1", ID_H1},
+      {"dl", ID_DL},
+      {"del", ID_DEL},
+      {"h2", ID_H2},
+      {"head", ID_HEAD},
       {"thead", ID_THEAD},
-#line 66 "htmltags.gperf"
-      {"legend", ID_LEGEND},
-#line 39 "htmltags.gperf"
-      {"dt", ID_DT},
-#line 62 "htmltags.gperf"
-      {"kbd", ID_KBD},
-#line 89 "htmltags.gperf"
-      {"script", ID_SCRIPT},
-#line 109 "htmltags.gperf"
-      {"ul", ID_UL},
-#line 58 "htmltags.gperf"
-      {"img", ID_IMG},
-#line 12 "htmltags.gperf"
-      {"abbr", ID_ABBR},
-#line 86 "htmltags.gperf"
-      {"q", ID_Q},
-#line 74 "htmltags.gperf"
+      {"u", ID_U},
+      {"h3", ID_H3},
       {"noembed", ID_NOEMBED},
-#line 110 "htmltags.gperf"
       {"var", ID_VAR},
-#line 53 "htmltags.gperf"
-      {"head", ID_HEAD},
-#line 51 "htmltags.gperf"
-      {"h5", ID_H5},
-#line 111 "htmltags.gperf"
-      {"wbr", ID_WBR},
-#line 50 "htmltags.gperf"
-      {"h4", ID_H4},
-#line 60 "htmltags.gperf"
-      {"ins", ID_INS},
-#line 23 "htmltags.gperf"
-      {"body", ID_BODY},
-#line 49 "htmltags.gperf"
-      {"h3", ID_H3},
-#line 114 "htmltags.gperf"
-      {"image", ID_IMG},
-#line 28 "htmltags.gperf"
-      {"center", ID_CENTER},
-#line 48 "htmltags.gperf"
-      {"h2", ID_H2},
-#line 75 "htmltags.gperf"
-      {"noframes", ID_NOFRAMES},
-#line 57 "htmltags.gperf"
-      {"iframe", ID_IFRAME},
-#line 47 "htmltags.gperf"
-      {"h1", ID_H1},
-#line 65 "htmltags.gperf"
-      {"layer", ID_LAYER},
-#line 15 "htmltags.gperf"
-      {"applet", ID_APPLET},
-#line 67 "htmltags.gperf"
-      {"li", ID_LI},
-#line 71 "htmltags.gperf"
-      {"menu", ID_MENU},
-#line 102 "htmltags.gperf"
+      {"link", ID_LINK},
+      {"label", ID_LABEL},
+      {"p", ID_P},
+      {"anchor", ID_A},
+      {"legend", ID_LEGEND},
+      {"pre", ID_PRE},
       {"tfoot", ID_TFOOT},
-#line 19 "htmltags.gperf"
-      {"basefont", ID_BASEFONT},
-#line 105 "htmltags.gperf"
-      {"title", ID_TITLE},
-#line 112 "htmltags.gperf"
-      {"xmp", ID_XMP},
-#line 92 "htmltags.gperf"
-      {"span", ID_SPAN},
-#line 21 "htmltags.gperf"
-      {"big", ID_BIG},
-#line 55 "htmltags.gperf"
-      {"html", ID_HTML},
-#line 76 "htmltags.gperf"
-      {"noscript", ID_NOSCRIPT},
-#line 36 "htmltags.gperf"
-      {"dir", ID_DIR},
-#line 95 "htmltags.gperf"
-      {"style", ID_STYLE},
-#line 26 "htmltags.gperf"
-      {"canvas", ID_CANVAS},
-#line 25 "htmltags.gperf"
+      {"select", ID_SELECT},
       {"button", ID_BUTTON},
-#line 77 "htmltags.gperf"
-      {"nolayer", ID_NOLAYER},
-#line 42 "htmltags.gperf"
-      {"fieldset", ID_FIELDSET},
-#line 29 "htmltags.gperf"
-      {"cite", ID_CITE},
-#line 63 "htmltags.gperf"
-      {"keygen", ID_KEYGEN},
-#line 93 "htmltags.gperf"
-      {"strike", ID_STRIKE},
-#line 101 "htmltags.gperf"
-      {"textarea", ID_TEXTAREA},
-#line 59 "htmltags.gperf"
-      {"input", ID_INPUT},
-#line 99 "htmltags.gperf"
-      {"tbody", ID_TBODY},
-#line 27 "htmltags.gperf"
-      {"caption", ID_CAPTION},
-#line 37 "htmltags.gperf"
-      {"div", ID_DIV},
-#line 68 "htmltags.gperf"
-      {"link", ID_LINK},
-#line 94 "htmltags.gperf"
-      {"strong", ID_STRONG},
-#line 115 "htmltags.gperf"
       {"listing", ID_PRE},
-#line 32 "htmltags.gperf"
-      {"colgroup", ID_COLGROUP},
-#line 70 "htmltags.gperf"
+      {"font", ID_FONT},
+      {"sub", ID_SUB},
+      {"html", ID_HTML},
+      {"isindex", ID_ISINDEX},
+      {"option", ID_OPTION},
+      {"map", ID_MAP},
+      {"ul", ID_UL},
+      {"menu", ID_MENU},
+      {"div", ID_DIV},
+      {"param", ID_PARAM},
+      {"address", ID_ADDRESS},
+      {"form", ID_FORM},
+      {"frame", ID_FRAME},
+      {"span", ID_SPAN},
+      {"xmp", ID_XMP},
       {"marquee", ID_MARQUEE},
-#line 84 "htmltags.gperf"
+      {"small", ID_SMALL},
+      {"iframe", ID_IFRAME},
+      {"dfn", ID_DFN},
+      {"body", ID_BODY},
+      {"tbody", ID_TBODY},
+      {"caption", ID_CAPTION},
+      {"basefont", ID_BASEFONT},
+      {"samp", ID_SAMP},
+      {"keygen", ID_KEYGEN},
+      {"layer", ID_LAYER},
+      {"canvas", ID_CANVAS},
+      {"frameset", ID_FRAMESET},
+      {"script", ID_SCRIPT},
+      {"nolayer", ID_NOLAYER},
+      {"noframes", ID_NOFRAMES},
+      {"style", ID_STYLE},
+      {"noscript", ID_NOSCRIPT},
       {"plaintext", ID_PLAINTEXT},
-#line 13 "htmltags.gperf"
       {"acronym", ID_ACRONYM},
-#line 61 "htmltags.gperf"
-      {"isindex", ID_ISINDEX},
-#line 113 "htmltags.gperf"
-      {"anchor", ID_A},
-#line 78 "htmltags.gperf"
-      {"object", ID_OBJECT},
-#line 81 "htmltags.gperf"
-      {"option", ID_OPTION},
-#line 80 "htmltags.gperf"
-      {"optgroup", ID_OPTGROUP},
-#line 22 "htmltags.gperf"
-      {"blockquote", ID_BLOCKQUOTE}
+      {"input", ID_INPUT},
+      {"sup", ID_SUP},
+      {"blockquote", ID_BLOCKQUOTE},
+      {"fieldset", ID_FIELDSET},
+      {"applet", ID_APPLET},
+      {"colgroup", ID_COLGROUP},
+      {"optgroup", ID_OPTGROUP}
     };
 
-  static const signed char lookup[] =
+  static const short lookup[] =
     {
-       -1,   0,   1,  -1,  -1,  -1,   2,   3,  -1,  -1,
-       -1,   4,   5,   6,  -1,  -1,   7,   8,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,   9,  10,  11,
-       -1,  -1,  -1,  12,  13,  14,  -1,  15,  -1,  16,
-       17,  18,  19,  -1,  20,  -1,  -1,  -1,  21,  22,
-       23,  -1,  24,  25,  26,  -1,  -1,  27,  28,  29,
-       30,  31,  32,  33,  -1,  34,  35,  36,  37,  38,
-       39,  -1,  40,  41,  -1,  42,  43,  44,  45,  -1,
-       -1,  46,  47,  48,  49,  -1,  50,  51,  52,  53,
-       -1,  -1,  54,  55,  -1,  -1,  -1,  56,  57,  58,
-       -1,  -1,  59,  -1,  -1,  60,  61,  62,  63,  -1,
-       -1,  64,  65,  -1,  -1,  66,  -1,  -1,  -1,  -1,
-       -1,  67,  68,  -1,  69,  70,  -1,  -1,  71,  -1,
-       72,  -1,  -1,  73,  74,  -1,  -1,  -1,  75,  76,
-       -1,  -1,  -1,  77,  -1,  -1,  -1,  -1,  78,  -1,
-       79,  80,  -1,  -1,  -1,  -1,  81,  82,  83,  84,
-       -1,  85,  -1,  -1,  -1,  -1,  86,  -1,  87,  -1,
-       88,  -1,  -1,  -1,  -1,  89,  -1,  -1,  -1,  -1,
-       -1,  -1,  90,  91,  92,  -1,  93,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  94,  95,  -1,
-       -1,  -1,  96,  -1,  97,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  98,  -1,  -1,  -1,  -1,  99,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 100,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 101,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 102,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 103,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 104
+        -1,    0,    1,   -1,   -1,   -1,    2,    3,
+        -1,    4,   -1,    5,    6,    7,   -1,   -1,
+        -1,   -1,   -1,    8,   -1,   -1,   -1,    9,
+        -1,   -1,   10,   -1,   -1,   11,   -1,   12,
+        13,   14,   15,   -1,   -1, -151,   -1,   18,
+        -1,   19,   -1,   20,   21,  -89,   -2,   22,
+        23,   24,   25,   -1,   -1,   26,   27,   28,
+        29,   30,   31,   32,   33,   34,   -1,   -1,
+        35,   -1,   -1,   -1,   36,   37,   -1,   -1,
+        38,   -1,   39,   40,   41,   -1,   42,   43,
+        -1,   -1,   44,   45,   46,   -1,   47,   48,
+        49,   50,   -1,   -1,   51,   -1,   -1,   -1,
+        -1,   -1,   52,   53,   54,   55,   -1,   56,
+        -1,   -1,   57,   -1,   58,   -1,   59,   60,
+        -1,   61,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   62,   -1,   63,   64,   65,   66,
+        -1,   -1,   -1,   67,   -1,   68,   69,   -1,
+        70,   -1,   71,   -1,   72,   -1,   73,   -1,
+        74,   75,   -1,   -1,   -1,   76,   -1,   -1,
+        -1,   77,   78,   79,   80,   -1,   81,   82,
+        83,   -1,   84,   85,   86,   -1,   87,   -1,
+        -1,   -1,   88,   89,   -1,   -1,   -1,   -1,
+        -1,   -1,   90,   -1,   -1,   91,   -1,   -1,
+        -1,   -1,   -1,   92,   -1,   -1,   -1,   -1,
+        -1,   93,   -1,   94,   -1,   -1,   95,   96,
+        -1,   -1,   97,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   98,   -1,   -1,   99,   -1,   -1,   -1,
+        -1,   -1,   -1,  100,   -1,   -1,   -1,   -1,
+        -1,  101,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  102,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       103,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  104
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -416,12 +274,30 @@ findTag (register const char *str, register unsigned int len)
                     return &wordlist_tag[index];
                 }
             }
+          else if (index < -TOTAL_KEYWORDS)
+            {
+              register int offset = - 1 - TOTAL_KEYWORDS - index;
+              register const unsigned char *lengthptr = &lengthtable[TOTAL_KEYWORDS + lookup[offset]];
+              register const struct tags *wordptr = &wordlist_tag[TOTAL_KEYWORDS + lookup[offset]];
+              register const struct tags *wordendptr = wordptr + -lookup[offset + 1];
+
+              while (wordptr < wordendptr)
+                {
+                  if (len == *lengthptr)
+                    {
+                      register const char *s = wordptr->name;
+
+                      if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
+                        return wordptr;
+                    }
+                  lengthptr++;
+                  wordptr++;
+                }
+            }
         }
     }
   return 0;
 }
-#line 116 "htmltags.gperf"
-
 
 
 static const char * const tagList[] = {
index 12cf02f633dbbfb21a7904204778124e22fa18ec..531c4a63eea4fc3355dbc197c28d6a75c3c6ef96 100644 (file)
@@ -2350,8 +2350,12 @@ int RenderBlock::getClearDelta(RenderObject *child)
     }
 
     // We also clear floats if we are too big to sit on the same line as a float (and wish to avoid floats by default).
+    // FIXME: Note that the remaining space checks aren't quite accurate, since you should be able to clear only some floats (the minimum # needed
+    // to fit) and not all (we should be using nearestFloatBottom and looping).
     int result = clearSet ? kMax(0, bottom - child->yPos()) : 0;
-    if (!result && child->avoidsFloats() && child->style()->width().isFixed() && child->minWidth() > lineWidth(child->yPos()))
+    if (!result && child->avoidsFloats() && child->style()->width().isFixed() && 
+        child->minWidth() > lineWidth(child->yPos()) && child->minWidth() <= contentWidth() &&
+        (!style()->htmlHacks() || !child->isTable())) // Do not allow tables to wrap in quirks mode (ebay on the PLT, finance.yahoo.com in the real world)
         result = kMax(0, floatBottom() - child->yPos());
     return result;
 }