diff -urN F:\FGCVS\tidy\build\msvc\tidy.dsp tidycvs6\build\msvc\tidy.dsp
--- F:\FGCVS\tidy\build\msvc\tidy.dsp Thu Apr 17 17:48:03 2003
+++ tidycvs6\build\msvc\tidy.dsp Mon Sep 25 19:58:44 2006
@@ -42,7 +42,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D TIDYDLL_EXPORT=__declspec(dllimport) /YX /FD /c
+# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D TIDYDLL_EXPORT=__declspec(dllimport) /D "TIDY_STORE_ORIGINAL_TEXT" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -66,7 +66,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D TIDYDLL_EXPORT=__declspec(dllimport) /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D TIDYDLL_EXPORT=__declspec(dllimport) /D "TIDY_STORE_ORIGINAL_TEXT" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
diff -urN F:\FGCVS\tidy\build\msvc\tidydll.dsp tidycvs6\build\msvc\tidydll.dsp
--- F:\FGCVS\tidy\build\msvc\tidydll.dsp Tue Sep 19 15:45:44 2006
+++ tidycvs6\build\msvc\tidydll.dsp Mon Sep 25 19:58:44 2006
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIDYDLL_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIDYDLL_EXPORTS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIDYDLL_EXPORTS" /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1 /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D "TIDY_STORE_ORIGINAL_TEXT" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -137,6 +137,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\src\iso639.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\istack.c
# End Source File
# Begin Source File
@@ -183,7 +187,7 @@
SOURCE=..\..\src\utf8.c
# End Source File
-# End Group
+# Begin Source File
SOURCE=..\..\src\win32tc.c
# End Source File
diff -urN F:\FGCVS\tidy\build\msvc\tidylib.dsp tidycvs6\build\msvc\tidylib.dsp
--- F:\FGCVS\tidy\build\msvc\tidylib.dsp Tue Sep 19 15:45:44 2006
+++ tidycvs6\build\msvc\tidylib.dsp Mon Sep 25 19:58:44 2006
@@ -41,7 +41,7 @@
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W4 /GX /O2 /I "../../include" /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "SUPPORT_UTF16_ENCODINGS" /D "SUPPORT_ASIAN_ENCODINGS" /D "SUPPORT_ACCESSIBILITY_CHECKS" /FD /c
+# ADD CPP /nologo /MT /W4 /GX /O2 /I "../../include" /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "SUPPORT_UTF16_ENCODINGS" /D "SUPPORT_ASIAN_ENCODINGS" /D "SUPPORT_ACCESSIBILITY_CHECKS" /D "TIDY_STORE_ORIGINAL_TEXT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -65,7 +65,7 @@
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /Za /W4 /Gm /ZI /Od /I "../../include" /D "_DEBUG" /D "_WIN32" /D "_LIB" /D "WIN32" /D "_MBCS" /D "SUPPORT_UTF16_ENCODINGS" /D "SUPPORT_ASIAN_ENCODINGS" /D "SUPPORT_ACCESSIBILITY_CHECKS" /U "WINDOWS" /FD /GZ /c
+# ADD CPP /nologo /MTd /Za /W4 /Gm /ZI /Od /I "../../include" /D "_DEBUG" /D "_WIN32" /D "_LIB" /D "WIN32" /D "_MBCS" /D "SUPPORT_UTF16_ENCODINGS" /D "SUPPORT_ASIAN_ENCODINGS" /D "SUPPORT_ACCESSIBILITY_CHECKS" /D "TIDY_STORE_ORIGINAL_TEXT" /U "WINDOWS" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -131,6 +131,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\src\iso639.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\istack.c
# End Source File
# Begin Source File
@@ -142,7 +146,7 @@
SOURCE=..\..\src\localize.c
# End Source File
# Begin Source File
-
+
SOURCE=..\..\src\mappedio.c
!IF "$(CFG)" == "tidylib - Win32 Release"
@@ -173,6 +177,19 @@
# Begin Source File
SOURCE=..\..\src\tags.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\tidydebug.c
+
+!IF "$(CFG)" == "tidylib - Win32 Release"
+
+!ELSEIF "$(CFG)" == "tidylib - Win32 Debug"
+
+# ADD CPP /Ze
+
+!ENDIF
+
# End Source File
# Begin Source File
diff -urN F:\FGCVS\tidy\console\tidy.c tidycvs6\console\tidy.c
--- F:\FGCVS\tidy\console\tidy.c Tue Feb 14 12:09:21 2006
+++ tidycvs6\console\tidy.c Sun Sep 24 13:24:47 2006
@@ -1271,9 +1271,11 @@
errout == stderr && !contentErrors)
fprintf(errout, "\n");
- if (contentErrors + contentWarnings > 0 &&
- !tidyOptGetBool(tdoc, TidyQuiet))
- tidyErrorSummary(tdoc);
+ if ( !tidyOptGetBool(tdoc, TidyQuiet) &&
+ (contentErrors + contentWarnings + accessWarnings > 0) )
+ {
+ tidyErrorSummary(tdoc);
+ }
if (!tidyOptGetBool(tdoc, TidyQuiet))
tidyGeneralInfo(tdoc);
diff -urN F:\FGCVS\tidy\src\access.c tidycvs6\src\access.c
--- F:\FGCVS\tidy\src\access.c Sat Sep 16 11:39:23 2006
+++ tidycvs6\src\access.c Mon Sep 25 19:50:46 2006
@@ -43,7 +43,6 @@
#include "attrs.h"
#include "tmbstr.h"
-
/*
The accessibility checks to perform depending on user's desire.
@@ -157,6 +156,61 @@
static void CheckEmbed( TidyDocImpl* doc, Node* node );
static void CheckListUsage( TidyDocImpl* doc, Node* node );
+#ifdef TIDY_STORE_ORIGINAL_TEXT
+/*****************************************************
+* OriginalIsWhite
+*
+* See if the ORIGINAL text was ALL WHITE
+*****************************************************/
+uint OriginalIsWhite( TidyDocImpl* doc, Node* node, tmbstr srch )
+{
+ uint iswhite = no;
+ uint ulen = TY_(tmbstrlen)(srch);
+ tmbstr fnd = NULL;
+ if (node && node->otext && ulen)
+ {
+ tmbstr item = node->otext;
+ /* fnd = strstr(item, srch); */
+ if ( !fnd )
+ {
+ while( *item && (TY_(tmbstrlen)(item) > ulen) )
+ {
+ if ( TY_(tmbstrncasecmp)( item, srch, ulen ) == 0 )
+ {
+ fnd = item;
+ break;
+ }
+ item++;
+ }
+ }
+ if ( fnd )
+ {
+ fnd += TY_(tmbstrlen)(srch);
+ if ((*fnd == '"')||(*fnd == '\''))
+ {
+ tmbchar chr = *fnd; /* extract the character */
+ fnd++; /* proceed until the end, checking */
+ ulen = 0; /* start counter of white */
+ while ( *fnd && (*fnd != chr) &&
+ TY_(IsWhite)( *fnd ))
+ {
+ fnd++;
+ ulen++;
+ }
+ if (ulen && ( *fnd == chr ) )
+ iswhite = yes; /* all white space */
+ }
+ else
+ {
+ /* what to do if NO quote, or double quote delimiter? */
+ }
+ }
+ }
+ return iswhite;
+}
+
+#endif /* #ifdef TIDY_STORE_ORIGINAL_TEXT */
+
/*
GetFileExtension takes a path and returns the extension
portion of the path (if any).
@@ -682,6 +736,8 @@
Bool HasValidWidthBullet = no;
Bool HasValidWidthHR = no;
Bool HasTriggeredMissingLongDesc = no;
+ int width = 0;
+ int height = 0;
AttVal* av;
@@ -746,7 +802,7 @@
/* Longdesc attribute needed if width attribute is not present. */
if ( hasValue(av) )
{
- int width = atoi( av->value );
+ width = atoi( av->value );
if ( width < 30 )
HasValidWidthBullet = yes;
@@ -765,8 +821,12 @@
else if ( attrIsHEIGHT(av) )
{
/* Longdesc attribute needed if height attribute not present. */
- if ( hasValue(av) && atoi(av->value) < 30 )
- HasValidHeight = yes;
+ if ( hasValue(av) )
+ {
+ height = atoi(av->value);
+ if ( height < 30 )
+ HasValidHeight = yes;
+ }
}
/*
@@ -860,12 +920,14 @@
(HasValidWidthBullet == yes)&&
(HasValidHeight == yes))
{
+ TY_(ReportAccessError)( doc, node, IMG_MISSING_ALT_BULLET);
}
if ((HasAlt == no)&&
(HasValidWidthHR == yes)&&
(HasValidHeight == yes))
{
+ TY_(ReportAccessError)( doc, node, IMG_MISSING_ALT_H_RULE);
}
if (HasAlt == no)
@@ -1277,15 +1339,19 @@
if ((word != NULL)&&
(IsWhitespace (word) == no))
{
- if (TY_(tmbstrcmp) (word, "more") == 0)
+ if (TY_(tmbstrcasecmp) (word, "more") == 0)
{
HasTriggeredLink = yes;
- }
-
- if (TY_(tmbstrcmp) (word, "click here") == 0)
+ TY_(ReportAccessWarning)( doc, node, LINK_TEXT_NOT_MEANINGFUL_MORE);
+ }
+ else if (TY_(tmbstrcasecmp) (word, "click here") == 0)
{
TY_(ReportAccessWarning)( doc, node, LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE);
}
+ else if (TY_(tmbstrcasecmp) (word, "follow this") == 0)
+ {
+ TY_(ReportAccessWarning)( doc, node, LINK_TEXT_NOT_MEANINGFUL_FOLLOW_THIS);
+ }
if (HasTriggeredLink == no)
{
@@ -1430,6 +1496,17 @@
numValidTH++;
}
}
+ else if ( node->content && nodeIsTH( node->content ) )
+ {
+ Node * tmp = node->content;
+ doc->access.HasTH = yes;
+ if ( tmp->content && TY_(nodeIsText)(tmp->content) )
+ {
+ ctmbstr word = textFromOneNode( doc, tmp->content);
+ if ( !IsWhitespace(word) )
+ numValidTH++;
+ }
+ }
}
node = node->next;
@@ -1495,7 +1572,6 @@
doc->access.HasInvalidColumnHeader = yes;
}
-
/*****************************************************
* CheckTH
*
@@ -1528,7 +1604,18 @@
(TY_(tmbstrlen)(av->value) == 0))
{
HasAbbr = yes;
+#ifdef TIDY_STORE_ORIGINAL_TEXT
+ {
+ tmbstr srch = "abbr=";
+ uint iswhite = OriginalIsWhite( doc, node, srch );
+ if (iswhite)
+ TY_(ReportAccessWarning)( doc, node, TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES);
+ else
+ TY_(ReportAccessWarning)( doc, node, TABLE_MAY_REQUIRE_HEADER_ABBR_NULL);
+ }
+#else /* !#ifdef TIDY_STORE_ORIGINAL_TEXT */
TY_(ReportAccessWarning)( doc, node, TABLE_MAY_REQUIRE_HEADER_ABBR_NULL);
+#endif
}
if ((IsWhitespace (av->value) == yes)&&
@@ -1660,7 +1747,6 @@
}
}
-
/****************************************************
* CheckTable
*
@@ -1703,7 +1789,18 @@
if ( av->value == NULL || TY_(tmbstrlen)(av->value) == 0 )
{
HasSummary = yes;
+#ifdef TIDY_STORE_ORIGINAL_TEXT
+ {
+ tmbstr srch = "summary=";
+ uint iswhite = OriginalIsWhite( doc, node, srch );
+ if (iswhite)
+ TY_(ReportAccessError)( doc, node, TABLE_SUMMARY_INVALID_SPACES );
+ else
+ TY_(ReportAccessError)( doc, node, TABLE_SUMMARY_INVALID_NULL );
+ }
+#else /* !#ifdef TIDY_STORE_ORIGINAL_TEXT */
TY_(ReportAccessError)( doc, node, TABLE_SUMMARY_INVALID_NULL );
+#endif
}
else if ( IsWhitespace(av->value) && TY_(tmbstrlen)(av->value) > 0 )
{
@@ -2068,7 +2165,6 @@
}
}
-
/***************************************************************
* CheckInputAttributes
*
@@ -2080,6 +2176,8 @@
{
Bool HasAlt = no;
Bool MustHaveAlt = no;
+ Bool HasValue = no;
+ Bool WithValue = no;
AttVal* av;
/* Checks attributes within the INPUT element */
@@ -2102,6 +2200,15 @@
{
HasAlt = yes;
}
+
+ if ( attrIsVALUE(av) )
+ {
+ HasValue = yes;
+ if ( hasValue(av) )
+ {
+ WithValue = yes;
+ }
+ }
}
if ( MustHaveAlt && !HasAlt )
@@ -2109,6 +2216,30 @@
TY_(ReportAccessError)( doc, node, IMG_BUTTON_MISSING_ALT );
}
+ if (Level3_Enabled( doc ))
+ {
+ if ( HasValue )
+ {
+ if ( !WithValue )
+ {
+#ifdef TIDY_STORE_ORIGINAL_TEXT
+ /* now we can differentiate by checking the ORIGINAL */
+ tmbstr srch = "value=";
+ uint iswhite = OriginalIsWhite( doc, node, srch );
+ if (iswhite)
+ TY_(ReportAccessWarning)( doc, node, FORM_CONTROL_DEFAULT_TEXT_INVALID_SPACES);
+ else
+ TY_(ReportAccessWarning)( doc, node, FORM_CONTROL_DEFAULT_TEXT_INVALID_NULL);
+#else /* !#ifdef TIDY_STORE_ORIGINAL_TEXT */
+ TY_(ReportAccessError)( doc, node, FORM_CONTROL_DEFAULT_TEXT_INVALID_NULL );
+#endif /* #ifdef TIDY_STORE_ORIGINAL_TEXT */
+ }
+ }
+ else
+ {
+ TY_(ReportAccessError)( doc, node, FORM_CONTROL_REQUIRES_DEFAULT_TEXT );
+ }
+ }
}
@@ -2128,6 +2259,11 @@
if (Level1_Enabled( doc ))
{
+ if ( doc->badAccess & ACC_NOFRAMES_INVALID_LINK )
+ {
+ TY_(ReportAccessError)( doc, node, NOFRAMES_INVALID_LINK);
+ doc->badAccess &= ~(ACC_NOFRAMES_INVALID_LINK); /* emit only once */
+ }
if (node->content != NULL)
{
temp = node->content;
@@ -2863,6 +2999,9 @@
{
Node* DTnode = TY_(FindDocType)(doc);
+ if (DTnode && DTnode->implicit) /* this has been added by tidy, so */
+ DTnode = NULL; /* the document had NO doctype */
+
/* If the doctype has been added by tidy, DTnode->end will be 0. */
if (DTnode && DTnode->end != 0)
{
@@ -3000,8 +3139,11 @@
if ( msgcode )
{
- if ( !nodeIsLI(node->content) )
+ if ( !nodeIsLI(node->content) ) {
TY_(ReportAccessWarning)( doc, node, msgcode );
+ } else if ( node->implicit ) { /* if a tidy added node */
+ TY_(ReportAccessWarning)( doc, node, LIST_USAGE_INVALID_LI );
+ }
}
else if ( nodeIsLI(node) )
{
@@ -3013,10 +3155,90 @@
( !nodeIsOL(node->parent) && !nodeIsUL(node->parent) ) )
{
TY_(ReportAccessWarning)( doc, node, LIST_USAGE_INVALID_LI );
+ } else if ( node->implicit && node->parent &&
+ ( nodeIsOL(node->parent) || nodeIsUL(node->parent) ) ) {
+ /* if a tidy added LI node, then */
+ if ( nodeIsUL(node->parent) )
+ TY_(ReportAccessWarning)( doc, node, LIST_USAGE_INVALID_UL );
+ else
+ TY_(ReportAccessWarning)( doc, node, LIST_USAGE_INVALID_OL );
+
}
}
}
+typedef struct tagFORMORDER {
+ uint order;
+ uint ordlabel;
+ uint ordinput;
+ uint ordtext;
+} FORMORDER, * PFORMORDER;
+
+static void CheckFORMOrder(TidyDocImpl* doc, Node* node, PFORMORDER pfo)
+{
+ if ( pfo->ordlabel && pfo->ordinput && pfo->ordtext )
+ {
+ if ( (pfo->ordlabel < pfo->ordtext) && (pfo->ordtext < pfo->ordinput) )
+ {
+ /* some TEXT occurs between LABEL and INPUT */
+ TY_(ReportAccessError)( doc, node, LABEL_NEEDS_REPOSITIONING_BEFORE_INPUT );
+ pfo->ordtext = 0;
+ }
+ else if ( (pfo->ordinput < pfo->ordtext) && (pfo->ordtext < pfo->ordlabel) )
+ {
+ /* some TEXT occurs between INPUT and LABEL */
+ TY_(ReportAccessError)( doc, node, LABEL_NEEDS_REPOSITIONING_AFTER_INPUT );
+ pfo->ordtext = 0;
+ }
+ }
+}
+
+static void SetFORMOrder(TidyDocImpl* doc, Node* node, PFORMORDER pfo)
+{
+ if ( nodeIsLABEL(node) )
+ {
+ pfo->ordlabel = pfo->order;
+ }
+ else if ( nodeIsINPUT( node ) )
+ {
+ pfo->ordinput = pfo->order;
+ }
+ else if ( TY_(nodeIsText)(node) )
+ {
+ ctmbstr word = textFromOneNode( doc, node );
+ if ( word != NULL && !IsWhitespace(word) )
+ pfo->ordtext = pfo->order;
+ }
+}
+
+/******************************************************
+* CheckFORM
+*
+* Ensures that text is not between any label and input,
+* and not between input and label ...
+******************************************************/
+static void CheckFORM( TidyDocImpl* doc, Node* node )
+{
+ if (Level2_Enabled( doc ))
+ {
+ Node* child;
+ static FORMORDER _s_fo;
+ PFORMORDER pfo = &_s_fo;
+ pfo->order = 0;
+ pfo->ordlabel = 0;
+ pfo->ordinput = 0;
+ pfo->ordtext = 0;
+ /* check all children of FORM */
+ for ( child = node->content; child != NULL; child = child->next )
+ {
+ pfo->order++;
+ SetFORMOrder( doc, child, pfo );
+ CheckFORMOrder( doc, child, pfo );
+ }
+ }
+}
+
+
/************************************************************
* InitAccessibilityChecks
*
@@ -3263,6 +3485,12 @@
{
CheckListUsage( doc, node );
}
+ /* Check 'FORM' */
+ else if ( nodeIsFORM(node) )
+ {
+ CheckFORM( doc, node );
+ }
+
/* Recursively check all child nodes.
*/
@@ -3323,6 +3551,7 @@
/* Cleanup */
FreeAccessibilityChecks( doc );
}
+
#endif
diff -urN F:\FGCVS\tidy\src\iso639.c tidycvs6\src\iso639.c
--- F:\FGCVS\tidy\src\iso639.c Thu Jan 01 01:00:00 1970
+++ tidycvs6\src\iso639.c Mon Sep 25 19:50:34 2006
@@ -0,0 +1,85 @@
+
+/* iso639.c -- carry out language check
+
+ Copyright University of Toronto
+ Portions (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
+ See tidy.h for the copyright notice.
+
+*/
+
+#include "tidy-int.h"
+
+#if SUPPORT_ACCESSIBILITY_CHECKS
+
+#include "tmbstr.h"
+
+tmbstr ISO639_2[] = {
+"aar", "abk", "ace", "ach", "ada", "ady", "afa", "afh", "afr", "ain", "aka",
+"akk", "alb", "ale", "alg", "alt", "amh", "ang", "anp", "apa", "ara", "arc",
+"arg", "arm", "arn", "arp", "art", "arw", "asm", "ast", "ath", "aus", "ava",
+"ave", "awa", "aym", "aze", "bad", "bai", "bak", "bal", "bam", "ban", "baq",
+"bas", "bat", "bej", "bel", "bem", "ben", "ber", "bho", "bih", "bik", "bin",
+"bis", "bla", "bnt", "bod", "bos", "bra", "bre", "btk", "bua", "bug", "bul",
+"bur", "byn", "cad", "cai", "car", "cat", "cau", "ceb", "cel", "ces", "cha",
+"chb", "che", "chg", "chi", "chk", "chm", "chn", "cho", "chp", "chr", "chu",
+"chv", "chy", "cmc", "cop", "cor", "cos", "cpe", "cpf", "cpp", "cre", "crh",
+"crp", "csb", "cus", "cym", "cze", "dak", "dan", "dar", "day", "del", "den",
+"deu", "dgr", "din", "div", "doi", "dra", "dsb", "dua", "dum", "dut", "dyu",
+"dzo", "efi", "egy", "eka", "ell", "elx", "eng", "enm", "epo", "est", "eus",
+"ewe", "ewo", "fan", "fao", "fas", "fat", "fij", "fil", "fin", "fiu", "fon",
+"fra", "fre", "frm", "fro", "frr", "frs", "fry", "ful", "fur", "gaa", "gay",
+"gba", "gem", "geo", "ger", "gez", "gil", "gla", "gle", "glg", "glv", "gmh",
+"goh", "gon", "gor", "got", "grb", "grc", "gre", "grn", "gsw", "guj", "gwi",
+"hai", "hat", "hau", "haw", "heb", "her", "hil", "him", "hin", "hit", "hmn",
+"hmo", "hrv", "hsb", "hun", "hup", "hye", "iba", "ibo", "ice", "ido", "iii",
+"ijo", "iku", "ile", "ilo", "ina", "inc", "ind", "ine", "inh", "ipk", "ira",
+"iro", "isl", "ita", "jav", "jbo", "jpn", "jpr", "jrb", "kaa", "kab", "kac",
+"kal", "kam", "kan", "kar", "kas", "kat", "kau", "kaw", "kaz", "kbd", "kha",
+"khi", "khm", "kho", "kik", "kin", "kir", "kmb", "kok", "kom", "kon", "kor",
+"kos", "kpe", "krc", "krl", "kro", "kru", "kua", "kum", "kur", "kut", "lad",
+"lah", "lam", "lao", "lat", "lav", "lez", "lim", "lin", "lit", "lol", "loz",
+"ltz", "lua", "lub", "lug", "lui", "lun", "luo", "lus", "mac", "mad", "mag",
+"mah", "mai", "mak", "mal", "man", "mao", "map", "mar", "mas", "may", "mdf",
+"mdr", "men", "mga", "mic", "min", "mis", "mkd", "mkh", "mlg", "mlt", "mnc",
+"mni", "mno", "moh", "mol", "mon", "mos", "mri", "msa", "mul", "mun", "mus",
+"mwl", "mwr", "mya", "myn", "myv", "nah", "nai", "nap", "nau", "nav", "nbl",
+"nde", "ndo", "nds", "nep", "new", "nia", "nic", "niu", "nld", "nno", "nob",
+"nog", "non", "nor", "nqo", "nso", "nub", "nwc", "nya", "nym", "nyn", "nyo",
+"nzi", "oci", "oji", "ori", "orm", "osa", "oss", "ota", "oto", "paa", "pag",
+"pal", "pam", "pan", "pap", "pau", "peo", "per", "phi", "phn", "pli", "pol",
+"pon", "por", "pra", "pro", "pus", "qaa-qtz", "que", "raj", "rap", "rar", "roa",
+"roh", "rom", "ron", "rum", "run", "rup", "rus", "sad", "sag", "sah", "sai",
+"sal", "sam", "san", "sas", "sat", "scc", "scn", "sco", "scr", "sel", "sem",
+"sga", "sgn", "shn", "sid", "sin", "sio", "sit", "sla", "slk", "slo", "slv",
+"sma", "sme", "smi", "smj", "smn", "smo", "sms", "sna", "snd", "snk", "sog",
+"som", "son", "sot", "spa", "sqi", "srd", "srn", "srp", "srr", "ssa", "ssw",
+"suk", "sun", "sus", "sux", "swa", "swe", "syr", "tah", "tai", "tam", "tat",
+"tel", "tem", "ter", "tet", "tgk", "tgl", "tha", "tib", "tig", "tir", "tiv",
+"tkl", "tlh", "tli", "tmh", "tog", "ton", "tpi", "tsi", "tsn", "tso", "tuk",
+"tum", "tup", "tur", "tut", "tvl", "twi", "tyv", "udm", "uga", "uig", "ukr",
+"umb", "und", "urd", "uzb", "vai", "ven", "vie", "vol", "vot", "wak", "wal",
+"war", "was", "wel", "wen", "wln", "wol", "xal", "xho", "yao", "yap", "yid",
+"yor", "ypk", "zap", "zen", "zha", "zho", "znd", "zul", "zun", "zxx",
+ 0 };
+
+tmbstr ISO639_1[] = {
+"aa", "ab", "ae", "af", "ak", "am", "an", "ar", "as", "av", "ay", "az", "ba",
+"be", "bg", "bh", "bi", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ch", "co",
+"cr", "cs", "cu", "cv", "cy", "da", "de", "dv", "dz", "ee", "el", "en", "eo",
+"es", "et", "eu", "fa", "ff", "fi", "fj", "fo", "fr", "fy", "ga", "gd", "gl",
+"gn", "gu", "gv", "ha", "he", "hi", "ho", "hr", "ht", "hu", "hy", "hz", "ia",
+"id", "ie", "ig", "ii", "ik", "io", "is", "it", "iu", "ja", "jv", "ka", "kg",
+"ki", "kj", "kk", "kl", "km", "kn", "ko", "kr", "ks", "ku", "kv", "kw", "ky",
+"la", "lb", "lg", "li", "ln", "lo", "lt", "lu", "lv", "mg", "mh", "mi", "mk",
+"ml", "mn", "mo", "mr", "ms", "mt", "my", "na", "nb", "nd", "ne", "ng", "nl",
+"nn", "no", "nr", "nv", "ny", "oc", "oj", "om", "or", "os", "pa", "pi", "pl",
+"ps", "pt", "qu", "rm", "rn", "ro", "ru", "rw", "sa", "sc", "sd", "se", "sg",
+"si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "ss", "st", "su", "sv", "sw",
+"ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "ts", "tt", "tw",
+"ty", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "wo", "xh", "yi", "yo",
+"za", "zh", "zu",
+ 0 };
+
+#endif /* #if SUPPORT_ACCESSIBILITY_CHECKS */
+
+/* eof - iso639.c */
diff -urN F:\FGCVS\tidy\src\lexer.c tidycvs6\src\lexer.c
--- F:\FGCVS\tidy\src\lexer.c Sat Sep 16 11:39:25 2006
+++ tidycvs6\src\lexer.c Fri Sep 22 11:21:18 2006
@@ -1648,6 +1648,7 @@
else
{
doctype = NewDocTypeNode(doc);
+ doctype->implicit = 1; /* Tidy added this doctype! */
doctype->element = TY_(tmbstrdup)("html");
}
diff -urN F:\FGCVS\tidy\src\localize.c tidycvs6\src\localize.c
--- F:\FGCVS\tidy\src\localize.c Sat Sep 16 11:39:25 2006
+++ tidycvs6\src\localize.c Sun Sep 24 14:46:50 2006
@@ -168,6 +168,8 @@
{ IMG_ALT_SUSPICIOUS_FILE_SIZE, "[1.1.1.3]: suspicious 'alt' text (file size)." }, /* Access */
{ IMG_ALT_SUSPICIOUS_PLACEHOLDER, "[1.1.1.4]: suspicious 'alt' text (placeholder)." }, /* Access */
{ IMG_ALT_SUSPICIOUS_TOO_LONG, "[1.1.1.10]: suspicious 'alt' text (too long)." }, /* Access */
+ { IMG_MISSING_ALT_BULLET, "[1.1.1.11]: missing 'alt' text (bullet)." }, /* Access */
+ { IMG_MISSING_ALT_H_RULE, "[1.1.1.12]: missing 'alt' text (horizontal rule)." }, /* Access */
{ IMG_MISSING_LONGDESC_DLINK, "[1.1.2.1]: missing 'longdesc' and d-link." }, /* Access */
{ IMG_MISSING_DLINK, "[1.1.2.2]: missing d-link." }, /* Access */
{ IMG_MISSING_LONGDESC, "[1.1.2.3]: missing 'longdesc'." }, /* Access */
@@ -260,6 +262,8 @@
{ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE, "[9.3.1.6]:
+