dougm 01/03/15 23:30:25 Modified: lib/ModPerl Code.pm src/modules/perl modperl_config.c modperl_filter.c modperl_handler.c modperl_mgv.c modperl_types.h Log: no need for modperl_{files,process,connection}_config_t Revision Changes Path 1.50 +6 -4 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.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- Code.pm 2001/03/16 06:32:14 1.49 +++ Code.pm 2001/03/16 07:30:21 1.50 @@ -71,8 +71,7 @@ ); for my $class (qw(Process Connection Files)) { - my $lc_class = lc $class; - $directive_proto{$class}->{cfg}->{name} = "scfg->${lc_class}_cfg"; + $directive_proto{$class}->{cfg}->{name} = 'scfg'; $directive_proto{$class}->{cfg}->{get} = $scfg_get; for (qw(args scope)) { @@ -82,6 +81,9 @@ while (my($k,$v) = each %directive_proto) { $directive_proto{$k}->{ret} = 'const char *'; + my $handlers = join '_', 'handlers', canon_lc($k); + $directive_proto{$k}->{handlers} = + join '->', $directive_proto{$k}->{cfg}->{name}, $handlers; } #XXX: allow disabling of PerDir hooks on a PerDir basis @@ -144,7 +146,7 @@ my $handler_type = canon_define('HANDLER_TYPE', $class); print $h_fh "\n#define ", - canon_define($class, 'num_handlers'), " $n\n\n"; + canon_define('HANDLER_NUM', $class), " $n\n\n"; print $h_fh "#define $handler_type $type\n\n"; @@ -271,7 +273,7 @@ my $protostr = canon_proto($prototype, $name); my $flag = 'MpSrv' . canon_uc($h); my $ix = $self->{handler_index}->{$class}->[$i++]; - my $av = "$prototype->{cfg}->{name}->handlers[$ix]"; + my $av = "$prototype->{handlers} [$ix]"; print $h_fh "$protostr;\n"; 1.27 +13 -22 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.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- modperl_config.c 2001/03/16 05:52:29 1.26 +++ modperl_config.c 2001/03/16 07:30:22 1.27 @@ -32,8 +32,8 @@ { /* XXX: should do a proper merge of the arrays */ /* XXX: and check if Perl*Handler is disabled */ int i; - for (i=0; i<MP_PER_DIR_NUM_HANDLERS; i++) { - merge_item(handlers[i]); + for (i=0; i < MP_HANDLER_NUM_PER_DIR; i++) { + merge_item(handlers_per_dir[i]); } } @@ -63,21 +63,6 @@ modperl_config_srv_argv_push((char *)ap_server_argv0); -#ifdef MP_CONNECTION_NUM_HANDLERS - scfg->connection_cfg = (modperl_connection_config_t *) - apr_pcalloc(p, sizeof(*scfg->connection_cfg)); -#endif - -#ifdef MP_FILES_NUM_HANDLERS - scfg->files_cfg = (modperl_files_config_t *) - apr_pcalloc(p, sizeof(*scfg->files_cfg)); -#endif - -#ifdef MP_PROCESS_NUM_HANDLERS - scfg->process_cfg = (modperl_process_config_t *) - apr_pcalloc(p, sizeof(*scfg->process_cfg)); -#endif - MP_TRACE_d(MP_FUNC, "0x%lx\n", (unsigned long)scfg); return scfg; @@ -161,15 +146,21 @@ #endif merge_item(argv); - merge_item(files_cfg); - merge_item(process_cfg); - merge_item(connection_cfg); { /* XXX: should do a proper merge of the arrays */ /* XXX: and check if Perl*Handler is disabled */ int i; - for (i=0; i<MP_PER_SRV_NUM_HANDLERS; i++) { - merge_item(handlers[i]); + for (i=0; i < MP_HANDLER_NUM_PER_SRV; i++) { + merge_item(handlers_per_srv[i]); + } + for (i=0; i < MP_HANDLER_NUM_FILES; i++) { + merge_item(handlers_files[i]); + } + for (i=0; i < MP_HANDLER_NUM_PROCESS; i++) { + merge_item(handlers_process[i]); + } + for (i=0; i < MP_HANDLER_NUM_CONNECTION; i++) { + merge_item(handlers_connection[i]); } } 1.10 +1 -1 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- modperl_filter.c 2001/03/15 05:39:07 1.9 +++ modperl_filter.c 2001/03/16 07:30:22 1.10 @@ -336,7 +336,7 @@ MP_dDCFG; MpAV *av; - if ((av = dcfg->handlers[MP_OUTPUT_FILTER_HANDLER])) { + if ((av = dcfg->handlers_per_dir[MP_OUTPUT_FILTER_HANDLER])) { modperl_handler_t **handlers = (modperl_handler_t **)av->elts; int i; 1.4 +5 -5 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- modperl_handler.c 2001/03/16 06:41:46 1.3 +++ modperl_handler.c 2001/03/16 07:30:22 1.4 @@ -74,23 +74,23 @@ switch (type) { case MP_HANDLER_TYPE_PER_DIR: - av = dcfg->handlers[idx]; + av = dcfg->handlers_per_dir[idx]; set_desc(per_dir); break; case MP_HANDLER_TYPE_PER_SRV: - av = scfg->handlers[idx]; + av = scfg->handlers_per_srv[idx]; set_desc(per_srv); break; case MP_HANDLER_TYPE_CONNECTION: - av = scfg->connection_cfg->handlers[idx]; + av = scfg->handlers_connection[idx]; set_desc(connection); break; case MP_HANDLER_TYPE_FILES: - av = scfg->files_cfg->handlers[idx]; + av = scfg->handlers_files[idx]; set_desc(files); break; case MP_HANDLER_TYPE_PROCESS: - av = scfg->process_cfg->handlers[idx]; + av = scfg->handlers_process[idx]; set_desc(process); break; }; 1.7 +10 -10 modperl-2.0/src/modules/perl/modperl_mgv.c Index: modperl_mgv.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_mgv.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- modperl_mgv.c 2001/03/16 05:32:35 1.6 +++ modperl_mgv.c 2001/03/16 07:30:23 1.7 @@ -384,8 +384,8 @@ return 1; } - for (i=0; i < MP_PER_DIR_NUM_HANDLERS; i++) { - modperl_hash_handlers(aTHX_ p, s, dir_cfg->handlers[i], data); + for (i=0; i < MP_HANDLER_NUM_PER_DIR; i++) { + modperl_hash_handlers(aTHX_ p, s, dir_cfg->handlers_per_dir[i], data); } return 1; @@ -398,24 +398,24 @@ modperl_config_srv_t *scfg = (modperl_config_srv_t *)cfg; MP_dSCFG_dTHX; - for (i=0; i < MP_PER_SRV_NUM_HANDLERS; i++) { + for (i=0; i < MP_HANDLER_NUM_PER_SRV; i++) { modperl_hash_handlers(aTHX_ p, s, - scfg->handlers[i], data); + scfg->handlers_per_srv[i], data); } - for (i=0; i < MP_PROCESS_NUM_HANDLERS; i++) { + for (i=0; i < MP_HANDLER_NUM_PROCESS; i++) { modperl_hash_handlers(aTHX_ p, s, - scfg->process_cfg->handlers[i], data); + scfg->handlers_process[i], data); } - for (i=0; i < MP_CONNECTION_NUM_HANDLERS; i++) { + for (i=0; i < MP_HANDLER_NUM_CONNECTION; i++) { modperl_hash_handlers(aTHX_ p, s, - scfg->connection_cfg->handlers[i], data); + scfg->handlers_connection[i], data); } - for (i=0; i < MP_FILES_NUM_HANDLERS; i++) { + for (i=0; i < MP_HANDLER_NUM_FILES; i++) { modperl_hash_handlers(aTHX_ p, s, - scfg->files_cfg->handlers[i], data); + scfg->handlers_files[i], data); } return 1; 1.28 +5 -17 modperl-2.0/src/modules/perl/modperl_types.h Index: modperl_types.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- modperl_types.h 2001/03/16 05:32:35 1.27 +++ modperl_types.h 2001/03/16 07:30:23 1.28 @@ -87,18 +87,6 @@ #endif /* USE_ITHREADS */ -typedef struct { - MpAV *handlers[MP_PROCESS_NUM_HANDLERS]; -} modperl_process_config_t; - -typedef struct { - MpAV *handlers[MP_CONNECTION_NUM_HANDLERS]; -} modperl_connection_config_t; - -typedef struct { - MpAV *handlers[MP_FILES_NUM_HANDLERS]; -} modperl_files_config_t; - typedef U32 modperl_opts_t; typedef struct { @@ -121,10 +109,10 @@ MpHV *SetVars; MpAV *PassEnv; MpAV *PerlRequire, *PerlModule; - MpAV *handlers[MP_PER_SRV_NUM_HANDLERS]; - modperl_files_config_t *files_cfg; - modperl_process_config_t *process_cfg; - modperl_connection_config_t *connection_cfg; + MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV]; + MpAV *handlers_files[MP_HANDLER_NUM_FILES]; + MpAV *handlers_process[MP_HANDLER_NUM_PROCESS]; + MpAV *handlers_connection[MP_HANDLER_NUM_CONNECTION]; #ifdef USE_ITHREADS modperl_interp_pool_t *mip; modperl_tipool_config_t *interp_pool_cfg; @@ -143,7 +131,7 @@ typedef struct { char *location; char *PerlDispatchHandler; - MpAV *handlers[MP_PER_DIR_NUM_HANDLERS]; + MpAV *handlers_per_dir[MP_HANDLER_NUM_PER_DIR]; MpHV *SetEnv; MpHV *SetVars; U8 flags;