X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=c079ab257a6a53a511ec8f264d0a71ca16929886;hp=b3c3ef08b997405069631edc990d8edbe2b7335c;hb=d70589b00686a9eab5e34eafcc3b144c73ee893e;hpb=d58e6028d5ac93e34e38f840a77b4663a426eb5f diff --git a/blosxom.cgi b/blosxom.cgi index b3c3ef0..c079ab2 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -1,8 +1,8 @@ #!/usr/bin/perl # Blosxom -# Author: Rael Dornfest (2002-2003), The Blosxom Development Team (2005-2008) -# Version: 2.1.2 ($Id: blosxom.cgi,v 1.94 2009/03/08 01:18:11 xtaran Exp $) +# Author: Rael Dornfest (2002-2003), The Blosxom Development Team (2005-2009) +# Version: 2.1.2 ($Id: blosxom.cgi,v 1.97 2009/07/19 17:14:20 xtaran Exp $) # Home/Docs/Licensing: http://blosxom.sourceforge.net/ # Development/Downloads: http://sourceforge.net/projects/blosxom @@ -142,6 +142,11 @@ $encode_xml_entities = 1; # can change this, too) $encode_8bit_chars = 0; +# RegExp matching all characters which should be URL encoded in links. +# Defaults to anything but numbers, letters, slash, colon, dash, +# underscore and dot. +$url_escape_re = qr([^-/a-zA-Z0-9:._]); + # -------------------------------- =head1 ENVIRONMENT @@ -237,6 +242,7 @@ use vars qw! %others $encode_xml_entities $encode_8bit_chars + $url_escape_re $content_type !; @@ -852,15 +858,19 @@ sub generate { } } + # Save unescaped versions and allow them to be used in + # flavour templates. + use vars qw/$url_unesc $path_unesc $fn_unesc/; + $url_unesc = $url; + $path_unesc = $path; + $fn_unesc = $fn; + + # Fix special characters in links inside XML content if ( $encode_xml_entities && $content_type =~ m{\bxml\b} && $content_type !~ m{\bxhtml\b} ) { # Escape special characters inside the 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; @@ -873,10 +883,11 @@ sub generate { $fn = blosxom_html_escape($fn); } + # Fix special characters in links inside XML content if ($encode_8bit_chars) { - $url =~ s([^-a-zA-Z0-9_./:])(sprintf('%%%02X', ord($&)))ge; - $path =~ s([^-a-zA-Z0-9_./:])(sprintf('%%%02X', ord($&)))ge; - $fn =~ s([^-a-zA-Z0-9_./:])(sprintf('%%%02X', ord($&)))ge; + $url =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; + $path =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; + $fn =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; } $story = &$interpolate($story);