cvsuser     04/11/18 11:47:10

  Modified:    lib      Qpsmtpd.pm
               lib/Qpsmtpd Plugin.pm
  Log:
  Move plugin compile code into the Plugin module
  
  Revision  Changes    Path
  1.45      +1 -46     qpsmtpd/lib/Qpsmtpd.pm
  
  Index: Qpsmtpd.pm
  ===================================================================
  RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd.pm,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- Qpsmtpd.pm        19 Sep 2004 18:49:05 -0000      1.44
  +++ Qpsmtpd.pm        18 Nov 2004 19:47:09 -0000      1.45
  @@ -121,51 +121,6 @@
     return wantarray ? @config : $config[0];
   }
   
  -sub _compile {
  -    my ($self, $plugin, $package, $file) = @_;
  -    
  -    my $sub;
  -    open F, $file or die "could not open $file: $!";
  -    { 
  -      local $/ = undef;
  -      $sub = <F>;
  -    }
  -    close F;
  -
  -    my $line = "\n#line 1 $file\n";
  -
  -    if ($self->{_test_mode}) {
  -        if (open(F, "t/plugin_tests/$plugin")) {
  -            local $/ = undef;
  -            $sub .= "#line 1 t/plugin_tests/$plugin\n";
  -            $sub .= <F>;
  -            close F;
  -        }
  -    }
  -
  -    my $eval = join(
  -                 "\n",
  -                 "package $package;",
  -                 'use Qpsmtpd::Constants;',
  -                 "require Qpsmtpd::Plugin;",
  -                 'use vars qw(@ISA);',
  -                 '@ISA = qw(Qpsmtpd::Plugin);',
  -                 ($self->{_test_mode} ? 'use Test::More;' : ''),
  -                 "sub plugin_name { qq[$plugin] }",
  -                 $line,
  -                 $sub,
  -                 "\n", # last line comment without newline?
  -                );
  -
  -    #warn "eval: $eval";
  -
  -    $eval =~ m/(.*)/s;
  -    $eval = $1;
  -
  -    eval $eval;
  -    die "eval $@" if $@;
  -}
  -
   sub load_plugins {
     my $self = shift;
     
  @@ -230,7 +185,7 @@
       my $package = "Qpsmtpd::Plugin::$plugin_name";
   
       # don't reload plugins if they are already loaded
  -    $self->_compile($plugin_name, $package, "$dir/$plugin") unless
  +    Qpsmtpd::Plugin->compile($plugin_name, $package, "$dir/$plugin", 
$self->{_test_mode}) unless
           defined &{"${package}::register"};
       
       my $plug = $package->new();
  
  
  
  1.14      +45 -0     qpsmtpd/lib/Qpsmtpd/Plugin.pm
  
  Index: Plugin.pm
  ===================================================================
  RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/Plugin.pm,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Plugin.pm 19 Sep 2004 18:49:05 -0000      1.13
  +++ Plugin.pm 18 Nov 2004 19:47:10 -0000      1.14
  @@ -75,4 +75,49 @@
     push @{"${currentPackage}::ISA"}, $newPackage;
   }
   
  +sub compile {
  +    my ($class, $plugin, $package, $file, $test_mode) = @_;
  +    
  +    my $sub;
  +    open F, $file or die "could not open $file: $!";
  +    { 
  +      local $/ = undef;
  +      $sub = <F>;
  +    }
  +    close F;
  +
  +    my $line = "\n#line 1 $file\n";
  +
  +    if ($test_mode) {
  +        if (open(F, "t/plugin_tests/$plugin")) {
  +            local $/ = undef;
  +            $sub .= "#line 1 t/plugin_tests/$plugin\n";
  +            $sub .= <F>;
  +            close F;
  +        }
  +    }
  +
  +    my $eval = join(
  +                 "\n",
  +                 "package $package;",
  +                 'use Qpsmtpd::Constants;',
  +                 "require Qpsmtpd::Plugin;",
  +                 'use vars qw(@ISA);',
  +                 '@ISA = qw(Qpsmtpd::Plugin);',
  +                 ($test_mode ? 'use Test::More;' : ''),
  +                 "sub plugin_name { qq[$plugin] }",
  +                 $line,
  +                 $sub,
  +                 "\n", # last line comment without newline?
  +                );
  +
  +    #warn "eval: $eval";
  +
  +    $eval =~ m/(.*)/s;
  +    $eval = $1;
  +
  +    eval $eval;
  +    die "eval $@" if $@;
  +}
  +
   1;
  
  
  

Reply via email to