X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=7c669dde565a2798204ff7179dd75d1183c54388;hp=5d2d6e6da1d07c8e50ccc3d2684e1a2763755a60;hb=1bc93509a17fb06a9a0d5dd6b823a56d0c5d88aa;hpb=d3b78ea0102bb3086d4e356b3956d3fe2de68e60 diff --git a/blosxom.cgi b/blosxom.cgi index 5d2d6e6..7c669dd 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -48,17 +48,18 @@ $show_future_entries = 0; # --- Plugins (Optional) ----- # File listing plugins blosxom should load -# (if empty blosxom will load all plugins in $plugin_path directories) +# (if empty blosxom will load all plugins in $plugin_dir and $plugin_path directories) $plugin_list = ""; # Where are my plugins kept? -# List of directories, separated by ';' on windows, ':' everywhere else -$plugin_path = ""; +$plugin_dir = ""; # Where should my plugins keep their state information? -$plugin_state_dir = ""; +$plugin_state_dir = "$plugin_dir/state"; -#$plugin_state_dir = "/var/lib/blosxom/state"; +# Additional plugins location +# List of directories, separated by ';' on windows, ':' everywhere else +$plugin_path = ""; # --- Static Rendering ----- @@ -244,13 +245,12 @@ while () { # Plugins: Start my $path_sep = $^O eq 'MSWin32' ? ';' : ':'; -my @plugin_dirs = split /$path_sep/, ( $plugin_path || $plugin_dir ); +my @plugin_dirs = split /$path_sep/, $plugin_path; +unshift @plugin_dirs, $plugin_dir; my @plugin_list = (); my %plugin_hash = (); # If $plugin_list is set, read plugins to use from that file -$plugin_list = "$config_dir/$plugin_list" - if $plugin_list && $plugin_list !~ m!^\s*/!; if ( $plugin_list and -r $plugin_list and $fh->open("< $plugin_list") ) { @plugin_list = map { chomp $_; $_ } grep { /\S/ && !/^#/ } <$fh>; $fh->close; @@ -291,8 +291,10 @@ foreach my $plugin (@plugin_list) { # For Blosxom::Plugin::Foo style plugins, we need to use a string require eval "require $plugin_name"; } - else { - eval { require $plugin }; + else + { # we try first to load from $plugin_dir before attempting from $plugin_path + eval { require "$plugin_dir/$plugin" } + or eval { require $plugin }; } if ($@) { @@ -453,7 +455,7 @@ else { my $content_type = ( &$template( $path_info, 'content_type', $flavour ) ); $content_type =~ s!\n.*!!s; - $content_type =~ s/(\$\w+(?:::)?\w*)/"defined $1 ? $1 : ''"/gee; + $content_type =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee; $header = { -type => $content_type }; print generate( 'dynamic', $path_info, @@ -502,7 +504,7 @@ sub generate { package blosxom; my $template = shift; - $template =~ s/(\$\w+(?:::)?\w*)/"defined $1 ? $1 : ''"/gee; + $template =~ s/(\$\w+(?:::\w+)*)/"defined $1 ? $1 : ''"/gee; return $template; }; @@ -692,16 +694,16 @@ sub nice_date { my ($unixtime) = @_; my $c_time = CORE::localtime($unixtime); - my ( $dw, $mo, $da, $hr, $min, $yr ) + my ( $dw, $mo, $da, $hr, $min, $sec, $yr ) = ( $c_time - =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}):(\d{2}):\d{2} +(\d{4})$/ + =~ /(\w{3}) +(\w{3}) +(\d{1,2}) +(\d{2}):(\d{2}):(\d{2}) +(\d{4})$/ ); $ti = "$hr:$min"; $da = sprintf( "%02d", $da ); my $mo_num = $month2num{$mo}; my $offset - = timegm( 00, $min, $hr, $da, $mo_num - 1, $yr - 1900 ) - $unixtime; + = timegm( $sec, $min, $hr, $da, $mo_num - 1, $yr - 1900 ) - $unixtime; my $utc_offset = sprintf( "%+03d", int( $offset / 3600 ) ) . sprintf( "%02d", ( $offset % 3600 ) / 60 );