sub Wuse ($@);
our $W;
our @EXPORT=qw(&Wrequire &Wuse &a_href &a_href_cz &vskip &img ¢erimg &rightimg $W &top_dir &top_dir_disk &Wprint);
-our @ISA=qw(Exporter);
+our @ISA=qw(Exporter Tie::Handle);
BEGIN
{
require HTTP::Negotiate;
my $have_Geo_IP; BEGIN { $have_Geo_IP=eval { require Geo::IP; 1; }; }
use ModPerl::Util qw(exit);
+use POSIX qw(strftime);
+use Tie::Handle;
#our $W;
$ENV{"HOSTNAME"}||=&{$W->{"web_hostname_sub"}}();
- return $W;
+ return bless $W,$class;
}
sub Wprint($)
{
my($text)=@_;
- $W->{"r"}->print($text);
+ $W->{"r"}->puts($text);
+}
+
+# local *FH;
+# tie *FH,ref($W),$W;
+sub TIEHANDLE($)
+{
+my($class,$W)=@_;
+
+ my $self={};
+ $self->{"W"}=$W or confess "Missing W";
+ return bless $self,$class;
+}
+
+sub WRITE
+{
+my($self,$scalar,$length,$offset)=@_;
+
+ Wprint substr($scalar,0,$length);
}
sub top_dir_disk ()
return @r;
}
+sub no_cache($)
+{
+my($self)=@_;
+
+ header("Expires"=>"Mon, 26 Jul 1997 05:00:00 GMT"); # date in the past
+ header("Last-Modified"=>strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime())); # always modified
+ header("Cache-Control"=>"no-cache, must-revalidate"); # HTTP/1.1
+ header("Pragma"=>"no-cache"); # HTTP/1.0
+}
+
sub heading ()
{
my($class)=@_;
my $client_charset=$W->{"force_charset"} || "us-ascii";
header("Content-Style-Type"=>"text/css");
header("Content-Script-Type"=>"text/javascript");
+ $class->no_cache() if $W->{"no_cache"};
while (my($key,$val)=each(%{$W->{"headers"}})) {
$W->{"r"}->header_out($key,$val);