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.