X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom.git;a=blobdiff_plain;f=blosxom.cgi;h=48ee5c1f7668cf7bd136522e887a29d9934f0a2f;hp=997fcc74a4a00fdc80eb0cd82265e8c64f850643;hb=011c1f0a1750d2ff913302a3e5768de9287f0b0c;hpb=0f7240c4441b085dd9f46a326abe19e6b5a77ed5 diff --git a/blosxom.cgi b/blosxom.cgi index 997fcc7..48ee5c1 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -143,13 +143,20 @@ $template = return join '', <$fh> if $fh->open("< $datadir/$path/$chunk.$flavour"); } while ($path =~ s/(\/*[^\/]*)$// and $1); - return join '', ($template{$flavour}{$chunk} || $template{error}{$chunk} || ''); + # Check for definedness, since flavour can be the empty string + if (defined $template{$flavour}{$chunk}) { + return $template{$flavour}{$chunk}; + } elsif (defined $template{error}{$chunk}) { + return $template{error}{$chunk} + } else { + return ''; + } }; # Bring in the templates %template = (); while () { last if /^(__END__)$/; - my($ct, $comp, $txt) = /^(\S+)\s(\S+)\s(.*)$/ or next; + my($ct, $comp, $txt) = /^(\S+)\s(\S+)(?:\s(.*))?$/ or next; $txt =~ s/\\n/\n/mg; $template{$ct}{$comp} .= $txt . "\n"; } @@ -356,7 +363,7 @@ sub generate { ($path,$fn) = $path_file =~ m!^$datadir/(?:(.*)/)?(.*)\.$file_extension!; # Only stories in the right hierarchy - $path =~ /^$currentdir/ or $path_file eq "$datadir/$currentdir" or next; + $path =~ /^$currentdir(?=$|/)/ or $path_file eq "$datadir/$currentdir" or next; # Prepend a slash for use in templates only if a path exists $path &&= "/$path";