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