]> git.deb.at Git - pkg/blosxom.git/blobdiff - blosxom.cgi
Starting the next release cycle in the ChangeLog and the blosxom.cgi file header...
[pkg/blosxom.git] / blosxom.cgi
index 341d2967c87773a2922f7975c4ddef395afa8bfe..9162488ad1b0221ba162325079f0eb790004f497 100755 (executable)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl
 
 # Blosxom
-# Author: Rael Dornfest (2003), The Blosxom Development Team (2005-2008)
-# Version: 2.1.0
+# Author: Rael Dornfest (2002-2003), The Blosxom Development Team (2005-2008)
+# Version: 2.1.0+dev ($Id: blosxom.cgi,v 1.79 2008/07/24 16:24:07 xtaran Exp $)
 # Home/Docs/Licensing: http://blosxom.sourceforge.net/
 # Development/Downloads: http://sourceforge.net/projects/blosxom
 
@@ -79,7 +79,7 @@ $static_entries = 0;
 # --------------------------------
 
 use vars
-    qw! $version $blog_title $blog_description $blog_language $blog_encoding $datadir $url %template $template $depth $num_entries $file_extension $default_flavour $static_or_dynamic $config_dir $plugin_list $plugin_path $plugin_dir $plugin_state_dir @plugins %plugins $static_dir $static_password @static_flavours $static_entries $path_info_full $path_info $path_info_yr $path_info_mo $path_info_da $path_info_mo_num $flavour $static_or_dynamic %month2num @num2month $interpolate $entries $output $header $show_future_entries %files %indexes %others $encode_xml_entities !;
+    qw! $version $blog_title $blog_description $blog_language $blog_encoding $datadir $url %template $template $depth $num_entries $file_extension $default_flavour $static_or_dynamic $config_dir $plugin_list $plugin_path $plugin_dir $plugin_state_dir @plugins %plugins $static_dir $static_password @static_flavours $static_entries $path_info_full $path_info $path_info_yr $path_info_mo $path_info_da $path_info_mo_num $flavour $static_or_dynamic %month2num @num2month $interpolate $entries $output $header $show_future_entries %files %indexes %others $encode_xml_entities $content_type !;
 
 use strict;
 use FileHandle;
@@ -436,7 +436,7 @@ if (    !$ENV{GATEWAY_INTERFACE}
             mkdir "$static_dir/$p", 0755
                 unless ( -d "$static_dir/$p" or $p =~ /\.$file_extension$/ );
             foreach $flavour (@static_flavours) {
-                my $content_type
+                $content_type
                     = ( &$template( $p, 'content_type', $flavour ) );
                 $content_type =~ s!\n.*!!s;
                 my $fn = $p =~ m!^(.+)\.$file_extension$! ? $1 : "$p/index";
@@ -473,7 +473,7 @@ if (    !$ENV{GATEWAY_INTERFACE}
 
 # Dynamic
 else {
-    my $content_type = ( &$template( $path_info, 'content_type', $flavour ) );
+    $content_type = ( &$template( $path_info, 'content_type', $flavour ) );
     $content_type =~ s!\n.*!!s;
 
     $content_type =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee;
@@ -660,7 +660,18 @@ sub generate {
                 }
             }
 
-            if ( $encode_xml_entities && $content_type =~ m{\bxml\b} ) {
+            if ( $encode_xml_entities &&
+                 $content_type =~ m{\bxml\b} &&
+                 $content_type !~ m{\bxhtml\b} ) {
+                # Escape special characters inside the <link> container
+
+                # The following line should be moved more towards to top for
+                # performance reasons -- Axel Beckert, 2008-07-22
+                my $url_escape_re = qr([^-/a-zA-Z0-9:._]);
+
+                $url   =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg;
+                $path  =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg;
+                $fn    =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg;
 
                 # Escape <, >, and &, and to produce valid RSS
                 my %escape = (
@@ -742,7 +753,7 @@ html content_type text/html; charset=$blog_encoding
 html head <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 html head <html>
 html head     <head>
-html head         <meta http-equiv="content-type" content="text/html;charset=$blog_encoding" >
+html head         <meta http-equiv="content-type" content="$content_type" >
 html head         <link rel="alternate" type="application/rss+xml" title="RSS" href="$url/index.rss" >
 html head         <title>$blog_title $path_info_da $path_info_mo $path_info_yr</title>
 html head     </head>
@@ -784,7 +795,7 @@ rss story     <title>$title</title>
 rss story     <pubDate>$dw, $da $mo $yr $ti:00 $utc_offset</pubDate>
 rss story     <link>$url/$yr/$mo_num/$da#$fn</link>
 rss story     <category>$path</category>
-rss story     <guid isPermaLink="false">$path/$fn</guid>
+rss story     <guid isPermaLink="true">$url$path/$fn</guid>
 rss story     <description>$body</description>
 rss story   </item>