76 lines
2.4 KiB
Diff
76 lines
2.4 KiB
Diff
Index: modules/generators/mod_autoindex.c
|
|
===================================================================
|
|
--- modules/generators/mod_autoindex.c (revision 570961)
|
|
+++ modules/generators/mod_autoindex.c (revision 570962)
|
|
@@ -138,6 +138,8 @@
|
|
apr_array_header_t *hdr_list;
|
|
apr_array_header_t *rdme_list;
|
|
|
|
+ char *ctype;
|
|
+ char *charset;
|
|
} autoindex_config_rec;
|
|
|
|
static char c_by_encoding, c_by_type, c_by_path;
|
|
@@ -476,6 +478,12 @@
|
|
d_cfg->desc_adjust = K_NOADJUST;
|
|
}
|
|
}
|
|
+ else if (!strncasecmp(w, "Type=", 5)) {
|
|
+ d_cfg->ctype = apr_pstrdup(cmd->pool, &w[5]);
|
|
+ }
|
|
+ else if (!strncasecmp(w, "Charset=", 8)) {
|
|
+ d_cfg->charset = apr_pstrdup(cmd->pool, &w[8]);
|
|
+ }
|
|
else {
|
|
return "Invalid directory indexing option";
|
|
}
|
|
@@ -620,6 +628,9 @@
|
|
new->icon_height = add->icon_height ? add->icon_height : base->icon_height;
|
|
new->icon_width = add->icon_width ? add->icon_width : base->icon_width;
|
|
|
|
+ new->ctype = add->ctype ? add->ctype : base->ctype;
|
|
+ new->charset = add->charset ? add->charset : base->charset;
|
|
+
|
|
new->alt_list = apr_array_append(p, add->alt_list, base->alt_list);
|
|
new->ign_list = apr_array_append(p, add->ign_list, base->ign_list);
|
|
new->hdr_list = apr_array_append(p, add->hdr_list, base->hdr_list);
|
|
@@ -1971,6 +1982,8 @@
|
|
char *colargs;
|
|
char *fullpath;
|
|
apr_size_t dirpathlen;
|
|
+ char *ctype = "text/html";
|
|
+ char *charset;
|
|
|
|
if ((status = apr_dir_open(&thedir, name, r->pool)) != APR_SUCCESS) {
|
|
ap_log_rerror(APLOG_MARK, APLOG_ERR, status, r,
|
|
@@ -1978,11 +1991,27 @@
|
|
return HTTP_FORBIDDEN;
|
|
}
|
|
|
|
+ if (autoindex_conf->ctype) {
|
|
+ ctype = autoindex_conf->ctype;
|
|
+ }
|
|
+ if (autoindex_conf->charset) {
|
|
+ charset = autoindex_conf->charset;
|
|
+ }
|
|
+ else {
|
|
#if APR_HAS_UNICODE_FS
|
|
- ap_set_content_type(r, "text/html;charset=utf-8");
|
|
+ charset = "UTF-8";
|
|
#else
|
|
- ap_set_content_type(r, "text/html");
|
|
+ charset = "ISO-8859-1";
|
|
#endif
|
|
+ }
|
|
+ if (*charset) {
|
|
+ ap_set_content_type(r, apr_pstrcat(r->pool, ctype, ";charset=",
|
|
+ charset, NULL));
|
|
+ }
|
|
+ else {
|
|
+ ap_set_content_type(r, ctype);
|
|
+ }
|
|
+
|
|
if (autoindex_opts & TRACK_MODIFIED) {
|
|
ap_update_mtime(r, r->finfo.mtime);
|
|
ap_set_last_modified(r);
|