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

Reply via email to