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 */