coar 98/09/24 08:53:41
Modified: src/modules/standard mod_autoindex.c
Log:
mod_autoindex wasn't inheriting options from parent directories
properly; the use of any other mod_autoindex directives in
a .htaccess that didn't also include IndexOptions would wipe
out any IndexOptions settings.
PR: 3061
Revision Changes Path
1.93 +11 -2 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.92
retrieving revision 1.93
diff -u -r1.92 -r1.93
--- mod_autoindex.c 1998/09/24 10:41:55 1.92
+++ mod_autoindex.c 1998/09/24 15:53:40 1.93
@@ -93,6 +93,7 @@
#define SUPPRESS_DESC 32
#define SUPPRESS_PREAMBLE 64
#define SUPPRESS_COLSORT 128
+#define NO_OPTIONS 256
#define K_PAD 1
#define K_NOPAD 0
@@ -331,7 +332,7 @@
opts |= SUPPRESS_COLSORT;
}
else if (!strcasecmp(w, "None")) {
- opts = 0;
+ opts = NO_OPTIONS;
}
else if (!strcasecmp(w, "IconWidth")) {
d_cfg->icon_width = DEFAULT_ICON_WIDTH;
@@ -362,6 +363,9 @@
return "Invalid directory indexing option";
}
}
+ if ((opts & NO_OPTIONS) && (opts & ~NO_OPTIONS)) {
+ return "Cannot combine other IndexOptions keywords with 'None'";
+ }
d_cfg->opts = opts;
return NULL;
}
@@ -436,7 +440,12 @@
new->desc_list = ap_append_arrays(p, add->desc_list, base->desc_list);
new->icon_list = ap_append_arrays(p, add->icon_list, base->icon_list);
new->rdme_list = ap_append_arrays(p, add->rdme_list, base->rdme_list);
- new->opts = add->opts;
+ if (add->opts & NO_OPTIONS) {
+ new->opts = NO_OPTIONS;
+ }
+ else {
+ new->opts = base->opts | add->opts;
+ }
new->name_width = add->name_width;
new->name_adjust = add->name_adjust;