[svn:mod_parrot] r435 - in mod_parrot/branches/hll-modules: include lib/ModParrot/HLL src
[email protected] Fri, 19 Sep 2008 12:48:05 -0700 (PDT)
| Newsgroups | perl.cvs.mod_parrot |
|---|---|
| Message-ID | <[email protected]> |
Author: jhorwitz
Date: Fri Sep 19 12:48:04 2008
New Revision: 435
Modified:
mod_parrot/branches/hll-modules/include/modparrot_config.h
mod_parrot/branches/hll-modules/lib/ModParrot/HLL/pir.pir
mod_parrot/branches/hll-modules/src/modparrot_config.c
mod_parrot/branches/hll-modules/src/module.c
Log:
refactor argument processing callbacks
remove references to child_exit, which is apache 1.3 specific
Modified: mod_parrot/branches/hll-modules/include/modparrot_config.h
==============================================================================
--- mod_parrot/branches/hll-modules/include/modparrot_config.h (original)
+++ mod_parrot/branches/hll-modules/include/modparrot_config.h Fri Sep 19 12:48:04 2008
@@ -103,7 +103,6 @@
apr_hash_t *module_hash;
modparrot_handler_info *open_logs_handler;
modparrot_handler_info *child_init_handler;
- modparrot_handler_info *child_exit_handler;
modparrot_handler_info *post_config_handler;
modparrot_handler_info *pre_connection_handler;
modparrot_handler_info *process_connection_handler;
@@ -177,7 +176,6 @@
const char *modparrot_cmd_open_logs_handler(cmd_parms *, void *, const char *);
const char *modparrot_cmd_post_config_handler(cmd_parms *, void *, const char *);
const char *modparrot_cmd_child_init_handler(cmd_parms *, void *, const char *);
-const char *modparrot_cmd_child_exit_handler(cmd_parms *, void *, const char *);
const char *modparrot_cmd_pre_connection_handler(cmd_parms *, void *, const char *);
const char *modparrot_cmd_process_connection_handler(cmd_parms *, void *, const char *);
const char *modparrot_cmd_input_filter_handler(cmd_parms *, void *, const char *);
@@ -206,26 +204,6 @@
const char *modparrot_cmd_add_handler(cmd_parms *, void *, const char *, const char *);
const char *modparrot_cmd_options(cmd_parms *, void *, const char *);
-/* for HLL apache modules */
-const char *modparrot_set_config_ptrs(cmd_parms *, void *);
-const char *modparrot_module_cmd_take1(cmd_parms *, void *, const char *);
-const char *modparrot_module_cmd_take2(cmd_parms *, void *, const char *,
- const char*);
-const char *modparrot_module_cmd_take12(cmd_parms *, void *, const char *,
- const char*);
-const char *modparrot_module_cmd_take3(cmd_parms *, void *, const char *,
- const char *, const char*);
-const char *modparrot_module_cmd_take23(cmd_parms *, void *, const char *,
- const char *, const char*);
-const char *modparrot_module_cmd_take123(cmd_parms *, void *, const char *,
- const char *, const char*);
-const char *modparrot_module_cmd_raw_args(cmd_parms *, void *, const char *);
-const char *modparrot_module_cmd_flag(cmd_parms *, void *, int);
-const char *modparrot_module_cmd_iterate(cmd_parms *, void *, const char *);
-const char *modparrot_module_cmd_iterate2(cmd_parms *, void *, const char *,
- const char *);
-const char *modparrot_module_cmd_no_args(cmd_parms *, void *);
-
/* handlers for HLL apache modules */
int modparrot_meta_response_handler(request_rec *);
int modparrot_meta_authen_handler(request_rec *);
Modified: mod_parrot/branches/hll-modules/lib/ModParrot/HLL/pir.pir
==============================================================================
--- mod_parrot/branches/hll-modules/lib/ModParrot/HLL/pir.pir (original)
+++ mod_parrot/branches/hll-modules/lib/ModParrot/HLL/pir.pir Fri Sep 19 12:48:04 2008
@@ -32,8 +32,6 @@
cmds.push($P0)
$P0 = new_cmd('ParrotChildInitHandler', 'TAKE1', 'cmd_parrotchildinithandler', 'RSRC_CONF', 'usage: ParrotChildInitHandler handler-name')
cmds.push($P0)
- $P0 = new_cmd('ParrotChildExitHandler', 'TAKE1', 'cmd_parrotchildexithandler', 'RSRC_CONF', 'usage: ParrotChildExitHandler handler-name')
- cmds.push($P0)
$P0 = new_cmd('ParrotPreConnectionHandler', 'TAKE1', 'cmd_parrotpreconnectionhandler', 'RSRC_CONF', 'usage: ParrotPreConnectionHandler handler-name')
cmds.push($P0)
$P0 = new_cmd('ParrotProcessConnectionHandler', 'TAKE1', 'cmd_parrotprocessconnectionhandler', 'RSRC_CONF', 'usage: ParrotProcessConnectionHandler handler-name')
Modified: mod_parrot/branches/hll-modules/src/modparrot_config.c
==============================================================================
--- mod_parrot/branches/hll-modules/src/modparrot_config.c (original)
+++ mod_parrot/branches/hll-modules/src/modparrot_config.c Fri Sep 19 12:48:04 2008
@@ -397,245 +397,3 @@
}
return errmsg;
}
-
-static Parrot_PMC make_cmd_args_array(Parrot_Interp interp, apr_pool_t *p,
- int nargs, ...)
-{
- va_list ap;
- Parrot_PMC args;
- int i=0, typenum;
-
- typenum = Parrot_PMC_typenum(interp, "SArray");
- args = (Parrot_PMC)Parrot_PMC_new(interp, typenum);
- Parrot_register_pmc(interp, args);
- Parrot_PMC_set_intval(interp, args, nargs);
-
- va_start(ap, nargs);
- for (i = 0; i < nargs; i++) {
- char *arg = va_arg(ap, char *);
- Parrot_PMC_set_cstring_intkey(interp, args, i, arg);
- }
- va_end(ap);
-
- return(args);
-}
-
-/* use only for setting mod_parrot's config, not HLL module configs */
-static void set_mp_config_vectors(modparrot_context *ctxp, module *modp,
- cmd_parms *cmd)
-{
- modparrot_dir_config *cfg = (modparrot_dir_config *)ap_set_config_vectors(
- cmd->server, cmd->context, cmd->path, modp, cmd->pool);
-
- ctxp->dircfg = cfg;
- ctxp->srvcfg = (modparrot_srv_config *)ap_get_module_config(
- cmd->server->module_config, modp);
-}
-
-#if 0 /* working... */
-static Parrot_PMC modparrot_module_hll_config(Parrot_PMC, int scope)
-#endif
-
-const char *modparrot_module_cmd_take1(cmd_parms *cmd, void *mconfig,
- const char *arg)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- modparrot_module_info *minfo = data->modp->dynamic_load_handle;
- modparrot_module_config *srvcfg, *dircfg;
- int ret;
-
- /* mod_parrot specific stuff */
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
-
- /* create/fetch module server config */
- srvcfg = (modparrot_module_config *)ap_get_module_config(
- cmd->server->module_config, data->modp);
- if (srvcfg) {
- if (!srvcfg->cfg) {
- srvcfg->name = apr_pstrdup(cmd->pool, data->modp->name);
- if (minfo->server_create_sub) {
- /* XXX pass in pool and server_rec objects when implemented */
- srvcfg->cfg = Parrot_call_sub(ctxp->interp,
- minfo->server_create_sub, "P");
- }
- }
- }
-
- /* create/fetch module directory config */
- dircfg = (modparrot_module_config *)mconfig;
- if (dircfg) {
- if (!dircfg->cfg) {
- srvcfg->name = apr_pstrdup(cmd->pool, data->modp->name);
- if (minfo->dir_create_sub) {
- /* XXX pass in pool and server_rec objects when implemented */
- dircfg->cfg = Parrot_call_sub(ctxp->interp,
- minfo->dir_create_sub, "P");
- }
- }
- }
-
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
-
- /* XXX add cmd_parms to this when it's implemented */
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IPP",
- dircfg->cfg, args);
-
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_take2(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_take12(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_take3(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2,
- const char *arg3)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_take23(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2,
- const char *arg3)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_take123(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2,
- const char *arg3)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_raw_args(cmd_parms *cmd, void *mconfig,
- const char *arg)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_flag(cmd_parms *cmd, void *mconfig, int arg)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "II", arg);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_iterate(cmd_parms *cmd, void *mconfig,
- const char *arg)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_iterate2(cmd_parms *cmd, void *mconfig,
- const char *arg1,
- const char *arg2)
-{
- modparrot_context *ctxp;
- Parrot_PMC args;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
- release_ctx(ctxp);
- return NULL;
-}
-
-const char *modparrot_module_cmd_no_args(cmd_parms *cmd, void *mconfig)
-{
- modparrot_context *ctxp;
- modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
- int ret;
-
- ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
- ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "I");
- release_ctx(ctxp);
- return NULL;
-}
Modified: mod_parrot/branches/hll-modules/src/module.c
==============================================================================
--- mod_parrot/branches/hll-modules/src/module.c (original)
+++ mod_parrot/branches/hll-modules/src/module.c Fri Sep 19 12:48:04 2008
@@ -24,6 +24,7 @@
#include "http_connection.h"
#include "http_main.h"
#include "mpm.h"
+#include "apr_strings.h"
#include "parrot/parrot.h"
#include "parrot/embed.h"
@@ -86,6 +87,120 @@
return(NULL);
}
+static Parrot_PMC make_cmd_args_array(Parrot_Interp interp, apr_pool_t *p,
+ int nargs, ...)
+{
+ va_list ap;
+ Parrot_PMC args;
+ int i=0, typenum;
+
+ typenum = Parrot_PMC_typenum(interp, "SArray");
+ args = (Parrot_PMC)Parrot_PMC_new(interp, typenum);
+ Parrot_register_pmc(interp, args);
+ Parrot_PMC_set_intval(interp, args, nargs);
+
+ va_start(ap, nargs);
+ for (i = 0; i < nargs; i++) {
+ char *arg = va_arg(ap, char *);
+ if (arg) {
+ Parrot_PMC_set_cstring_intkey(interp, args, i, arg);
+ }
+ else {
+ Parrot_PMC_set_pmc_intkey(interp, args, i, PMCNULL);
+ }
+ }
+ va_end(ap);
+
+ return(args);
+}
+
+static const char *modparrot_module_cmd_take123(cmd_parms *cmd, void *mconfig,
+ const char *arg1,
+ const char *arg2,
+ const char *arg3)
+{
+ modparrot_context *ctxp;
+ Parrot_PMC args;
+ modparrot_module_cmd_data *data = cmd->cmd->cmd_data;
+ modparrot_module_info *minfo = data->modp->dynamic_load_handle;
+ modparrot_module_config *srvcfg, *dircfg;
+ int ret;
+
+ /* mod_parrot specific stuff */
+ ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
+
+ /* create/fetch module server config */
+ srvcfg = (modparrot_module_config *)ap_get_module_config(
+ cmd->server->module_config, data->modp);
+ if (srvcfg) {
+ if (!srvcfg->cfg) {
+ srvcfg->name = apr_pstrdup(cmd->pool, data->modp->name);
+ if (minfo->server_create_sub) {
+ /* XXX pass in pool and server_rec objects when implemented */
+ srvcfg->cfg = Parrot_call_sub(ctxp->interp,
+ minfo->server_create_sub, "P");
+ }
+ }
+ }
+
+ /* create/fetch module directory config */
+ dircfg = (modparrot_module_config *)mconfig;
+ if (dircfg) {
+ if (!dircfg->cfg) {
+ srvcfg->name = apr_pstrdup(cmd->pool, data->modp->name);
+ if (minfo->dir_create_sub) {
+ /* XXX pass in pool and server_rec objects when implemented */
+ dircfg->cfg = Parrot_call_sub(ctxp->interp,
+ minfo->dir_create_sub, "P");
+ }
+ }
+ }
+
+ args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
+
+ /* XXX add cmd_parms to this when it's implemented */
+ ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IPP",
+ dircfg->cfg, args);
+
+ release_ctx(ctxp);
+ return NULL;
+}
+
+static const char *modparrot_module_cmd_take1(cmd_parms *cmd, void *mconfig,
+ const char *arg)
+{
+ return modparrot_module_cmd_take123(cmd, mconfig, arg, NULL, NULL);
+}
+
+
+static const char *modparrot_module_cmd_take2(cmd_parms *cmd, void *mconfig,
+ const char *arg1, const char *arg2)
+{
+ return modparrot_module_cmd_take123(cmd, mconfig, arg1, arg2, NULL);
+}
+
+static const char *modparrot_module_cmd_no_args(cmd_parms *cmd, void *mconfig)
+{
+ return modparrot_module_cmd_take123(cmd, mconfig, NULL, NULL, NULL);
+}
+
+static const char *modparrot_module_cmd_flag(cmd_parms *cmd, void *mconfig,
+ int flag)
+{
+ char buf[2];
+
+ apr_snprintf(buf, sizeof(buf), "%d", flag);
+ return modparrot_module_cmd_take123(cmd, mconfig, NULL, NULL, NULL);
+}
+
+#define modparrot_module_cmd_raw_args modparrot_module_cmd_take1
+#define modparrot_module_cmd_iterate modparrot_module_cmd_take1
+#define modparrot_module_cmd_iterate2 modparrot_module_cmd_take2
+#define modparrot_module_cmd_take12 modparrot_module_cmd_take2
+#define modparrot_module_cmd_take23 modparrot_module_cmd_take123
+#define modparrot_module_cmd_take3 modparrot_module_cmd_take123
+#define modparrot_module_cmd_take13 modparrot_module_cmd_take123
+
static void register_meta_hooks(apr_pool_t *p)
{
/* XXX does this also work for Apache >= 2.3 */