- From: J. David Bryan <jdbryan@acm.org>
- Date: Thu, 4 Jan 2001 15:07:03 -0500
- To: HTML Tidy List <html-tidy@w3.org>
This report is for HTML Tidy version 4-Aug-00. Problem description,
verification, and fix are contained within the appended HTML text.
-- Dave
--------------------------- test case ---------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
bug-2000-12-27-b.html
Problem:
The "alt-text:" and "doctype: <fpi>" options do not work when specified
in a config file with a quoted string parameter.
Expected behavior:
The strings specified as parameters to these options should be processed
correctly. Instead, they are ignored.
Verification:
tidy -config config.ini bug-2000-12-27-b.html
With a configuration file "config.ini" containing either of these lines:
doctype: "-//ACME//DTD HTML 3.14159//EN"
alt-text: "Alternate"
Correction:
config.c (ParseString)
lexer.c (FixDocType)
-->
<html>
<head>
<title>Bug-2000-12-27-B</title>
</head>
<body>
<p><img src="a">This image has no ALT attribute.</p>
</body>
</html>
----------------------------- patch -----------------------------------
diff -u tidy4aug00-orig/config.c tidy4aug00-fix/config.c
--- tidy4aug00-orig/config.c Fri Aug 04 15:43:02 2000
+++ tidy4aug00-fix/config.c Thu Jan 04 01:14:35 2001
@@ -683,27 +683,13 @@
SkipWhite();
if (c == '"' || c == '\'')
+ {
delim = c;
+ AdvanceChar();
+ }
- while (i < 8190 && c != EOF)
+ while (i < 8190 && c != EOF && c != '\r' && c != '\n')
{
- /* treat \r\n \r or \n as line ends */
- if (c == '\r')
- {
- AdvanceChar();
-
- if (c != '\n' && !IsWhite(c))
- break;
- }
-
- if (c == '\n')
- {
- AdvanceChar();
-
- if (!IsWhite(c))
- break;
- }
-
if (c == delim && delim != '\0')
break;
@@ -733,6 +719,8 @@
ReportBadArgument(option);
#endif
*location.string = wstrdup(buf);
+
+ NextProperty();
}
void ParseCharEncoding(Location location, char *option)
diff -u tidy4aug00-orig/lexer.c tidy4aug00-fix/lexer.c
--- tidy4aug00-orig/lexer.c Fri Aug 04 15:55:48 2000
+++ tidy4aug00-fix/lexer.c Thu Jan 04 01:15:41 2001
@@ -1226,7 +1226,11 @@
AddStringLiteral(lexer, "html PUBLIC ");
if (doctype_mode == doctype_user && doctype_str)
+ {
+ AddStringLiteral(lexer, "\"");
AddStringLiteral(lexer, doctype_str);
+ AddStringLiteral(lexer, "\"");
+ }
else if (guessed == VERS_HTML20)
AddStringLiteral(lexer, "\"-//IETF//DTD HTML 2.0//EN\"");
else
--------------------------- end patch ---------------------------------
Received on Thursday, 4 January 2001 15:07:18 UTC