coar 98/10/17 07:17:11
Modified: src CHANGES
src/modules/standard mod_autoindex.c
Log:
IndexOptions NameWidth was not getting inherited properly
by directories that had mod_autoindex directives in the .htaccess
but no actual IndexOptions line. Also, NameWidth, IconHeight,
and IconWidth couldn't be incrementally enabled with '+'.
Revision Changes Path
1.1110 +3 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1109
retrieving revision 1.1110
diff -u -r1.1109 -r1.1110
--- CHANGES 1998/10/16 07:04:41 1.1109
+++ CHANGES 1998/10/17 14:17:08 1.1110
@@ -1,5 +1,8 @@
Changes with Apache 1.3.4
+ *) Fix inheritance of IndexOptions NameWidth and remove unintended
+ restriction on +NameWidth, +IconHeight, and +IconWidth. [Ken Coar]
+
*) Fix per-directory config merging for cases in which a 500 error
is encountered in an .htaccess file somewhere down the tree.
[Ken Coar] PR#2409
1.97 +28 -12 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.96
retrieving revision 1.97
diff -u -r1.96 -r1.97
--- mod_autoindex.c 1998/10/04 06:13:18 1.96
+++ mod_autoindex.c 1998/10/17 14:17:10 1.97
@@ -98,6 +98,10 @@
#define K_PAD 1
#define K_NOPAD 0
+#define K_NOADJUST 0
+#define K_ADJUST 1
+#define K_UNSET 2
+
/*
* Define keys for sorting.
*/
@@ -368,8 +372,8 @@
}
}
else if (!strncasecmp(w, "IconWidth=", 10)) {
- if (action != '\0') {
- return "Cannot combine '+' or '-' with IconWidth=n";
+ if (action == '-') {
+ return "Cannot combine '-' with IconWidth=n";
}
d_cfg->icon_width = atoi(&w[10]);
}
@@ -382,8 +386,8 @@
}
}
else if (!strncasecmp(w, "IconHeight=", 11)) {
- if (action != '\0') {
- return "Cannot combine '+' or '-' with IconHeight=n";
+ if (action == '-') {
+ return "Cannot combine '-' with IconHeight=n";
}
d_cfg->icon_height = atoi(&w[11]);
}
@@ -393,14 +397,14 @@
"'-NameWidth'";
}
d_cfg->name_width = DEFAULT_NAME_WIDTH;
- d_cfg->name_adjust = 0;
+ d_cfg->name_adjust = K_NOADJUST;
}
else if (!strncasecmp(w, "NameWidth=", 10)) {
- if (action != '\0') {
- return "Cannot combine '+' or '-' with NameWidth=n";
+ if (action == '-') {
+ return "Cannot combine '-' with NameWidth=n";
}
if (w[10] == '*') {
- d_cfg->name_adjust = 1;
+ d_cfg->name_adjust = K_ADJUST;
}
else {
int width = atoi(&w[10]);
@@ -409,6 +413,7 @@
return "NameWidth value must be greater than 1";
}
d_cfg->name_width = width;
+ d_cfg->name_adjust = K_NOADJUST;
}
}
else {
@@ -477,7 +482,7 @@
new->icon_width = 0;
new->icon_height = 0;
new->name_width = DEFAULT_NAME_WIDTH;
- new->name_adjust = 0;
+ new->name_adjust = K_UNSET;
new->icon_list = ap_make_array(p, 4, sizeof(struct item));
new->alt_list = ap_make_array(p, 4, sizeof(struct item));
new->desc_list = ap_make_array(p, 4, sizeof(struct item));
@@ -550,9 +555,20 @@
*/
new->opts |= new->incremented_opts;
new->opts &= ~new->decremented_opts;
+ }
+ /*
+ * Inherit the NameWidth settings if there aren't any specific to
+ * the new location; otherwise we'll end up using the defaults set in the
+ * config-rec creation routine.
+ */
+ if (add->name_adjust == K_UNSET) {
+ new->name_width = base->name_width;
+ new->name_adjust = base->name_adjust;
+ }
+ else {
+ new->name_width = add->name_width;
+ new->name_adjust = add->name_adjust;
}
- new->name_width = add->name_width;
- new->name_adjust = add->name_adjust;
return new;
}
@@ -1030,7 +1046,7 @@
}
name_width = d->name_width;
- if (d->name_adjust) {
+ if (d->name_adjust == K_ADJUST) {
for (x = 0; x < n; x++) {
int t = strlen(ar[x]->name);
if (t > name_width) {