X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=Web.pm;h=c5c1ae9462f9679b29cabeec3bc291f56b4b9304;hb=00c99147e484912c0f0aed1243aebab117a7657c;hp=9aafbab363e40f6f7458855838f59fc76f152a61;hpb=5d886f3c5fbabcadbaa646db7f6c636dbebec218;p=MyWeb.git diff --git a/Web.pm b/Web.pm index 9aafbab..c5c1ae9 100644 --- a/Web.pm +++ b/Web.pm @@ -144,7 +144,9 @@ my($class,%args)=@_; Wrequire 'My::Hash'; # $W={} can get somehow created very easily. - cluck "W not empty:\n".Dumper($W) if keys(%$W); + # Do not: cluck "W not empty:\n".Dumper($W) if keys(%$W); + # to prevent (of $W->{"headers_in"}): TODO: Enumeration may not be expected. + cluck "W not empty; __PACKAGE__ was: ".$W->{"__PACKAGE__"} if keys(%$W); $W=My::Hash->new({},"My::Hash::Sub","My::Hash::Push"); bless $W,$class; %$W=( @@ -268,6 +270,8 @@ my($class,%args)=@_; $W->{"have_js"}=($W->{"args"}{"have_js"} ? 1 : 0); if ($W->{"detect_js"} && !$W->{"have_js"}) { + # Do not: '."\n"; } @@ -302,7 +306,7 @@ sub exit_hook } sub exit_hook_start { - cluck "exit_hook_start() twice?" if defined $exit_orig; + do { cluck "exit_hook_start() twice?"; return; } if defined $exit_orig; $exit_orig=\&CORE::GLOBAL::exit; # Prevent: Subroutine CORE::GLOBAL::exit redefined no warnings 'redefine'; @@ -312,7 +316,8 @@ sub exit_hook_stop { do { cluck "exit_hook_stop() without exit_hook_start()?"; return; } if \&exit_hook ne \&CORE::GLOBAL::exit; - cluck "INTERNAL: exit_orig uninitialized" if !$exit_orig; + do { cluck "INTERNAL: exit_orig uninitialized"; return; } + if !$exit_orig; # Prevent: Subroutine CORE::GLOBAL::exit redefined no warnings 'redefine'; *CORE::GLOBAL::exit=$exit_orig; @@ -531,6 +536,7 @@ sub footer() { cluck 'Explicit &footer call is deprecated, !_exit_dne' if !$W->{"_exit_done"}; exit if $W->{"footer_done"}++; # deadlock prevention: + &{$_}() for reverse @{$W->{"footer_sub_push"}}; if ($W->{"header_only"}) { $packages_used_hash{$W->{"__PACKAGE__"}}{"_done"}=1; exit; @@ -569,11 +575,17 @@ sub footer() cluck "Class file $file not found; tried: ".join(" ",@tried) if !$ext; } $file.=$ext; + my $viewcvs; + if ((my $file_cvs=$file)=~s{^My/}{}) { + $viewcvs=$W->{"viewcvs_My"}.$file_cvs; + } + else { + $viewcvs=$W->{"viewcvs"}.$file; + } $cvs_id_split[2]="" - .a_href((map({ my $s=$_; $s=~s#/viewcvs/#$&~checkout~/#; $s; } $W->{"viewcvs"}))[0]."$file?rev=".$cvs_id_split[2], + .a_href((map({ my $s=$_; $s=~s#/viewcvs/#$&~checkout~/#; $s; } $viewcvs))[0]."?rev=".$cvs_id_split[2], $cvs_id_split[2]); - $cvs_id_split[1]=a_href($W->{"viewcvs"}.$file, - ($package!~/^Apache2::/ ? $package : $cvs_id_split[1])); + $cvs_id_split[1]=a_href($viewcvs,($package!~/^Apache2::/ ? $package : $cvs_id_split[1])); $cvs_id_split[5]=&{$W->{"cvs_id_author_sub"}}($cvs_id_split[5]); } join " ",@cvs_id_split; @@ -582,7 +594,7 @@ sub footer() Wprint "

\n"; } - packages_used_comments(); + footer_packages_used_comments(); do { Wprint $_ if $_; } for $W->{"footing"}; @@ -705,6 +717,7 @@ my($self,$url,$status)=@_; $W->{"r"}->headers_out()->{"Location"}=$url; $W->{"header_only"}=1; $W->{"content_type"}=0; + $W->{"charset"}=0; My::Web->heading(); exit; die "NOTREACHED"; @@ -1102,7 +1115,8 @@ my($class)=@_; header("Cache-Control"=>"public"); # HTTP/1.1 # Use $W->{"charset"}=0 to disable charset. - $W->{"charset"}="us-ascii" if !defined $W->{"charset"} && !defined($W->{"content_type"}) || $W->{"content_type"}; + $W->{"charset"}="us-ascii" + if !defined $W->{"charset"} && (!defined($W->{"content_type"}) || $W->{"content_type"}); # Workaround bug # https://bugzilla.mozilla.org/show_bug.cgi?id=120556 @@ -1177,8 +1191,10 @@ my($class)=@_; HERE } if ($W->{"css_inherit"}) { + # Do not: HERE } }