]> git.deb.at Git - pkg/blosxom.git/blobdiff - blosxom.cgi
Replaced references to www.blosxom.com with blosxom.sourceforge.net
[pkg/blosxom.git] / blosxom.cgi
index 068b7183d1afb9f85010de247d56f428670346e7..320238814f3b13092d44714c39a44326c5abe54f 100755 (executable)
@@ -2,8 +2,8 @@
 
 # Blosxom
 # Author: Rael Dornfest <rael@oreilly.com>
-# Version: 2.0.1
-# Home/Docs/Licensing: http://www.blosxom.com/
+# Version: 2.0.2
+# Home/Docs/Licensing: http://blosxom.sourceforge.net/
 # Development/Downloads: http://sourceforge.net/projects/blosxom
 
 package blosxom;
@@ -76,7 +76,7 @@ use File::stat;
 use Time::localtime;
 use CGI qw/:standard :netscape/;
 
-$version = "2.0";
+$version = "2.0.2";
 
 my $fh = new FileHandle;
 
@@ -84,8 +84,17 @@ my $fh = new FileHandle;
 @num2month = sort { $month2num{$a} <=> $month2num{$b} } keys %month2num;
 
 # Use the stated preferred URL or figure it out automatically
-$url ||= url();
-$url =~ s/^included:/http:/; # Fix for Server Side Includes (SSI)
+$url ||= url(-path_info => 1);
+$url =~ s/^included:/http:/ if $ENV{SERVER_PROTOCOL} eq 'INCLUDED';
+
+# NOTE: Since v3.12, it looks as if CGI.pm misbehaves for SSIs and
+# always appends path_info to the url. To fix this, we always
+# request an url with path_info, and always remove it from the end of the
+# string.
+my $pi_len = length $ENV{PATH_INFO};
+my $might_be_pi = substr($url, -$pi_len);
+substr($url, -length $ENV{PATH_INFO}) = '' if $might_be_pi eq $ENV{PATH_INFO};
+
 $url =~ s!/$!!;
 
 # Drop ending any / from dir settings
@@ -134,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 (<DATA>) {
   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";
 }
@@ -465,7 +481,7 @@ html date         <h3>$dw, $da $mo $yr</h3>
 html foot
 html foot         <p />
 html foot         <center>
-html foot             <a href="http://www.blosxom.com/"><img src="http://www.blosxom.com/images/pb_blosxom.gif" border="0" /></a>
+html foot             <a href="http://blosxom.sourceforge.net/"><img src="http://blosxom.sourceforge.net/images/pb_blosxom.gif" border="0" /></a>
 html foot         </center>
 html foot     </body>
 html foot </html>