dougm       01/03/04 19:51:16

  Added:       xs/APR/APR APR.pm APR.xs Makefile.PL apr-test
  Log:
  module for using APR outside of Apache
  
  Revision  Changes    Path
  1.1                  modperl-2.0/xs/APR/APR/APR.pm
  
  Index: APR.pm
  ===================================================================
  package APR;
  
  use DynaLoader ();
  our $VERSION = '0.01';
  our @ISA = qw(DynaLoader);
  
  #dlopen("APR.so", RTDL_GLOBAL); so we only need to link libapr.a once
  sub dl_load_flags { 0x01 }
  
  __PACKAGE__->bootstrap($VERSION);
  
  1;
  __END__
  
  
  
  1.1                  modperl-2.0/xs/APR/APR/APR.xs
  
  Index: APR.xs
  ===================================================================
  #include "mod_perl.h"
  
  MODULE = APR    PACKAGE = APR
  
  BOOT:
      file = file; /* -Wall */
      apr_initialize();
  
  void
  END()
  
      CODE:
      apr_terminate();
  
  
  
  1.1                  modperl-2.0/xs/APR/APR/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  use ExtUtils::MakeMaker;
  
  use lib qw(../lib);
  use ModPerl::MM ();
  use Config;
  
  my $root = ModPerl::MM::build_config('dir') || "";
  my $srclib = "$root/srclib";
  my $apr = "$srclib/apr";
  
  my @libs;
  if ($root) {
      @libs = join ' ',
        "-L$apr/.libs -lapr",
          "-L$srclib/apr-util/.libs -laprutil",
            "-L$srclib/expat-lite/.libs -lexpat",
              "-L$apr/shmem/unix/mm/.libs -lmm";
  }
  
  ModPerl::MM::WriteMakefile(
      'NAME'    => 'APR',
      'VERSION_FROM' => 'APR.pm',
      'LIBS' => \@libs,
  );
  
  sub MY::const_loadlibs {
      my $self = shift;
  
      my $string = $self->MM::const_loadlibs;
      return $string unless $Config{gccversion}; #XXX
  
      my $wa = '-Wl,--whole-archive';
      my $nwa = '-Wl,--no-whole-archive';
  
      $string =~ s/(LDLOADLIBS\s*=\s*)(.*)/$1$wa $2 $nwa/;
      $string;
  }
  
  
  
  1.1                  modperl-2.0/xs/APR/APR/apr-test
  
  Index: apr-test
  ===================================================================
  #!perl
  
  use Test;
  
  plan tests => 10;
  
  use blib;
  use warnings FATAL => 'all';
  use strict;
  use APR ();
  use APR::UUID ();
  use APR::Pool ();
  use APR::Lock ();
  use APR::Lib ();
  use APR::Base64 ();
  use APR::Signal ();
  
  my $status;
  
  my $uuid = APR::UUID->new->format;
  
  ok $uuid;
  
  my $p = APR::Pool->new;
  
  my $num_bytes = $p->num_bytes;
  
  ok $num_bytes;
  
  #print "begin bytes=$num_bytes\n";
  
  ok $p;
  
  my $lock = APR::Lock->new($p, 0, 1, "lock.file");
  $status = $lock->acquire and die APR::strerror($status);
  $status = $lock->release and die APR::strerror($status);
  
  $status = APR::password_validate("one", "two");
  my $str = APR::strerror($status);
  ok $str eq "passwords do not match";
  
  ok $status;
  
  my $bytes = APR::generate_random_bytes(10);
  
  ok length($bytes) == 10;
  
  my $encoded = APR::Base64::encode($bytes);
  
  #print "encoded=$encoded\n";
  
  ok $encoded;
  
  my $decoded = APR::Base64::decode($encoded);
  
  ok $decoded eq $bytes;
  
  $p->clear;
  
  while ($num_bytes == $p->num_bytes) {
      APR::Lock->new($p);
  }
  
  my $cur_num_bytes = $p->num_bytes;
  
  #print "end bytes=$cur_num_bytes\n";
  
  ok (($cur_num_bytes / 2) == $num_bytes);
  
  for (1..9) {
      my $desc = APR::Signal::get_description($_);
      #print "$_ => $desc\n";
  }
  
  ok 1;
  
  $p->destroy; #XXX
  
  
  

Reply via email to