X-Git-Url: https://git.deb.at/?p=pkg%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=ffa2a828cd59ccf10f49999b82907be42ed8a28c;hp=638830fe39a4a966c9c59902d44699b9c9097375;hb=b76f736d8dac0da9a2c1b306a4f06fe9009438dd;hpb=8bd25a641ce759ff9273f102632f39faef691d26 diff --git a/blosxom.cgi b/blosxom.cgi index 638830f..ffa2a82 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -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 $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 !; + 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 !; use strict; use FileHandle; @@ -90,6 +90,9 @@ use CGI qw/:standard :netscape/; $version = "2.0.2"; +# Should I encode entities for xml content-types? (plugins can turn this off if they do it themselves) +$encode_xml_entities = 1; + # Load configuration from $ENV{BLOSXOM_CONFIG_DIR}/blosxom.conf, if it exists my $blosxom_config; if ( $ENV{BLOSXOM_CONFIG_FILE} && -r $ENV{BLOSXOM_CONFIG_FILE} ) { @@ -180,6 +183,7 @@ else { # Path Info Magic # Take a gander at HTTP's PATH_INFO for optional blog name, archive yr/mo/day my @path_info = split m{/}, path_info() || param('path'); +$path_info_full = join '/', @path_info; # Equivalent to $ENV{PATH_INFO} shift @path_info; while ( $path_info[0] @@ -510,10 +514,10 @@ sub generate { # Define default interpolation subroutine $interpolate = sub { - package blosxom; my $template = shift; - $template =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee; + # Interpolate scalars, namespaced scalars, and hash/hashref scalars + $template =~ s/(\$\w+(?:::\w+)*(?:(?:->)?{(['"]?)[-\w]+\2})?)/"defined $1 ? $1 : ''"/gee; return $template; }; @@ -648,7 +652,7 @@ sub generate { } } - if ( $content_type =~ m{\bxml\b} ) { + if ( $encode_xml_entities && $content_type =~ m{\bxml\b} ) { # Escape <, >, and &, and to produce valid RSS my %escape = (