coar        98/08/06 16:32:03

  Modified:    htdocs/manual/mod mod_speling.html
               src/modules/standard mod_speling.c
               src      CHANGES
  Log:
        Allow CheckSpelling to be used anywhere, not just at the server
        level.
  
  Revision  Changes    Path
  1.9       +27 -12    apache-1.3/htdocs/manual/mod/mod_speling.html
  
  Index: mod_speling.html
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_speling.html,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- mod_speling.html  1998/05/20 14:12:59     1.8
  +++ mod_speling.html  1998/08/06 23:31:55     1.9
  @@ -70,8 +70,14 @@
     <A
      HREF="directive-dict.html#Context"
      REL="Help"
  -  ><STRONG>Context:</STRONG></A> server config, virtual host<BR>
  +  ><STRONG>Context:</STRONG></A> server config, virtual host,
  +   directory, .htaccess<BR>
     <A
  +   HREF="directive-dict.html#Override"
  +   REL="Help" 
  +  ><STRONG>Override:</STRONG></A> Options
  +  <BR>
  +  <A
      HREF="directive-dict.html#Status"
      REL="Help"
     ><STRONG>Status:</STRONG></A> Base<BR>
  @@ -85,20 +91,29 @@
     ><STRONG>Compatibility:</STRONG></A> CheckSpelling was available as a
     separately
     available module for Apache 1.1, but was limited to miscapitalizations.
  -  As of Apache 1.3, it is part of the Apache distribution<!-- or:
  -  available as a separate module-->.<P>
  -
  +  As of Apache 1.3, it is part of the Apache distribution.  Prior to
  +  Apache 1.3.2, the <SAMP>CheckSpelling</SAMP> directive was only available
  +  in the "server" and "virtual host" contexts.
  +  <P>
     This directive enables or disables the spelling module. When enabled,
     keep in mind that
  +  </P>
     <UL>
  -  <LI>the directory scan which is necessary for the spelling
  -      correction will have an impact on the server's performance
  -      when many spelling corrections have to be performed at the same time.
  -  <LI>the document trees should not contain sensitive files which could
  -      be matched inadvertently, by a spelling "correction".
  -  <LI>the module is unable to correct misspelled user names
  -      (as in <CODE>http://my.host/~apahce/</CODE>), just file names or
  -      directory names.
  +   <LI>the directory scan which is necessary for the spelling
  +       correction will have an impact on the server's performance
  +       when many spelling corrections have to be performed at the same time.
  +   </LI>
  +   <LI>the document trees should not contain sensitive files which could
  +       be matched inadvertently by a spelling "correction".
  +   </LI>
  +   <LI>the module is unable to correct misspelled user names
  +       (as in <CODE>http://my.host/~apahce/</CODE>), just file names or
  +       directory names.
  +   </LI>
  +   <LI>spelling corrections apply strictly to existing files, so a request 
for
  +       the <SAMP>&lt;Location /status&gt;</SAMP> may get incorrectly treated
  +       as the negotiated file "<SAMP>/stats.html</SAMP>".
  +   </LI>
     </UL>
   
   <!--#include virtual="footer.html" -->
  
  
  
  1.24      +47 -14    apache-1.3/src/modules/standard/mod_speling.c
  
  Index: mod_speling.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_speling.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- mod_speling.c     1998/08/06 17:31:11     1.23
  +++ mod_speling.c     1998/08/06 23:31:59     1.24
  @@ -85,31 +85,64 @@
   
   MODULE_VAR_EXPORT module speling_module;
   
  +typedef struct {
  +    int enabled;
  +} spconfig;
  +
  +/*
  + * Create a configuration specific to this module for a server or directory
  + * location, and fill it with the default settings.
  + *
  + * The API says that in the absence of a merge function, the record for the
  + * closest ancestor is used exclusively.  That's what we want, so we don't
  + * bother to have such a function.
  + */
  +
  +static void *mkconfig(pool *p)
  +{
  +    spconfig *cfg = ap_pcalloc(p, sizeof(spconfig));
  +
  +    cfg->enabled = 0;
  +    return cfg;
  +}
  +
   /*
  - * We use the "unconventional" mod_userdir approach here. And heck,
  - * here it's just one int!
  + * Respond to a callback to create configuration record for a server or
  + * vhost environment.
    */
  +static void *create_mconfig_for_server(pool *p, server_rec *s)
  +{
  +    return mkconfig(p);
  +}
   
  -static void *create_speling_config(pool *dummy, server_rec *s)
  +/*
  + * Respond to a callback to create a config record for a specific directory.
  + */
  +static void *create_mconfig_for_directory(pool *p, char *dir)
   {
  -    return (void *) 0;
  +    return mkconfig(p);
   }
   
  -static const char *set_speling(cmd_parms *cmd, void *dummy, int arg)
  +/*
  + * Handler for the CheckSpelling directive, which is FLAG.
  + */
  +static const char *set_speling(cmd_parms *cmd, void *mconfig, int arg)
   {
  -    void *server_conf = cmd->server->module_config;
  +    spconfig *cfg = (spconfig *) mconfig;
   
  -    /* any non-NULL pointer means speling is enabled */
  -    ap_set_module_config(server_conf, &speling_module,
  -                      arg ? (void *) &speling_module : NULL);
  +    cfg->enabled = arg;
       return NULL;
   }
   
  +/*
  + * Define the directives specific to this module.  This structure is 
referenced
  + * later by the 'module' structure.
  + */
   static const command_rec speling_cmds[] =
   {
  -    {"CheckSpelling", set_speling, NULL, RSRC_CONF, FLAG,
  -     "whether or not to fix miscapitalized/misspelled requests"},
  -    {NULL}
  +    { "CheckSpelling", set_speling, NULL, OR_OPTIONS, FLAG,
  +      "whether or not to fix miscapitalized/misspelled requests" },
  +    { NULL }
   };
   
   typedef enum {
  @@ -481,9 +514,9 @@
   {
       STANDARD_MODULE_STUFF,
       NULL,                       /* initializer */
  -    NULL,                       /* create per-dir config */
  +    create_mconfig_for_directory,  /* create per-dir config */
       NULL,                       /* merge per-dir config */
  -    create_speling_config,      /* server config */
  +    create_mconfig_for_server,  /* server config */
       NULL,                       /* merge server config */
       speling_cmds,               /* command table */
       NULL,                       /* handlers */
  
  
  
  1.1009    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1008
  retrieving revision 1.1009
  diff -u -r1.1008 -r1.1009
  --- CHANGES   1998/08/06 19:23:41     1.1008
  +++ CHANGES   1998/08/06 23:32:01     1.1009
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Enhance mod_spelling so that CheckSpelling can be used in
  +     <Directory> containers and .htaccess files.  [Ken Coar]
  +
     *) API: new ap_custom_response() function for hooking into the
        ErrorDocument mechanism at runtime [Doug MacEachern]
   
  
  
  

Reply via email to