stas        2004/01/09 18:52:20

  Modified:    src/modules/perl modperl_config.c modperl_config.h
               xs/Apache/RequestUtil Apache__RequestUtil.h
               xs/Apache/ServerUtil Apache__ServerUtil.h
               xs/maps  modperl_functions.map
               xs/tables/current/ModPerl FunctionTable.pm
               .        Changes
  Added:       t/modperl perl_options.t
               t/response/TestModperl perl_options.pm
  Log:
  added ($r|$s)->is_perl_option_enabled($option_name), to test for
  PerlOptions + tests
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/modperl/perl_options.t
  
  Index: perl_options.t
  ===================================================================
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  use Apache::TestRequest;
  
  my $module = "TestModperl::perl_options";
  Apache::TestRequest::module($module);
  my $hostport = Apache::TestRequest::hostport(Apache::Test::config());
  my $location = "http://$hostport/$module";;
  
  print GET_BODY_ASSERT "http://$hostport/$module";;
  
  
  
  1.1                  modperl-2.0/t/response/TestModperl/perl_options.pm
  
  Index: perl_options.pm
  ===================================================================
  package TestModperl::perl_options;
  
  # test whether PerlOptions options are enabled
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::RequestRec ();
  use Apache::RequestIO ();
  use Apache::RequestUtil ();
  use Apache::ServerUtil ();
  
  use Apache::Test;
  use Apache::TestUtil;
  
  use Apache::Const -compile => qw(OK);
  
  my @srv_plus  = qw(ChildInit ChildExit Fixup);
  my @srv_minus = qw(PreConnection ProcessConnection Autoload
                     Log InputFilter OutputFilter);
  my @dir_plus  = qw(ParseHeaders MergeHandlers);
  my @dir_minus = qw(SetupEnv GlobalRequest);
  
  sub handler {
      my $r = shift;
  
      plan $r, tests => @srv_plus + @srv_minus + @dir_plus + @dir_minus;
      my $s = $r->server;
  
      ok t_cmp(1, $s->is_perl_option_enabled($_),
               "PerlOptions +$_") for @srv_plus;
  
      ok t_cmp(0, $s->is_perl_option_enabled($_),
               "PerlOptions -$_") for @srv_minus;
  
      ok t_cmp(1, $r->is_perl_option_enabled($_),
               "PerlOptions +$_") for @dir_plus;
  
      ok t_cmp(0, $r->is_perl_option_enabled($_),
               "PerlOptions -$_") for @dir_minus;
  
      return Apache::OK;
  }
  
  1;
  __DATA__
  <VirtualHost TestModperl::perl_options>
      PerlOptions -PreConnection -ProcessConnection
      PerlOptions -Autoload -Log -InputFilter -OutputFilter
      PerlOptions +ChildInit +ChildExit
      PerlModule TestModperl::perl_options
      PerlOptions +ParseHeaders
      <Location /TestModperl::perl_options>
          SetHandler modperl
          PerlOptions -GlobalRequest -SetupEnv
          PerlOptions +MergeHandlers
          PerlResponseHandler TestModperl::perl_options
      </Location>
  </VirtualHost>
  
  
  
  
  1.74      +35 -0     modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -u -r1.73 -r1.74
  --- modperl_config.c  9 Jan 2004 04:59:18 -0000       1.73
  +++ modperl_config.c  10 Jan 2004 02:52:20 -0000      1.74
  @@ -489,3 +489,38 @@
   
       return NULL;
   }
  +
  +
  +/* if r!=NULL check for dir PerlOptions, otherwise check for server
  + * PerlOptions, (s must be always set)
  + */
  +int modperl_config_is_perl_option_enabled(pTHX_ request_rec *r,
  +                                          server_rec *s, const char *name)
  +{
  +    U32 flag;
  +    MP_dSCFG(s);
  +
  +    /* XXX: should we test whether perl is disabled for this server? */
  +    /*  if (!MpSrvENABLE(scfg)) { */
  +    /*      return 0;             */
  +    /*  }                         */
  +
  +    if (r) {
  +        if ((flag = modperl_flags_lookup_dir(name))) {
  +            MP_dDCFG;
  +            return MpDirFLAGS(dcfg) & flag ? 1 : 0;
  +        }
  +        else {
  +            Perl_croak(aTHX_ "PerlOptions %s is not a directory option", name);
  +        }
  +    }
  +    else {
  +        if ((flag = modperl_flags_lookup_srv(name))) {
  +            return MpSrvFLAGS(scfg) & flag ? 1 : 0;
  +        }
  +        else {
  +            Perl_croak(aTHX_ "PerlOptions %s is not a server option", name);
  +        }
  +    }
  +
  +}
  
  
  
  1.32      +5 -0      modperl-2.0/src/modules/perl/modperl_config.h
  
  Index: modperl_config.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -u -r1.31 -r1.32
  --- modperl_config.h  5 Sep 2002 01:47:39 -0000       1.31
  +++ modperl_config.h  10 Jan 2004 02:52:20 -0000      1.32
  @@ -122,4 +122,9 @@
                                             SV *lines,
                                             char *path,
                                             int override);
  +
  +int modperl_config_is_perl_option_enabled(pTHX_ request_rec *r,
  +                                          server_rec *s, const char *name);
  +
  +
   #endif /* MODPERL_CONFIG_H */
  
  
  
  1.19      +7 -0      modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h
  
  Index: Apache__RequestUtil.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -u -r1.18 -r1.19
  --- Apache__RequestUtil.h     30 Aug 2003 02:33:26 -0000      1.18
  +++ Apache__RequestUtil.h     10 Jan 2004 02:52:20 -0000      1.19
  @@ -248,3 +248,10 @@
       return svh.sv;
   }
   
  +static MP_INLINE
  +int mpxs_Apache__RequestRec_is_perl_option_enabled(pTHX_ request_rec *r,
  +                                                   const char *name)
  +{
  +    return modperl_config_is_perl_option_enabled(aTHX_ r, r->server, name);
  +}
  +
  
  
  
  1.9       +7 -0      modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h
  
  Index: Apache__ServerUtil.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -u -r1.8 -r1.9
  --- Apache__ServerUtil.h      19 Nov 2001 23:46:48 -0000      1.8
  +++ Apache__ServerUtil.h      10 Jan 2004 02:52:20 -0000      1.9
  @@ -51,6 +51,13 @@
       return ap_server_root_relative(p, fname);
   }
   
  +static MP_INLINE
  +int mpxs_Apache__Server_is_perl_option_enabled(pTHX_ server_rec *s,
  +                                               const char *name)
  +{
  +    return modperl_config_is_perl_option_enabled(aTHX_ NULL, s, name);
  +}
  +
   static void mpxs_Apache__ServerUtil_BOOT(pTHX)
   {
       newCONSTSUB(PL_defstash, "Apache::server_root",
  
  
  
  1.64      +2 -0      modperl-2.0/xs/maps/modperl_functions.map
  
  Index: modperl_functions.map
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -u -r1.63 -r1.64
  --- modperl_functions.map     23 Dec 2003 03:02:34 -0000      1.63
  +++ modperl_functions.map     10 Jan 2004 02:52:20 -0000      1.64
  @@ -21,6 +21,7 @@
    mpxs_Apache__RequestRec_push_handlers
    mpxs_Apache__RequestRec_set_handlers
    mpxs_Apache__RequestRec_get_handlers
  + mpxs_Apache__RequestRec_is_perl_option_enabled
    mpxs_Apache__RequestRec_location
    mpxs_Apache__RequestRec_as_string
    mpxs_Apache__RequestRec_pnotes | | r, key=Nullsv, val=Nullsv
  @@ -67,6 +68,7 @@
    mpxs_Apache__Server_push_handlers
    mpxs_Apache__Server_set_handlers
    mpxs_Apache__Server_get_handlers
  + mpxs_Apache__Server_is_perl_option_enabled
    modperl_config_insert_server | | | add_config
   
   PACKAGE=Apache::Server
  
  
  
  1.135     +58 -0     modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
  
  Index: FunctionTable.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
  retrieving revision 1.134
  retrieving revision 1.135
  diff -u -u -r1.134 -r1.135
  --- FunctionTable.pm  23 Dec 2003 03:02:34 -0000      1.134
  +++ FunctionTable.pm  10 Jan 2004 02:52:20 -0000      1.135
  @@ -1369,6 +1369,28 @@
       ]
     },
     {
  +    'return_type' => 'int',
  +    'name' => 'modperl_config_is_perl_option_enabled',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'request_rec *',
  +        'name' => 's'
  +      },
  +      {
  +        'type' => 'server_rec *',
  +        'name' => 's'
  +      },
  +      {
  +        'type' => 'const char *',
  +        'name' => 'name'
  +      }
  +    ]
  +  },
  +  {
       'return_type' => 'apr_status_t',
       'name' => 'modperl_config_req_cleanup',
       'args' => [
  @@ -5562,6 +5584,24 @@
       ]
     },
     {
  +    'return_type' => 'int',
  +    'name' => 'mpxs_Apache__RequestRec_is_perl_option_enabled',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'request_rec *',
  +        'name' => 'r'
  +      },
  +      {
  +        'type' => 'const char *',
  +        'name' => 'name'
  +      }
  +    ]
  +  },
  +  {
       'return_type' => 'char *',
       'name' => 'mpxs_Apache__RequestRec_location',
       'args' => [
  @@ -5977,6 +6017,24 @@
     {
       'return_type' => 'SV *',
       'name' => 'mpxs_Apache__Server_get_handlers',
  +    'args' => [
  +      {
  +        'type' => 'PerlInterpreter *',
  +        'name' => 'my_perl'
  +      },
  +      {
  +        'type' => 'server_rec *',
  +        'name' => 's'
  +      },
  +      {
  +        'type' => 'const char *',
  +        'name' => 'name'
  +      }
  +    ]
  +  },
  +  {
  +    'return_type' => 'int',
  +    'name' => 'mpxs_Apache__Server_is_perl_option_enabled',
       'args' => [
         {
           'type' => 'PerlInterpreter *',
  
  
  
  1.298     +3 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.297
  retrieving revision 1.298
  diff -u -u -r1.297 -r1.298
  --- Changes   3 Jan 2004 01:17:33 -0000       1.297
  +++ Changes   10 Jan 2004 02:52:20 -0000      1.298
  @@ -12,6 +12,9 @@
   
   =item 1.99_13-dev
   
  +added ($r|$s)->is_perl_option_enabled($option_name), to test for
  +PerlOptions + tests [Stas]
  +
   On Solaris add a workaround for xs/APR/APR/Makefile.PL to build
   APR.so, correctly linked against apr and apr-util libs, by addding the
   missing -R paths corresponding to -L flags. EU::MM was adding them via
  
  
  

Reply via email to