validator/httpd/cgi-bin check,1.305.2.117,1.305.2.118

Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv22380

Modified Files:
      Tag: validator-0_6_0-branch
	check 
Log Message:
Fix Fallback options for Charset and DOCTYPE. This closes Bug #719.


Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.305.2.117
retrieving revision 1.305.2.118
diff -u -d -r1.305.2.117 -r1.305.2.118
--- check	15 May 2004 16:21:04 -0000	1.305.2.117
+++ check	16 May 2004 02:29:46 -0000	1.305.2.118
@@ -413,29 +413,37 @@
   $File->{Charset}->{Use} = $File->{Charset}->{META};
 }
 
+#
+# Handle any Fallback or Override for the charset.
 if (&conflict($File->{Opt}->{Charset}, '(detect automatically)')) {
+  # charset=foo was given to the CGI and it wasn't "autodetect".
+
+  #
+  # Extract the user-requested charset from CGI param.
   my ($override, undef) = split(/\s/, $File->{Opt}->{Charset}, 2);
   $File->{Charset}->{Override} = lc($override);
-  unless ($File->{Charset}->{Use} and $File->{Opt}->{FB}->{Charset}) {
-    if ($File->{Opt}->{FB}->{Charset} and not $File->{Charset}->{Use}) {
+
+  if ($File->{Opt}->{FB}->{Charset} and not ) {
+    unless ($File->{Charset}->{Use}) {
       &add_warning($File, 'fallback', 'No Character Encoding Found!', <<".EOF."); # Warn about fallback...
   Falling back to "$File->{Charset}->{Override}"
   (<a href="docs/users.html#fbc">explain...</a>).
 .EOF.
       $File->{Tentative} |= T_ERROR; # Tag it as Invalid.
-    } else {
-      # Warn about Override...
-      unless ($File->{Charset}->{Override} eq $File->{Charset}->{Use}) {
-        my $cs_use = &ent($File->{Charset}->{Use});
-        my $cs_opt = &ent($File->{Charset}->{Override});
-        &add_warning($File, 'override', 'Character Encoding Override in effect!', <<".EOF.");
+      $File->{Charset}->{Use} = $File->{Charset}->{Override};
+    }
+  } else {
+    # Warn about Override unless it's the same as the real charset...
+    unless ($File->{Charset}->{Override} eq $File->{Charset}->{Use}) {
+      my $cs_use = &ent($File->{Charset}->{Use});
+      my $cs_opt = &ent($File->{Charset}->{Override});
+      &add_warning($File, 'override', 'Character Encoding Override in effect!', <<".EOF.");
       The detected character encoding "<code>$cs_use</code>"
       has been suppressed and "<code>$cs_opt</code>" used instead.
 .EOF.
-        $File->{Tentative} |= T_ERROR;
-      }
+      $File->{Tentative} |= T_ERROR;
+      $File->{Charset}->{Use} = $File->{Charset}->{Override};
     }
-    $File->{Charset}->{Use} = $File->{Charset}->{Override};
   }
 }
 
@@ -1636,8 +1644,11 @@
 
   my $declaration = sub {
     $seen = TRUE;
+
     # No Override if Fallback was requested.
-    unless ($File->{Opt}->{FB}->{DOCTYPE}) {
+    if ($File->{Opt}->{FB}->{DOCTYPE}) {
+      $HTML .= $_[0]; # Stash it as is...
+    } else { # Comment it out and insert the new one...
       $HTML .= "$dtd\n" . '<!-- ' . $_[0] . ' -->';
       $org_dtd = &ent($_[0]);
     }
@@ -2605,18 +2616,6 @@
   my $cs_meta = $File->{Charset}->{META} ? &ent($File->{Charset}->{META}) : '';
 
   #
-  # warn about charset override
-  if ($File->{Charset}->{Override} &&
-      $File->{Charset}->{Override} ne $File->{Charset}->{Use}) {
-    &add_warning($File, 'override', 'Character Encoding Override in effect!', <<".EOF.");
-      The detected character encoding, "<code>$cs_use</code>", has been
-      suppressed and the character encoding "<code>$cs_opt</code>" used
-      instead.
-.EOF.
-    $File->{Tentative} |= T_ERROR;
-  }
-
-  #
   # Add a warning if there was charset info conflict (HTTP header,
   # XML declaration, or <meta> element).
   if (&conflict($File->{Charset}->{HTTP}, $File->{Charset}->{XML})) {

Received on Saturday, 15 May 2004 22:31:26 UTC