X-Git-Url: https://git.deb.at/?p=pkg%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=bba92f18a07e149f5516054e10f088d048b9e713;hp=0182001a89cb435569319d82ee6076fb8eb7e57d;hb=21e1a6a3689fc99525aa3a1d3c5948aad2a2de08;hpb=27f7b38a770074a5906af933a9e41a6dbe7ce8a9 diff --git a/blosxom.cgi b/blosxom.cgi index 0182001..bba92f1 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -137,7 +137,7 @@ $url =~ s!/$!!; $datadir =~ s!/$!!; $plugin_dir =~ s!/$!!; $static_dir =~ s!/$!!; # Fix depth to take into account datadir's path -$depth and $depth += ($datadir =~ tr[/][]) - 1; +$depth += ($datadir =~ tr[/][]) - 1 if $depth; # Global variable to be used in head/foot.{flavour} templates $path_info = ''; @@ -157,7 +157,7 @@ $flavour = ''; if ( $path_info[$#path_info] =~ /(.+)\.(.+)$/ ) { $flavour = $2; - $1 ne 'index' and $path_info .= "/$1.$2"; + $path_info .= "/$1.$2" if $1 ne 'index'; pop @path_info; } else { $flavour = param('flav') || $default_flavour; @@ -324,8 +324,8 @@ if (!$ENV{GATEWAY_INTERFACE} and param('-password') and $static_password and par foreach ( ('', split /\//, $path) ) { $p .= "/$_"; $p =~ s!^/!!; - $done{$p}++ and next; - (-d "$static_dir/$p" or $p =~ /\.$file_extension$/) or mkdir "$static_dir/$p", 0755; + next if $done{$p}++; + mkdir "$static_dir/$p", 0755 unless (-d "$static_dir/$p" or $p =~ /\.$file_extension$/); foreach $flavour ( @static_flavours ) { my $content_type = (&$template($p,'content_type',$flavour)); $content_type =~ s!\n.*!!s; @@ -379,7 +379,16 @@ sub generate { # Plugins: Skip # Allow plugins to decide if we can cut short story generation - my $skip; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('skip') and defined($tmp = $plugin->skip()) and $skip = $tmp and last; } + my $skip; + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('skip') ) { + if ( my $tmp = $plugin->skip() ) { + $skip = $tmp; + last; + } + } + } + # Define default interpolation subroutine $interpolate = @@ -396,13 +405,24 @@ sub generate { # Plugins: Interpolate # Allow for the first encountered plugin::interpolate subroutine to # override the default built-in interpolate subroutine - my $tmp; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('interpolate') and defined($tmp = $plugin->interpolate()) and $interpolate = $tmp and last; } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('interpolate') ) { + if ( my $tmp = $plugin->interpolate() ) { + $interpolate = $tmp; + last; + } + } + } # Head my $head = (&$template($currentdir,'head',$flavour)); # Plugins: Head - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('head') and $entries = $plugin->head($currentdir, \$head) } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('head') ) { + $entries = $plugin->head( $currentdir, \$head ); + } + } $head = &$interpolate($head); @@ -429,7 +449,14 @@ sub generate { # Plugins: Sort # Allow for the first encountered plugin::sort subroutine to override the # default built-in sort subroutine - my $tmp; foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('sort') and defined($tmp = $plugin->sort()) and $sort = $tmp and last; } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('sort') ) { + if ( my $tmp = $plugin->sort() ) { + $sort = $tmp; + last; + } + } + } foreach my $path_file ( &$sort(\%f, \%others) ) { last if $ne <= 0 && $date !~ /\d/; @@ -475,7 +502,11 @@ sub generate { my $story = (&$template($path,'story',$flavour)); # Plugins: Story - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('story') and $entries = $plugin->story($path, $fn, \$story, \$title, \$body) } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('story') ) { + $entries = $plugin->story( $path, $fn, \$story, \$title, \$body ); + } + } if ($content_type =~ m{\bxml\b}) { # Escape <, >, and &, and to produce valid RSS @@ -497,18 +528,26 @@ sub generate { my $foot = (&$template($currentdir,'foot',$flavour)); # Plugins: Foot - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('foot') and $entries = $plugin->foot($currentdir, \$foot) } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('foot') ) { + $entries = $plugin->foot( $currentdir, \$foot ); + } + } $foot = &$interpolate($foot); $output .= $foot; # Plugins: Last - foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('last') and $entries = $plugin->last() } + foreach my $plugin (@plugins) { + if ( $plugins{$plugin} > 0 and $plugin->can('last') ) { + $entries = $plugin->last(); + } + } } # End skip # Finally, add the header, if any and running dynamically - $static_or_dynamic eq 'dynamic' and $header and $output = header($header) . $output; + $output = header($header) . $output if ($static_or_dynamic eq 'dynamic' and $header); $output; }