dougm 01/03/15 21:52:29 Modified: lib/ModPerl Code.pm src/modules/perl mod_perl.c mod_perl.h modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h Added: src/modules/perl modperl_cmd.c modperl_cmd.h Log: move cmd stuffs into its own module Revision Changes Path 1.48 +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.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- Code.pm 2001/03/16 05:32:34 1.47 +++ Code.pm 2001/03/16 05:52:28 1.48 @@ -511,7 +511,7 @@ generate_trace => {h => 'modperl_trace.h'}, ); -my @c_src_names = qw(interp tipool log config options callback handler +my @c_src_names = qw(interp tipool log config cmd options callback handler gtop util filter mgv pcw); my @g_c_names = map { "modperl_$_" } qw(hooks directives flags xsinit); my @c_names = ('mod_perl', (map "modperl_$_", @c_src_names)); 1.39 +9 -9 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- mod_perl.c 2001/03/16 05:32:35 1.38 +++ mod_perl.c 2001/03/16 05:52:29 1.39 @@ -233,23 +233,23 @@ } static const command_rec modperl_cmds[] = { - MP_SRV_CMD_ITERATE("PerlSwitches", switches, "Perl Switches"), - MP_SRV_CMD_ITERATE("PerlOptions", options, "Perl Options"), + MP_CMD_SRV_ITERATE("PerlSwitches", switches, "Perl Switches"), + MP_CMD_SRV_ITERATE("PerlOptions", options, "Perl Options"), #ifdef MP_TRACE - MP_SRV_CMD_TAKE1("PerlTrace", trace, "Trace level"), + MP_CMD_SRV_TAKE1("PerlTrace", trace, "Trace level"), #endif #ifdef USE_ITHREADS - MP_SRV_CMD_TAKE1("PerlInterpStart", interp_start, + MP_CMD_SRV_TAKE1("PerlInterpStart", interp_start, "Number of Perl interpreters to start"), - MP_SRV_CMD_TAKE1("PerlInterpMax", interp_max, + MP_CMD_SRV_TAKE1("PerlInterpMax", interp_max, "Max number of running Perl interpreters"), - MP_SRV_CMD_TAKE1("PerlInterpMaxSpare", interp_max_spare, + MP_CMD_SRV_TAKE1("PerlInterpMaxSpare", interp_max_spare, "Max number of spare Perl interpreters"), - MP_SRV_CMD_TAKE1("PerlInterpMinSpare", interp_min_spare, + MP_CMD_SRV_TAKE1("PerlInterpMinSpare", interp_min_spare, "Min number of spare Perl interpreters"), - MP_SRV_CMD_TAKE1("PerlInterpMaxRequests", interp_max_requests, + MP_CMD_SRV_TAKE1("PerlInterpMaxRequests", interp_max_requests, "Max number of requests per Perl interpreters"), - MP_DIR_CMD_TAKE1("PerlInterpLifetime", interp_lifetime, + MP_CMD_DIR_TAKE1("PerlInterpLifetime", interp_lifetime, "Lifetime of a Perl interpreter"), #endif MP_CMD_ENTRIES, 1.28 +1 -0 modperl-2.0/src/modules/perl/mod_perl.h Index: mod_perl.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_perl.h 2001/03/16 04:58:58 1.27 +++ mod_perl.h 2001/03/16 05:52:29 1.28 @@ -16,6 +16,7 @@ #include "modperl_types.h" #include "modperl_util.h" #include "modperl_config.h" +#include "modperl_cmd.h" #include "modperl_handler.h" #include "modperl_callback.h" #include "modperl_tipool.h" 1.26 +2 -147 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.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- modperl_config.c 2001/03/16 05:32:35 1.25 +++ modperl_config.c 2001/03/16 05:52:29 1.26 @@ -1,23 +1,5 @@ #include "mod_perl.h" -char *modperl_cmd_push_handlers(MpAV **handlers, const char *name, - apr_pool_t *p) -{ - modperl_handler_t *h = modperl_handler_new(p, name); - - if (!*handlers) { - *handlers = apr_array_make(p, 1, sizeof(modperl_handler_t *)); - MP_TRACE_d(MP_FUNC, "created handler stack\n"); - } - - /* XXX parse_handler if Perl is running */ - - *(modperl_handler_t **)apr_array_push(*handlers) = h; - MP_TRACE_d(MP_FUNC, "pushed handler: %s\n", h->name); - - return NULL; -} - void *modperl_config_dir_create(apr_pool_t *p, char *dir) { modperl_config_dir_t *dcfg = modperl_config_dir_new(p); @@ -68,9 +50,6 @@ return rcfg; } -#define scfg_push_argv(arg) \ - *(const char **)apr_array_push(scfg->argv) = arg - modperl_config_srv_t *modperl_config_srv_new(apr_pool_t *p) { modperl_config_srv_t *scfg = (modperl_config_srv_t *) @@ -82,7 +61,7 @@ scfg->argv = apr_array_make(p, 2, sizeof(char *)); - scfg_push_argv((char *)ap_server_argv0); + modperl_config_srv_argv_push((char *)ap_server_argv0); #ifdef MP_CONNECTION_NUM_HANDLERS scfg->connection_cfg = (modperl_connection_config_t *) @@ -128,7 +107,7 @@ char **modperl_config_srv_argv_init(modperl_config_srv_t *scfg, int *argc) { - scfg_push_argv("-e;0"); + modperl_config_srv_argv_push("-e;0"); *argc = scfg->argv->nelts; @@ -199,127 +178,3 @@ return mrg; } -#define MP_CONFIG_BOOTSTRAP(parms) \ -if (!scfg->mip) modperl_init(parms->server, parms->pool) - -#define MP_SRV_CMD_TRACE \ - MP_TRACE_d(MP_FUNC, "%s %s\n", parms->cmd->name, arg) - -#define MP_SRV_CMD_CHECK \ -MP_SRV_CMD_TRACE; \ -{ \ - const char *err = ap_check_cmd_context(parms, GLOBAL_ONLY); \ - if (err) return err; \ -} - -MP_DECLARE_SRV_CMD(trace) -{ - MP_SRV_CMD_CHECK; - modperl_trace_level_set(arg); - return NULL; -} - -MP_DECLARE_SRV_CMD(switches) -{ - MP_dSCFG(parms->server); - scfg_push_argv(arg); - return NULL; -} - -MP_DECLARE_SRV_CMD(options) -{ - MP_dSCFG(parms->server); - apr_pool_t *p = parms->pool; - const char *error; - - MP_TRACE_d(MP_FUNC, "arg = %s\n", arg); - error = modperl_options_set(p, scfg->flags, arg); - - if (error) { - return error; - } - - return NULL; -} - -#ifdef USE_ITHREADS - -static const char *MP_interp_lifetime_desc[] = { - "undef", "handler", "subrequest", "request", "connection", -}; - -const char *modperl_interp_lifetime_desc(modperl_interp_lifetime_e lifetime) -{ - return MP_interp_lifetime_desc[lifetime]; -} - -#define MP_INTERP_LIFETIME_USAGE "PerlInterpLifetime must be one of " - -#define MP_INTERP_LIFETIME_DIR_OPTS \ -"handler, subrequest or request" - -#define MP_INTERP_LIFETIME_DIR_USAGE \ -MP_INTERP_LIFETIME_USAGE MP_INTERP_LIFETIME_DIR_OPTS - -#define MP_INTERP_LIFETIME_SRV_OPTS \ -"connection, " MP_INTERP_LIFETIME_DIR_OPTS - -#define MP_INTERP_LIFETIME_SRV_USAGE \ -MP_INTERP_LIFETIME_USAGE MP_INTERP_LIFETIME_SRV_OPTS - -MP_DECLARE_SRV_CMD(interp_lifetime) -{ - modperl_interp_lifetime_e *lifetime; - modperl_config_dir_t *dcfg = (modperl_config_dir_t *)dummy; - MP_dSCFG(parms->server); - int is_per_dir = parms->path ? 1 : 0; - - lifetime = is_per_dir ? &dcfg->interp_lifetime : &scfg->interp_lifetime; - - switch (toLOWER(*arg)) { - case 'h': - if (strcaseEQ(arg, "handler")) { - *lifetime = MP_INTERP_LIFETIME_HANDLER; - break; - } - case 's': - if (strcaseEQ(arg, "subrequest")) { - *lifetime = MP_INTERP_LIFETIME_SUBREQUEST; - break; - } - case 'r': - if (strcaseEQ(arg, "request")) { - *lifetime = MP_INTERP_LIFETIME_REQUEST; - break; - } - case 'c': - if (!is_per_dir && strcaseEQ(arg, "connection")) { - *lifetime = MP_INTERP_LIFETIME_CONNECTION; - break; - } - default: - return is_per_dir ? - MP_INTERP_LIFETIME_DIR_USAGE : MP_INTERP_LIFETIME_SRV_USAGE; - }; - - return NULL; -} - -#define MP_IMP_INTERP_POOL_CFG(xitem) \ -const char *modperl_cmd_interp_##xitem(cmd_parms *parms, \ - void *dummy, const char *arg) \ -{ \ - MP_dSCFG(parms->server); \ - int item = atoi(arg); \ - scfg->interp_pool_cfg->xitem = item; \ - MP_TRACE_d(MP_FUNC, "%s %d\n", parms->cmd->name, item); \ - return NULL; \ -} - -MP_IMP_INTERP_POOL_CFG(start); -MP_IMP_INTERP_POOL_CFG(max); -MP_IMP_INTERP_POOL_CFG(max_spare); -MP_IMP_INTERP_POOL_CFG(min_spare); -MP_IMP_INTERP_POOL_CFG(max_requests); - -#endif /* USE_ITHREADS */ 1.22 +2 -48 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.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- modperl_config.h 2001/03/16 05:32:35 1.21 +++ modperl_config.h 2001/03/16 05:52:29 1.22 @@ -15,56 +15,10 @@ void *modperl_config_srv_merge(apr_pool_t *p, void *basev, void *addv); -char *modperl_cmd_push_handlers(MpAV **handlers, const char *name, - apr_pool_t *p); - char **modperl_config_srv_argv_init(modperl_config_srv_t *scfg, int *argc); - -#define MP_DECLARE_SRV_CMD(item) \ -const char *modperl_cmd_##item(cmd_parms *parms, \ - void *dummy, const char *arg) -MP_DECLARE_SRV_CMD(trace); -MP_DECLARE_SRV_CMD(switches); -MP_DECLARE_SRV_CMD(options); - -#ifdef USE_ITHREADS -MP_DECLARE_SRV_CMD(interp_start); -MP_DECLARE_SRV_CMD(interp_max); -MP_DECLARE_SRV_CMD(interp_max_spare); -MP_DECLARE_SRV_CMD(interp_min_spare); -MP_DECLARE_SRV_CMD(interp_max_requests); -MP_DECLARE_SRV_CMD(interp_lifetime); - -const char *modperl_interp_lifetime_desc(modperl_interp_lifetime_e lifetime); - -#define modperl_interp_lifetime_undef(dcfg) \ -(dcfg->interp_lifetime == MP_INTERP_LIFETIME_UNDEF) - -#define modperl_interp_lifetime_handler(dcfg) \ -(dcfg->interp_lifetime == MP_INTERP_LIFETIME_HANDLER) - -#define modperl_interp_lifetime_subrequest(dcfg) \ -(dcfg->interp_lifetime == MP_INTERP_LIFETIME_SUBREQUEST) - -#define modperl_interp_lifetime_request(scfg) \ -(scfg->interp_lifetime == MP_INTERP_LIFETIME_REQUEST) - -#define modperl_interp_lifetime_connection(scfg) \ -(scfg->interp_lifetime == MP_INTERP_LIFETIME_CONNECTION) - -#endif - -#define MP_SRV_CMD_TAKE1(name, item, desc) \ - AP_INIT_TAKE1( name, modperl_cmd_##item, NULL, \ - RSRC_CONF, desc ) - -#define MP_SRV_CMD_ITERATE(name, item, desc) \ - AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \ - RSRC_CONF, desc ) -#define MP_DIR_CMD_TAKE1(name, item, desc) \ - AP_INIT_TAKE1( name, modperl_cmd_##item, NULL, \ - OR_ALL, desc ) +#define modperl_config_srv_argv_push(arg) \ + *(const char **)apr_array_push(scfg->argv) = arg #define modperl_config_req_init(r, rcfg) \ if (!rcfg) { \ 1.27 +9 -0 modperl-2.0/src/modules/perl/modperl_interp.c Index: modperl_interp.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- modperl_interp.c 2001/03/16 05:32:35 1.26 +++ modperl_interp.c 2001/03/16 05:52:29 1.27 @@ -7,6 +7,15 @@ #ifdef USE_ITHREADS +static const char *MP_interp_lifetime_desc[] = { + "undef", "handler", "subrequest", "request", "connection", +}; + +const char *modperl_interp_lifetime_desc(modperl_interp_lifetime_e lifetime) +{ + return MP_interp_lifetime_desc[lifetime]; +} + modperl_interp_t *modperl_interp_new(apr_pool_t *p, modperl_interp_pool_t *mip, PerlInterpreter *perl) 1.9 +1 -0 modperl-2.0/src/modules/perl/modperl_interp.h Index: modperl_interp.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- modperl_interp.h 2001/03/14 00:03:29 1.8 +++ modperl_interp.h 2001/03/16 05:52:29 1.9 @@ -7,6 +7,7 @@ apr_status_t modperl_interp_cleanup(void *data); #ifdef USE_ITHREADS +const char *modperl_interp_lifetime_desc(modperl_interp_lifetime_e lifetime); modperl_interp_t *modperl_interp_new(apr_pool_t *p, modperl_interp_pool_t *mip, 1.1 modperl-2.0/src/modules/perl/modperl_cmd.c Index: modperl_cmd.c =================================================================== #include "mod_perl.h" char *modperl_cmd_push_handlers(MpAV **handlers, const char *name, apr_pool_t *p) { modperl_handler_t *h = modperl_handler_new(p, name); if (!*handlers) { *handlers = apr_array_make(p, 1, sizeof(modperl_handler_t *)); MP_TRACE_d(MP_FUNC, "created handler stack\n"); } /* XXX parse_handler if Perl is running */ *(modperl_handler_t **)apr_array_push(*handlers) = h; MP_TRACE_d(MP_FUNC, "pushed handler: %s\n", h->name); return NULL; } #define MP_CMD_SRV_TRACE \ MP_TRACE_d(MP_FUNC, "%s %s\n", parms->cmd->name, arg) #define MP_CMD_SRV_CHECK \ MP_CMD_SRV_TRACE; \ { \ const char *err = ap_check_cmd_context(parms, GLOBAL_ONLY); \ if (err) return err; \ } MP_CMD_SRV_DECLARE(trace) { MP_CMD_SRV_CHECK; modperl_trace_level_set(arg); return NULL; } MP_CMD_SRV_DECLARE(switches) { MP_dSCFG(parms->server); modperl_config_srv_argv_push(arg); return NULL; } MP_CMD_SRV_DECLARE(options) { MP_dSCFG(parms->server); apr_pool_t *p = parms->pool; const char *error; MP_TRACE_d(MP_FUNC, "arg = %s\n", arg); error = modperl_options_set(p, scfg->flags, arg); if (error) { return error; } return NULL; } #ifdef USE_ITHREADS #define MP_INTERP_LIFETIME_USAGE "PerlInterpLifetime must be one of " #define MP_INTERP_LIFETIME_DIR_OPTS \ "handler, subrequest or request" #define MP_INTERP_LIFETIME_DIR_USAGE \ MP_INTERP_LIFETIME_USAGE MP_INTERP_LIFETIME_DIR_OPTS #define MP_INTERP_LIFETIME_SRV_OPTS \ "connection, " MP_INTERP_LIFETIME_DIR_OPTS #define MP_INTERP_LIFETIME_SRV_USAGE \ MP_INTERP_LIFETIME_USAGE MP_INTERP_LIFETIME_SRV_OPTS MP_CMD_SRV_DECLARE(interp_lifetime) { modperl_interp_lifetime_e *lifetime; modperl_config_dir_t *dcfg = (modperl_config_dir_t *)dummy; MP_dSCFG(parms->server); int is_per_dir = parms->path ? 1 : 0; lifetime = is_per_dir ? &dcfg->interp_lifetime : &scfg->interp_lifetime; switch (toLOWER(*arg)) { case 'h': if (strcaseEQ(arg, "handler")) { *lifetime = MP_INTERP_LIFETIME_HANDLER; break; } case 's': if (strcaseEQ(arg, "subrequest")) { *lifetime = MP_INTERP_LIFETIME_SUBREQUEST; break; } case 'r': if (strcaseEQ(arg, "request")) { *lifetime = MP_INTERP_LIFETIME_REQUEST; break; } case 'c': if (!is_per_dir && strcaseEQ(arg, "connection")) { *lifetime = MP_INTERP_LIFETIME_CONNECTION; break; } default: return is_per_dir ? MP_INTERP_LIFETIME_DIR_USAGE : MP_INTERP_LIFETIME_SRV_USAGE; }; return NULL; } #define MP_CMD_INTERP_POOL_IMP(xitem) \ const char *modperl_cmd_interp_##xitem(cmd_parms *parms, \ void *dummy, const char *arg) \ { \ MP_dSCFG(parms->server); \ int item = atoi(arg); \ scfg->interp_pool_cfg->xitem = item; \ MP_TRACE_d(MP_FUNC, "%s %d\n", parms->cmd->name, item); \ return NULL; \ } MP_CMD_INTERP_POOL_IMP(start); MP_CMD_INTERP_POOL_IMP(max); MP_CMD_INTERP_POOL_IMP(max_spare); MP_CMD_INTERP_POOL_IMP(min_spare); MP_CMD_INTERP_POOL_IMP(max_requests); #endif /* USE_ITHREADS */ 1.1 modperl-2.0/src/modules/perl/modperl_cmd.h Index: modperl_cmd.h =================================================================== #ifndef MODPERL_CMD_H #define MODPERL_CMD_H char *modperl_cmd_push_handlers(MpAV **handlers, const char *name, apr_pool_t *p); #define MP_CMD_SRV_DECLARE(item) \ const char *modperl_cmd_##item(cmd_parms *parms, \ void *dummy, const char *arg) MP_CMD_SRV_DECLARE(trace); MP_CMD_SRV_DECLARE(switches); MP_CMD_SRV_DECLARE(options); #ifdef USE_ITHREADS MP_CMD_SRV_DECLARE(interp_start); MP_CMD_SRV_DECLARE(interp_max); MP_CMD_SRV_DECLARE(interp_max_spare); MP_CMD_SRV_DECLARE(interp_min_spare); MP_CMD_SRV_DECLARE(interp_max_requests); MP_CMD_SRV_DECLARE(interp_lifetime); #define modperl_interp_lifetime_undef(dcfg) \ (dcfg->interp_lifetime == MP_INTERP_LIFETIME_UNDEF) #define modperl_interp_lifetime_handler(dcfg) \ (dcfg->interp_lifetime == MP_INTERP_LIFETIME_HANDLER) #define modperl_interp_lifetime_subrequest(dcfg) \ (dcfg->interp_lifetime == MP_INTERP_LIFETIME_SUBREQUEST) #define modperl_interp_lifetime_request(scfg) \ (scfg->interp_lifetime == MP_INTERP_LIFETIME_REQUEST) #define modperl_interp_lifetime_connection(scfg) \ (scfg->interp_lifetime == MP_INTERP_LIFETIME_CONNECTION) #endif #define MP_CMD_SRV_TAKE1(name, item, desc) \ AP_INIT_TAKE1( name, modperl_cmd_##item, NULL, \ RSRC_CONF, desc ) #define MP_CMD_SRV_ITERATE(name, item, desc) \ AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \ RSRC_CONF, desc ) #define MP_CMD_DIR_TAKE1(name, item, desc) \ AP_INIT_TAKE1( name, modperl_cmd_##item, NULL, \ OR_ALL, desc ) #endif /* MODPERL_CMD_H */