validator/httpd/cgi-bin check,1.451,1.452

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

Modified Files:
	check 
Log Message:
Well, I better don't comment on the old parse mode code...

Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.451
retrieving revision 1.452
diff -u -d -r1.451 -r1.452
--- check	11 Sep 2005 05:27:25 -0000	1.451
+++ check	11 Sep 2005 12:27:25 -0000	1.452
@@ -78,12 +78,6 @@
 use constant O_NONE    => 8; # 0000 1000
 
 #
-# Parse mode tokens.
-use constant MODE_SGML => 1; # 0000 0001
-use constant MODE_XML  => 2; # 0000 0010
-use constant MODE_TBD  => 4; # 0000 0100, needs further info to decide.
-
-#
 # Define global variables.
 use vars qw($DEBUG $CFG $RSRC $VERSION);
 
@@ -171,10 +165,8 @@
   #
   # Change strings to internal constants in MIME type mapping.
   for (keys %{$CFG->{MIME}}) {
-    if    ($CFG->{MIME}->{$_} eq 'SGML') { $CFG->{MIME}->{$_} = MODE_SGML }
-    elsif ($CFG->{MIME}->{$_} eq 'XML')  { $CFG->{MIME}->{$_} = MODE_XML }
-    elsif ($CFG->{MIME}->{$_} eq 'TBD')  { $CFG->{MIME}->{$_} = MODE_TBD }
-    else                                 { $CFG->{MIME}->{$_} = MODE_TBD }
+    $CFG->{MIME}->{$_} = 'TBD' unless $CFG->{MIME}->{$_} eq 'SGML'
+                                   or $CFG->{MIME}->{$_} eq 'XML';
   }
 
   #
@@ -254,7 +246,7 @@
 
 #
 # Misc simple types.
-$File->{Mode} = MODE_SGML; # Default parse mode is SGML.
+$File->{Mode} = 'SGML'; # Default parse mode is SGML.
 
 #
 # Listrefs.
@@ -534,46 +526,7 @@
 
 #
 # Set parse mode.
-if ($File->{DOCTYPE}) {
-  my $fpi = $File->{DOCTYPE};
-  if (exists $CFG->{Types}->{$fpi}) {
-    my $cfg  = $CFG->{Types}->{$fpi};
-    my $mode = $cfg->{'Parse Mode'};
-
-    if    ($mode eq 'SGML') { $mode = MODE_SGML }
-    elsif ($mode eq 'XML')  { $mode = MODE_XML }
-    else                    { $mode = MODE_TBD }
-
-    if ($File->{Mode} == MODE_TBD) {
-      if    ($mode == MODE_SGML) { $File->{Mode} = MODE_SGML }
-      elsif ($mode == MODE_XML)  { $File->{Mode} = MODE_XML }
-      else {
-        $File->{Mode} = MODE_SGML;
-        &add_warning('W06', {});
-      }
-    } else {
-      unless ($mode == $File->{Mode}) {
-        my $dtd = $mode;
-        my $ct  = $File->{Mode};
-        for ($dtd, $ct) {
-          if    ($_ == MODE_SGML) { $_ = 'SGML' }
-          elsif ($_ == MODE_XML)  { $_ =  'XML' }
-          else                    { $_ = 'SGML' }
-        }
-        unless ($File->{Mode} == MODE_TBD) {
-          &add_warning('W07', {
-            W07_mime => $File->{ContentType},
-            W07_ct   => $ct,
-            W07_dtd  => $dtd,
-          });
-        }
-      }
-    }
-  } else {
-    &add_warning('W08', {W08_mime => $File->{ContentType}})
-      if $File->{Mode} == MODE_TBD;
-  }
-}
+set_parse_mode($File, $CFG) if $File->{DOCTYPE};
 
 #
 # Sanity check Charset information and add any warnings necessary.
@@ -1028,7 +981,7 @@
   my $File = shift; # The master datastructure.
 
   $File->{Bytes}       = $q->param('fragment');
-  $File->{Mode}        = MODE_TBD;
+  $File->{Mode}        = 'TBD';
   $File->{Modified}    = '';
   $File->{Server}      = '';
   $File->{Size}        = '';
@@ -1046,12 +999,11 @@
   my $Content_Type = shift;
   my $url          = shift;
   my $charset      = '';
-  my $mode         = '';
 
   # @@FIXME @param now unused
   my ($ct, @param) = split /\s*;\s*/, lc $Content_Type;
 
-  $mode = $CFG->{MIME}->{$ct} || $ct;
+  my $mode = $CFG->{MIME}->{$ct} || $ct;
 
   $charset = HTML::Encoding::encoding_from_content_type($Content_Type);
 
@@ -1519,8 +1471,43 @@
 }
 
 #
+# Set parse mode.
+sub set_parse_mode {
+  my $File = shift;
+  my $CFG = shift;
+  my $fpi = $File->{DOCTYPE};
+  my $mode = $CFG->{Types}->{$fpi}->{'Parse Mode'};
+  
+  if (!exists $CFG->{Types}->{$fpi})
+  {
+    &add_warning('W08', {W08_mime => $File->{ContentType}})
+      if $File->{Mode} eq 'TBD';
+    return;
+  }
+  
+  $mode = 'TBD' unless $mode eq 'SGML' or $mode eq 'XML';
+  
+  if ($File->{Mode} ne 'TBD' and $mode ne $File->{Mode}) {
+    &add_warning('W07', {
+      W07_mime => $File->{ContentType},
+      W07_ct   => $File->{Mode},
+      W07_dtd  => $mode,
+    });
+    return;
+  }
+  
+  # $File->{Mode} eq 'TBD'
+  if ($mode eq 'SGML' or $mode eq 'XML') {
+    $File->{Mode} = $mode
+  } else {
+    $File->{Mode} = 'SGML';
+    &add_warning('W06', {});
+  }
+}
+
+#
 # Utility sub to tell if mode "is" XML.
-sub is_xml {shift->{Mode} == MODE_XML};
+sub is_xml {shift->{Mode} eq 'XML'};
 
 #
 # Check charset conflicts and add any warnings necessary.
@@ -1814,7 +1801,7 @@
 
   # No DOCTYPE.
   if ($err->{msg} =~ m(prolog can\'t be omitted)) {
-    my $dtd = ($File->{Mode} == MODE_SGML ?
+    my $dtd = ($File->{Mode} eq 'SGML' ?
                'HTML 4.01 Transitional' : 'XHTML 1.0 Transitional');
 
     add_warning('W09', {W09_dtd => $dtd});

Received on Sunday, 11 September 2005 12:27:32 UTC