You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2002/08/27 21:10:08 UTC

cvs commit: modperl-2.0/src/modules/perl modperl_module.c

dougm       2002/08/27 12:10:08

  Modified:    src/modules/perl modperl_module.c
  Log:
  adjustments to compile with -DAP_HAVE_DESIGNATED_INITIALIZER
  
  Revision  Changes    Path
  1.2       +57 -40    modperl-2.0/src/modules/perl/modperl_module.c
  
  Index: modperl_module.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_module.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_module.c	27 Aug 2002 04:21:20 -0000	1.1
  +++ modperl_module.c	27 Aug 2002 19:10:08 -0000	1.2
  @@ -297,12 +297,13 @@
   #define PUSH_STR_ARG(arg) \
       if (arg) XPUSHs(sv_2mortal(newSVpv(arg,0)))
   
  -static const char *modperl_module_cmd_TAKE123(cmd_parms *parms,
  -                                              modperl_module_cfg_t *cfg,
  +static const char *modperl_module_cmd_take123(cmd_parms *parms,
  +                                              void *mconfig,
                                                 const char *one,
                                                 const char *two,
                                                 const char *three)
   {
  +    modperl_module_cfg_t *cfg = (modperl_module_cfg_t *)mconfig;
       const char *retval = NULL, *errmsg;
       const command_rec *cmd = parms->cmd;
       server_rec *s = parms->server;
  @@ -388,70 +389,86 @@
       return retval;
   }
   
  -static const char *modperl_module_cmd_TAKE1(cmd_parms *parms,
  -                                            modperl_module_cfg_t *cfg,
  +static const char *modperl_module_cmd_take1(cmd_parms *parms,
  +                                            void *mconfig,
                                               const char *one)
   {
  -    return modperl_module_cmd_TAKE123(parms, cfg, one, NULL, NULL);
  +    return modperl_module_cmd_take123(parms, mconfig, one, NULL, NULL);
   }
   
  -static const char *modperl_module_cmd_TAKE2(cmd_parms *parms,
  -                                            modperl_module_cfg_t *cfg,
  +static const char *modperl_module_cmd_take2(cmd_parms *parms,
  +                                            void *mconfig,
                                               const char *one,
                                               const char *two)
   {
  -    return modperl_module_cmd_TAKE123(parms, cfg, one, two, NULL);
  +    return modperl_module_cmd_take123(parms, mconfig, one, two, NULL);
   }
   
  -static const char *modperl_module_cmd_FLAG(cmd_parms *parms,
  -                                           modperl_module_cfg_t *cfg,
  +static const char *modperl_module_cmd_flag(cmd_parms *parms,
  +                                           void *mconfig,
                                              int flag)
   {
       char buf[2];
   
       apr_snprintf(buf, sizeof(buf), "%d", flag);
   
  -    return modperl_module_cmd_TAKE123(parms, cfg, buf, NULL, NULL);
  +    return modperl_module_cmd_take123(parms, mconfig, buf, NULL, NULL);
   }
   
  -#define modperl_module_cmd_RAW_ARGS modperl_module_cmd_TAKE1
  -#define modperl_module_cmd_NO_ARGS  modperl_module_cmd_TAKE1
  -#define modperl_module_cmd_ITERATE  modperl_module_cmd_TAKE1
  -#define modperl_module_cmd_ITERATE2 modperl_module_cmd_TAKE2
  -#define modperl_module_cmd_TAKE12   modperl_module_cmd_TAKE2
  -#define modperl_module_cmd_TAKE23   modperl_module_cmd_TAKE123
  -#define modperl_module_cmd_TAKE3    modperl_module_cmd_TAKE123
  -#define modperl_module_cmd_TAKE13   modperl_module_cmd_TAKE123
  +static const char *modperl_module_cmd_no_args(cmd_parms *parms,
  +                                              void *mconfig)
  +{
  +    return modperl_module_cmd_take123(parms, mconfig, NULL, NULL, NULL);
  +}
   
  -static cmd_func modperl_module_cmd_lookup(enum cmd_how args_how) {
  -    switch (args_how) {
  -      case RAW_ARGS:
  -        return modperl_module_cmd_RAW_ARGS;
  +#define modperl_module_cmd_raw_args modperl_module_cmd_take1
  +#define modperl_module_cmd_iterate  modperl_module_cmd_take1
  +#define modperl_module_cmd_iterate2 modperl_module_cmd_take2
  +#define modperl_module_cmd_take12   modperl_module_cmd_take2
  +#define modperl_module_cmd_take23   modperl_module_cmd_take123
  +#define modperl_module_cmd_take3    modperl_module_cmd_take123
  +#define modperl_module_cmd_take13   modperl_module_cmd_take123
  +
  +#if defined(AP_HAVE_DESIGNATED_INITIALIZER)
  +#   define modperl_module_cmd_func_set(cmd, name) \
  +    cmd->func.name = modperl_module_cmd_##name
  +#else
  +#   define modperl_module_cmd_func_set(cmd, name) \
  +    cmd->func = modperl_module_cmd_##name
  +#endif
  +
  +static int modperl_module_cmd_lookup(command_rec *cmd)
  +{
  +    switch (cmd->args_how) {
         case TAKE1:
  -        return modperl_module_cmd_TAKE1;
  -      case TAKE2:
  -        return modperl_module_cmd_TAKE2;
         case ITERATE:
  -        return modperl_module_cmd_ITERATE;
  +        modperl_module_cmd_func_set(cmd, take1);
  +        break;
  +      case TAKE2:
         case ITERATE2:
  -        return modperl_module_cmd_ITERATE2;
  -      case FLAG:
  -        return modperl_module_cmd_FLAG;
  -      case NO_ARGS:
  -        return modperl_module_cmd_NO_ARGS;
         case TAKE12:
  -        return modperl_module_cmd_TAKE12;
  +        modperl_module_cmd_func_set(cmd, take2);
  +        break;
         case TAKE3:
  -        return modperl_module_cmd_TAKE3;
         case TAKE23:
  -        return modperl_module_cmd_TAKE23;
         case TAKE123:
  -        return modperl_module_cmd_TAKE123;
         case TAKE13:
  -        return modperl_module_cmd_TAKE13;
  +        modperl_module_cmd_func_set(cmd, take3);
  +        break;
  +      case RAW_ARGS:
  +        modperl_module_cmd_func_set(cmd, raw_args);
  +        break;
  +      case FLAG:
  +        modperl_module_cmd_func_set(cmd, flag);
  +        break;
  +      case NO_ARGS:
  +        modperl_module_cmd_func_set(cmd, no_args);
  +        break;
  +      default:
  +        return FALSE;
       }
   
  -    return NULL;
  +    return TRUE;
   }
   
   static apr_status_t modperl_module_remove(void *data)
  @@ -573,7 +590,7 @@
               SvREFCNT_dec(val);
           }
   
  -        if (!(cmd->func = modperl_module_cmd_lookup(cmd->args_how))) {
  +        if (!modperl_module_cmd_lookup(cmd)) {
               return apr_psprintf(p,
                                   "no command function defined for args_how=%d",
                                   cmd->args_how);
  @@ -691,7 +708,7 @@
       /* 
        * if the Perl module is loaded in the base server and a vhost
        * has configuration directives from that module, but no mod_perl.c
  -     * directives, scfg == NULL when modperl_module_cmd_TAKE123 is run.
  +     * directives, scfg == NULL when modperl_module_cmd_take123 is run.
        * this happens before server configs are merged, so we stash a pointer
        * to what will be merged as the parent interp later. i.e. "safe hack"
        */