Hi,

This patch does the following:

o add an MP2 constant to check for MP2 throughout
o up the version from 0.04 to 0.05
o accounts for the 
s/Apache->request/Apache2::RequestUtil->request()->location()/
  mp2 RC5+ API rename
o in mp2, Apache::Status is called Apache2::Status
o Clone Apache::Status::noh_fileline as Apache2::Status::noh_fileline
  a. $r->args() doesn't work as in MP1.  This is in libapreq2, but we can use
     CGI.pm as its in PERL core.
  b. s/$r->send_http_header()/$r->content_type()/
o fix the Apache2::Status menu entry

Checked against:
        perl 5.8.7
        apache2 svn prefork
        mp2 SVN
        FreeBSD 5.4-RELEASE

P.S.
  Once you get this stuff working, its freaking cool!

--- TerseSize.pm        Sat Mar 31 16:07:44 2001
+++ TerseSize.pm.new    Sun Aug 21 05:53:05 2005
@@ -9,6 +9,7 @@

 use strict;
 use constant IS_MODPERL => $ENV{MOD_PERL};
+use constant MP2        => $ENV{MOD_PERL_API_VERSION} == 2 ? 1 : 0;

 use B ();
 use B::Asmdata qw(@specialsv_name);
@@ -16,7 +17,7 @@

 {
     no strict;
-    $VERSION = '0.04';
+    $VERSION = '0.05';
 }

 my $opcount;
@@ -315,7 +316,7 @@
         my $window = sprintf "offset=%d&len=%d", $line - 100, $line + 100;
         my $args = sprintf "noh_fileline=1&filename=%s&line=%d&$window",
         cop_file($curcop), $line;
-        my $uri = Apache->request->location;
+        my $uri = MP2 ? Apache2::RequestUtil->request()->location() : 
Apache->request->location;
         $linestr = qq(<a name="$line" target=top 
href="$uri?$args$anchor">$linestr</a>);
     }

@@ -515,6 +516,69 @@
     0;
 }

+sub Apache2::Status::noh_fileline {
+    my $r = shift;
+    my $args = $r->args;
+
+    require CGI;
+    my $CGI = CGI->new($args);
+    my %params = map { $_ => $CGI->param($_) } $CGI->param();
+
+    my $offset = $params{offset} || 0;
+    my $len = $params{len} || 0;
+
+    local *FH;
+    my $filename = $params{filename};
+    $r->content_type('text/html');
+
+    unless (Apache2::Status::status_config($r, "StatusTerseSize")) {
+        print "sorry, StatusTerseSize not enabled\n";
+        return 0;
+    }
+
+    unless (exists $main::{"_<$filename"}) {
+        #useithreads doesnt gv_fetchfile()
+        my $in_inc = 0;
+        for (keys %INC) {
+            if ($INC{$_} eq $filename) {
+                $in_inc = 1;
+                $main::{"_<$filename"} = $_;
+                last;
+            }
+        }
+        unless ($in_inc) {
+            print "sorry, '$filename' is not a file used by Perl\n";
+            return 0;
+        }
+    }
+
+    my $i = 0;
+    $r->print('<pre>');
+    if ($offset > 0) {
+        printf "%4d..%d [...]\n", 1, $offset-1;
+    }
+    open FH, $filename or die $!;
+    while (<FH>) {
+        $i++;
+        next if $len > 0 and $i > $len;
+        next if $offset > 0 and $i < $offset;
+        chomp;
+        s/^\t/        /; #indent proper
+        my $lineno = sprintf "%4d", $i;
+        B::Size::escape_html(\$_);
+        my $line = ($i == $params{line}) ?
+          \qq(<font color="#FF0000">$_</font>) : \$_;
+        print qq($lineno: <a name=$i>$$line</a>\n);
+
+    }
+    if ($len > 0 and $i > $len) {
+        printf "%4d..%d [...]\n", $len+1, $i;
+    }
+    close FH;
+
+    0;
+}
+
 sub max {
     my($cur, $maybe) = @_;
     $maybe > $cur ? $maybe : $cur;
@@ -547,8 +611,15 @@
 sub status_memory_usage {
     my($r, $q) = @_;

-    unless (Apache::Status::status_config($r, "StatusTerseSize")) {
-        return ["StatusTerseSize is not enabled"];
+    if (MP2) {
+        unless (Apache2::Status::status_config($r, "StatusTerseSize")) {
+            return ["StatusTerseSize is not enabled"];
+        }
+    }
+    else {
+        unless (Apache::Status::status_config($r, "StatusTerseSize")) {
+            return ["StatusTerseSize is not enabled"];
+        }
     }

     unless ($r->dir_config("StatusTerseSizeMainSummary")) {
@@ -578,10 +649,18 @@
     [EMAIL PROTECTED];
 }

-Apache::Status->menu_item(
-    'status_memory_usage' => "Memory Usage",
-    \&status_memory_usage,
-) if IS_MODPERL and Apache->module("Apache::Status");
+if (MP2) {
+    Apache2::Status->menu_item(
+        'status_memory_usage' => "Memory Usage",
+        \&status_memory_usage,
+    );
+}
+elsif (IS_MODPERL and Apache->module("Apache::Status")) {
+    Apache::Status->menu_item(
+        'status_memory_usage' => "Memory Usage",
+        \&status_memory_usage,
+    );
+}

 1;


--
END
------------------------------------------------------------
    What doesn't kill us can only make us stronger.
                Nothing is impossible.
                                
Philip M. Gollucci ([EMAIL PROTECTED]) 301.254.5198
Consultant / http://p6m7g8.net/Resume/
Senior Developer / Liquidity Services, Inc.
  http://www.liquidityservicesinc.com
       http://www.liquidation.com
       http://www.uksurplus.com
       http://www.govliquidation.com
       http://www.gowholesale.com

Reply via email to