diff -ur -x '*~' MT-2.661.orig/lib/MT/App.pm MT-2.661.mod/lib/MT/App.pm --- MT-2.661.orig/lib/MT/App.pm 2004-01-15 08:00:24.000000000 +0900 +++ MT-2.661.mod/lib/MT/App.pm 2008-05-07 02:35:08.000000000 +0900 @@ -14,6 +14,16 @@ use MT; @MT::App::ISA = qw( MT ); +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +BEGIN { + if (MP2) { + require Apache2::Const; + Apache2::Const->import(-compile => qw(OK REDIRECT)); + } +} + use vars qw( %Global_actions ); sub add_methods { my $this = shift; @@ -32,9 +42,13 @@ sub handler ($$) { my $class = shift; my($r) = @_; - require Apache::Constants; + if (MP2) { + require Apache2::Const; + }else{ + require Apache::Constants; + } if (lc($r->dir_config('Filter') || '') eq 'on') { $r = $r->filter_register; } my $config_file = $r->dir_config('MTConfig'); my $app = $class->new( Config => $config_file, ApacheObject => $r ) @@ -46,7 +60,11 @@ $cfg->set($var, $val); } $app->run; - return Apache::Constants::OK(); + if (MP2) { + return Apache2::Const::OK; + }else{ + return Apache::Constants::OK(); + } } sub send_http_header { @@ -58,7 +76,12 @@ if $type =~ m!^text/! && $type !~ /\bcharset\b/; } if ($ENV{MOD_PERL}) { - $app->{apache}->send_http_header($type); + require mod_perl; + if (MP2) { + $app->{apache}->content_type($type); + }else{ + $app->{apache}->send_http_header($type); + } } else { $app->{cgi_headers}{-type} = $type; $app->{cgi_headers}{"-status"} = $app->{status_line}; @@ -85,10 +109,55 @@ $app->{template_dir} = ''; $app->{cgi_headers} = { }; if ($ENV{MOD_PERL}) { - require Apache::Request; - $app->{apache} = $param{ApacheObject} || Apache->request; - $app->{query} = Apache::Request->new($app->{apache}, - POST_MAX => $app->{cfg}->CGIMaxUpload); + if (MP2) { + require Apache2::Request; + $app->{apache} = $param{ApacheObject} + || Apache2::RequestUtil->request; + + { + package Apache2::RequestSubclass; + use base qw(Apache2::Request); + sub new { + my($class, @args) = @_; + my $r = shift @args; + #push @args, "POST_MAX","1M"; + my $self = bless { r => Apache2::Request->new($r,@args), _my_table => '' }, $class; + my %table; + for my $key ($self->{r}->param) { + my @ret = $self->{r}->param($key); + $table{$key} = scalar @ret > 1 ? [@ret] : $ret[0]; + } + $self->{_my_table} = \%table; + return $self; + } + sub param { + my $self = shift; + my ($key,$val) = @_; + my $table = $self->{_my_table}; + unless ($key) { + return keys %{$table}; + } + if (defined $val) { + $table->{$key} = $val; + $self->{_my_table} = $table; + } + my $ret = $table->{$key}; + if (ref $ret eq 'ARRAY') { + return wantarray ? @$ret : $ret->[0]; + } else { + return $ret; + } + } + 1; + } + $app->{query} = Apache2::RequestSubclass->new($app->{apache}, + POST_MAX => $app->{cfg}->CGIMaxUpload); + }else{ + require Apache::Request; + $app->{apache} = $param{ApacheObject} || Apache->request; + $app->{query} = Apache::Request->new($app->{apache}, + POST_MAX => $app->{cfg}->CGIMaxUpload); + } } else { require CGI; $CGI::POST_MAX = $app->{cfg}->CGIMaxUpload; @@ -164,9 +233,21 @@ $param{-path} = $app->path; } if ($ENV{MOD_PERL}) { - require Apache::Cookie; - my $cookie = Apache::Cookie->new($app->{apache}, %param); - $cookie->bake; + my $cookie; + if (MP2) { + require Apache2::Cookie; + $cookie = Apache2::Cookie->new($app->{apache}, %param); + if ($param{-expires}) { + # Fix for oddball Apache::Cookie error reported on Windows. + require CGI::Util; + $cookie->expires(CGI::Util::expires($param{-expires}, 'cookie')); + } + $cookie->bake($app->{apache}); + }else{ + require Apache::Cookie; + $cookie = Apache::Cookie->new($app->{apache}, %param); + $cookie->bake; + } } else { require CGI::Cookie; my $cookie = CGI::Cookie->new(%param); @@ -176,7 +257,14 @@ sub cookies { my $app = shift; - my $class = $ENV{MOD_PERL} ? 'Apache::Cookie' : 'CGI::Cookie'; + my $class = 'CGI::Cookie'; + if($ENV{MOD_PERL}){ + if (MP2) { + $class = 'Apache2::Cookie'; + }else{ + $class = 'Apache::Cookie'; + } + } eval "use $class;"; $class->fetch; } @@ -203,8 +291,17 @@ my($body); eval { if ($ENV{MOD_PERL}) { - my $status = $q->parse; - unless ($status == Apache::Constants::OK()) { + my $dead = 0; + if(MP2){ + eval{ $q->parse }; + if ($@) { $dead = 1; } + }else{ + my $status = $q->parse; + unless ($status == Apache::Constants::OK()){ + $dead = 1; + } + } + if ($dead) { die $app->translate('The file you uploaded is too large.') . "\n"; } @@ -276,9 +373,14 @@ if (my $url = $app->{redirect}) { if ($ENV{MOD_PERL}) { - $app->{apache}->header_out(Location => $url); - $app->{apache}->status(Apache::Constants::REDIRECT()); - $app->send_http_header; + if (MP2) { + $app->{apache}->headers_out->add(Location => $url); + $app->{apache}->status(Apache2::Const::REDIRECT); + }else{ + $app->{apache}->header_out(Location => $url); + $app->{apache}->status(Apache::Constants::REDIRECT()); + $app->send_http_header; + } } else { print $q->redirect(-uri => $url, %{ $app->{cgi_headers} }); } @@ -344,8 +446,10 @@ my($key) = @_; my $q = $app->{query}; if ($ENV{MOD_PERL}) { - my $tab = $q->parms; - $tab->unset($key); + unless( MP2 ){ + my $tab = $q->param; + $tab->unset($key); + } } else { $q->delete($key); } @@ -435,7 +539,14 @@ sub remote_ip { my $app = shift; - $ENV{MOD_PERL} ? $app->{apache}->connection->remote_ip : $ENV{REMOTE_ADDR}; + if($ENV{MOD_PERL}) { + if(MP2){ + require Apache2::Connection; + } + $app->{apache}->connection->remote_ip; + } else { + $ENV{REMOTE_ADDR}; + } } sub DESTROY { diff -ur -x '*~' MT-2.661.orig/lib/MT/Builder.pm MT-2.661.mod/lib/MT/Builder.pm --- MT-2.661.orig/lib/MT/Builder.pm 2003-02-12 09:15:03.000000000 +0900 +++ MT-2.661.mod/lib/MT/Builder.pm 2008-04-07 13:09:10.000000000 +0900 @@ -96,6 +96,7 @@ $res .= $t->[1]; } else { my($tokens, $uncompiled); + my $tokens_else; if (exists $cond->{ $t->[0] } && !$cond->{ $t->[0] }) { for my $tok (@{ $t->[2] }) { if ($tok->[0] eq 'Else') { @@ -108,6 +109,7 @@ } else { if ($t->[2] && ref($t->[2]) eq 'ARRAY') { $tokens = [ grep $_->[0] ne 'Else', @{ $t->[2] } ]; + $tokens_else = [ grep $_->[0] eq 'Else', @{ $t->[2] } ]; } $uncompiled = $t->[3]; } @@ -115,6 +117,7 @@ if ($h) { $ctx->stash('tag', $t->[0]); $ctx->stash('tokens', $tokens); + $ctx->stash('tokens_else', $tokens_else); $ctx->stash('uncompiled', $uncompiled); local $t->[1] = $t->[1]; my $out = $h->($ctx, $t->[1], $cond); diff -ur -x '*~' MT-2.661.orig/lib/MT/ConfigMgr.pm MT-2.661.mod/lib/MT/ConfigMgr.pm --- MT-2.661.orig/lib/MT/ConfigMgr.pm 2008-05-09 09:24:27.000000000 +0900 +++ MT-2.661.mod/lib/MT/ConfigMgr.pm 2008-04-09 15:48:32.000000000 +0900 @@ -130,7 +130,7 @@ $/ = "\n"; open FH, $cfg_file or return $class->error(MT->translate( - "Error opening file '[_1]': [_2]", $cfg_file, "$!" )); + "Error opening config file '[_1]': [_2]", $cfg_file, "$!" )); while () { chomp; next if !/\S/ || /^#/; diff -ur -x '*~' MT-2.661.orig/lib/MT/Image.pm MT-2.661.mod/lib/MT/Image.pm --- MT-2.661.orig/lib/MT/Image.pm 2003-02-16 17:18:27.000000000 +0900 +++ MT-2.661.mod/lib/MT/Image.pm 2008-04-07 13:09:11.000000000 +0900 @@ -117,7 +117,7 @@ } elsif (my $blob = $param{Data}) { $image->{data} = $blob; } - my %Types = (jpg => 'jpeg', gif => 'gif'); + my %Types = (jpg => 'jpeg', gif => 'gif', png => 'png'); my $type = $image->{type} = $Types{ lc $param{Type} }; my($out, $err); my $pbm = $image->_find_pbm or return; diff -ur -x '*~' MT-2.661.orig/lib/MT.pm MT-2.661.mod/lib/MT.pm --- MT-2.661.orig/lib/MT.pm 2008-05-09 09:24:27.000000000 +0900 +++ MT-2.661.mod/lib/MT.pm 2008-04-09 15:39:16.000000000 +0900 @@ -59,18 +59,22 @@ my $cfg = $mt->{cfg} = MT::ConfigMgr->instance; my($cfg_file); unless ($cfg_file = $param{Config}) { - for my $f (qw( mt.cfg )) { - $cfg_file = $f, last if -r $f; - } + unless ($cfg_file = $ENV{'MTConfig'}){ + for my $f (qw( mt.cfg )) { + $cfg_file = $f, last if -r $f; + } + } } if ($cfg_file) { $cfg->read_config($cfg_file) or return $mt->error($cfg->errstr); } - if (my $dir = $param{Directory}) { - $mt->{mt_dir} = $dir; - } elsif ($cfg_file) { - $mt->{mt_dir} = dirname($cfg_file) || './'; + unless ($mt->{mt_dir} = $ENV{'MT_DIR'}) { + if (my $dir = $param{Directory}) { + $mt->{mt_dir} = $dir; + } elsif ($cfg_file) { + $mt->{mt_dir} = dirname($cfg_file) || './'; + } } my %default_dirs = ( TemplatePath => 'tmpl', diff -ur -x '*~' MT-2.661.orig/mt-add-notify.cgi MT-2.661.mod/mt-add-notify.cgi --- MT-2.661.orig/mt-add-notify.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-add-notify.cgi 2008-04-09 16:36:14.000000000 +0900 @@ -6,15 +6,30 @@ # $Id: mt-add-notify.cgi,v 1.11 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } use CGI; Only in MT-2.661.mod: mt-bayesian.cgi diff -ur -x '*~' MT-2.661.orig/mt-check.cgi MT-2.661.mod/mt-check.cgi --- MT-2.661.orig/mt-check.cgi 2008-05-09 09:24:27.000000000 +0900 +++ MT-2.661.mod/mt-check.cgi 2008-04-09 16:36:56.000000000 +0900 @@ -8,15 +8,30 @@ local $|=1; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } print "Content-Type: text/html\n\n"; diff -ur -x '*~' MT-2.661.orig/mt-comments.cgi MT-2.661.mod/mt-comments.cgi --- MT-2.661.orig/mt-comments.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-comments.cgi 2008-04-09 16:37:23.000000000 +0900 @@ -6,15 +6,30 @@ # $Id: mt-comments.cgi,v 1.34 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } eval { diff -ur -x '*~' MT-2.661.orig/mt-search.cgi MT-2.661.mod/mt-search.cgi --- MT-2.661.orig/mt-search.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-search.cgi 2008-04-09 16:38:17.000000000 +0900 @@ -8,15 +8,30 @@ # $Id: mt-search.cgi,v 1.2 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } eval { diff -ur -x '*~' MT-2.661.orig/mt-send-entry.cgi MT-2.661.mod/mt-send-entry.cgi --- MT-2.661.orig/mt-send-entry.cgi 2004-01-15 07:02:54.000000000 +0900 +++ MT-2.661.mod/mt-send-entry.cgi 2008-04-09 16:38:41.000000000 +0900 @@ -6,15 +6,30 @@ # $Id: mt-send-entry.cgi,v 1.3.2.1.4.1 2004/01/14 22:02:54 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } eval { diff -ur -x '*~' MT-2.661.orig/mt-tb.cgi MT-2.661.mod/mt-tb.cgi --- MT-2.661.orig/mt-tb.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-tb.cgi 2008-04-09 16:39:02.000000000 +0900 @@ -6,19 +6,35 @@ # $Id: mt-tb.cgi,v 1.3 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } eval { require MT::App::Trackback; + my $app = MT::App::Trackback->new( Config => $MT_DIR . 'mt.cfg', Directory => $MT_DIR ) or die MT::App::Trackback->errstr; diff -ur -x '*~' MT-2.661.orig/mt-view.cgi MT-2.661.mod/mt-view.cgi --- MT-2.661.orig/mt-view.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-view.cgi 2008-04-09 16:39:23.000000000 +0900 @@ -6,15 +6,30 @@ # $Id: mt-view.cgi,v 1.2 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ + BEGIN { + $MT_DIR = &boot_strap; + } +}else{ + $MT_DIR = &boot_strap; } eval { diff -ur -x '*~' MT-2.661.orig/mt-xmlrpc.cgi MT-2.661.mod/mt-xmlrpc.cgi --- MT-2.661.orig/mt-xmlrpc.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt-xmlrpc.cgi 2008-04-09 16:34:56.000000000 +0900 @@ -6,15 +6,30 @@ # $Id: mt-xmlrpc.cgi,v 1.25 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ +BEGIN { + $MT_DIR = &boot_strap; +} +}else{ + $MT_DIR = &boot_strap; } use XMLRPC::Transport::HTTP; diff -ur -x '*~' MT-2.661.orig/mt.cgi MT-2.661.mod/mt.cgi --- MT-2.661.orig/mt.cgi 2003-02-12 10:05:31.000000000 +0900 +++ MT-2.661.mod/mt.cgi 2008-04-09 16:31:24.000000000 +0900 @@ -6,14 +6,29 @@ # $Id: mt.cgi,v 1.18 2003/02/12 01:05:31 btrott Exp $ use strict; -my($MT_DIR); -BEGIN { - if ($0 =~ m!(.*[/\\])!) { - $MT_DIR = $1; - } else { - $MT_DIR = './'; +use constant MP2 => (exists $ENV{MOD_PERL_API_VERSION} and + $ENV{MOD_PERL_API_VERSION} >= 1.99 ); + +sub boot_strap { + my $MT_DIR; + unless ($MT_DIR = $ENV{'MT_DIR'}){ + if ($0 =~ m!(.*[/\\])!) { + $MT_DIR = $1; + } else { + $MT_DIR = './'; + } } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; + $MT_DIR; +} + +my($MT_DIR); +unless(MP2){ +BEGIN { + $MT_DIR = &boot_strap; +} +}else{ + $MT_DIR = &boot_strap; } eval {