dougm       01/03/15 22:32:15

  Modified:    lib/ModPerl Code.pm
               src/modules/perl modperl_callback.c modperl_handler.c
                        modperl_handler.h
  Log:
  move some code into modperl_handler_lookup_handlers() so it can be reused for 
{get,set,push}_handlers
  
  Revision  Changes    Path
  1.49      +1 -1      modperl-2.0/lib/ModPerl/Code.pm
  
  Index: Code.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- Code.pm   2001/03/16 05:52:28     1.48
  +++ Code.pm   2001/03/16 06:32:14     1.49
  @@ -113,7 +113,7 @@
       my($self, $h_add, $c_add) = @_;
       local $" = ",\n";
       while (my($class, $h) = each %{ $self->{handler_index_desc} }) {
  -        my $func = canon_func($class, 'handler', 'desc');
  +        my $func = canon_func('handler', 'desc', $class);
           my $array = join '_', 'MP', $func;
           my $proto = "const char *$func(int idx)";
   
  
  
  
  1.32      +2 -22     modperl-2.0/src/modules/perl/modperl_callback.c
  
  Index: modperl_callback.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- modperl_callback.c        2001/03/16 05:08:15     1.31
  +++ modperl_callback.c        2001/03/16 06:32:15     1.32
  @@ -114,28 +114,8 @@
           return DECLINED;
       }
   
  -    switch (type) {
  -      case MP_HANDLER_TYPE_PER_DIR:
  -        av = dcfg->handlers[idx];
  -        MP_TRACE_a_do(desc = modperl_per_dir_handler_desc(idx));
  -        break;
  -      case MP_HANDLER_TYPE_PER_SRV:
  -        av = scfg->handlers[idx];
  -        MP_TRACE_a_do(desc = modperl_per_srv_handler_desc(idx));
  -        break;
  -      case MP_HANDLER_TYPE_CONNECTION:
  -        av = scfg->connection_cfg->handlers[idx];
  -        MP_TRACE_a_do(desc = modperl_connection_handler_desc(idx));
  -        break;
  -      case MP_HANDLER_TYPE_FILES:
  -        av = scfg->files_cfg->handlers[idx];
  -        MP_TRACE_a_do(desc = modperl_files_handler_desc(idx));
  -        break;
  -      case MP_HANDLER_TYPE_PROCESS:
  -        av = scfg->process_cfg->handlers[idx];
  -        MP_TRACE_a_do(desc = modperl_process_handler_desc(idx));
  -        break;
  -    };
  +    av = modperl_handler_lookup_handlers(dcfg, scfg, NULL,
  +                                         type, idx, &desc);
   
       if (!av) {
           MP_TRACE_h(MP_FUNC, "no %s handlers configured (%s)\n",
  
  
  
  1.2       +37 -0     modperl-2.0/src/modules/perl/modperl_handler.c
  
  Index: modperl_handler.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_handler.c 2001/03/16 04:58:59     1.1
  +++ modperl_handler.c 2001/03/16 06:32:15     1.2
  @@ -60,3 +60,40 @@
   
       va_end(args);
   }
  +
  +#define set_desc(dtype) \
  +    MP_TRACE_a_do(if (desc) *desc = modperl_handler_desc_##dtype(idx))
  +
  +MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg,
  +                                      modperl_config_srv_t *scfg,
  +                                      modperl_config_req_t *rcfg,
  +                                      int type, int idx,
  +                                      const char **desc)
  +{
  +    MpAV *av = NULL;
  +
  +    switch (type) {
  +      case MP_HANDLER_TYPE_PER_DIR:
  +        av = dcfg->handlers[idx];
  +        set_desc(per_dir);
  +        break;
  +      case MP_HANDLER_TYPE_PER_SRV:
  +        av = scfg->handlers[idx];
  +        set_desc(per_srv);
  +        break;
  +      case MP_HANDLER_TYPE_CONNECTION:
  +        av = scfg->connection_cfg->handlers[idx];
  +        set_desc(connection);
  +        break;
  +      case MP_HANDLER_TYPE_FILES:
  +        av = scfg->files_cfg->handlers[idx];
  +        set_desc(files);
  +        break;
  +      case MP_HANDLER_TYPE_PROCESS:
  +        av = scfg->process_cfg->handlers[idx];
  +        set_desc(process);
  +        break;
  +    };
  +
  +    return av;
  +}
  
  
  
  1.2       +5 -0      modperl-2.0/src/modules/perl/modperl_handler.h
  
  Index: modperl_handler.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_handler.h 2001/03/16 04:58:59     1.1
  +++ modperl_handler.h 2001/03/16 06:32:15     1.2
  @@ -8,5 +8,10 @@
   
   void modperl_handler_make_args(pTHX_ AV **avp, ...);
   
  +MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg,
  +                                      modperl_config_srv_t *scfg,
  +                                      modperl_config_req_t *rcfg,
  +                                      int type, int idx,
  +                                      const char **desc);
   
   #endif /* MODPERL_HANDLER_H */
  
  
  

Reply via email to