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