coar        98/10/02 14:35:40

  Modified:    htdocs/manual/mod mod_autoindex.html
               src/modules/standard mod_autoindex.c
  Log:
        Back off a portion of the incremental-IndexOptions patch;
        unprefixed keywords should clear all inherited options and
        start setting the local directory's options from scratch.
        Otherwise, 'keyword' and '+keyword' are essentially identical,
        and clearing inheritance a pain.
  
  Revision  Changes    Path
  1.26      +4 -8      apache-1.3/htdocs/manual/mod/mod_autoindex.html
  
  Index: mod_autoindex.html
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_autoindex.html,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- mod_autoindex.html        1998/09/28 22:32:10     1.25
  +++ mod_autoindex.html        1998/10/02 21:35:33     1.26
  @@ -637,8 +637,8 @@
   Whenever a '+' or '-' prefixed keyword is encountered, it is applied
   to the current <SAMP>IndexOptions</SAMP> settings (which may have been
   inherited from an upper-level directory).  However, whenever an unprefixed
  -keyword is processed, it clears all incremental settings.  Consider
  -the following example:
  +keyword is processed, it clears all inherited options and any incremental
  +settings encountered so far.  Consider the following example:
   </P>
   <BLOCKQUOTE><CODE>IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing
   <BR>
  @@ -654,13 +654,9 @@
   </P>
   <P>
   To unconditionally set the <CODE>IndexOptions</CODE> for a
  -particular directory, clearing the inherited settings, use
  +particular directory, clearing the inherited settings, specify
  +keywords without either '+' or '-' prefixes.
   </P>
  -<BLOCKQUOTE><CODE>
  -IndexOptions None
  -<BR>
  -IndexOptions <EM>new-setting</EM> ...
  -</CODE></BLOCKQUOTE>
   </DD>
   </DL>
   <HR>
  
  
  
  1.95      +24 -9     apache-1.3/src/modules/standard/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -r1.94 -r1.95
  --- mod_autoindex.c   1998/09/28 22:32:12     1.94
  +++ mod_autoindex.c   1998/10/02 21:35:38     1.95
  @@ -512,23 +512,38 @@
       if (add->opts & NO_OPTIONS) {
        /*
         * If the current directory says 'no options' then we also
  -      * clear any incremental mods from being inheritable.
  +      * clear any incremental mods from being inheritable further down.
         */
        new->opts = NO_OPTIONS;
        new->incremented_opts = 0;
        new->decremented_opts = 0;
       }
       else {
  -     new->incremented_opts = (base->incremented_opts 
  -                              | add->incremented_opts)
  -                             & ~add->decremented_opts;
  -     new->decremented_opts = (base->decremented_opts
  -                              | add->decremented_opts);
        /*
  -      * We've got some local settings, so make sure we don't inadvertently
  -      * inherit an IndexOptions None from above.
  +      * If there were any non-incremental options selected for
  +      * this directory, they dominate and we don't inherit *anything.*
  +      * Contrariwise, we *do* inherit if the only settings here are
  +      * incremental ones.
         */
  -     new->opts = ((base->opts | add->opts) & ~NO_OPTIONS);
  +     if (add->opts == 0) {
  +         new->incremented_opts = (base->incremented_opts 
  +                                  | add->incremented_opts)
  +                                 & ~add->decremented_opts;
  +         new->decremented_opts = (base->decremented_opts
  +                                  | add->decremented_opts);
  +         /*
  +          * We may have incremental settings, so make sure we don't
  +          * inadvertently inherit an IndexOptions None from above.
  +          */
  +         new->opts = (base->opts & ~NO_OPTIONS);
  +     }
  +     else {
  +         /*
  +          * There are local non-incremental settings, which clear
  +          * all inheritance from above.  They *are* the new base settings.
  +          */
  +         new->opts = add->opts;;
  +     }
        /*
         * We're guaranteed that there'll be no overlap between
         * the add-options and the remove-options.
  
  
  

Reply via email to