diff -ruN lighttpd-1.4.19.orig/src/mod_dirlisting.c lighttpd-1.4.19/src/mod_dirlisting.c
--- lighttpd-1.4.19.orig/src/mod_dirlisting.c.orig 2007-08-18 14:25:52.000000000 +0200
+++ lighttpd-1.4.19/src/mod_dirlisting.c 2008-07-17 17:10:03.000000000 +0200
@@ -54,6 +54,8 @@
unsigned short hide_readme_file;
unsigned short show_header;
unsigned short hide_header_file;
+ unsigned short show_favicon;
+ unsigned short hide_favicon;
excludes_buffer *excludes;
@@ -241,6 +243,8 @@
#define CONFIG_HIDE_README_FILE "dir-listing.hide-readme-file"
#define CONFIG_SHOW_HEADER "dir-listing.show-header"
#define CONFIG_HIDE_HEADER_FILE "dir-listing.hide-header-file"
+#define CONFIG_SHOW_FAVICON "dir-listing.show-favicon"
+#define CONFIG_HIDE_FAVICON "dir-listing.hide-favicon"
#define CONFIG_DIR_LISTING "server.dir-listing"
#define CONFIG_SET_FOOTER "dir-listing.set-footer"
@@ -259,8 +263,10 @@
{ CONFIG_HIDE_README_FILE, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 6 */
{ CONFIG_SHOW_HEADER, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 7 */
{ CONFIG_HIDE_HEADER_FILE, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */
- { CONFIG_DIR_LISTING, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 9 */
- { CONFIG_SET_FOOTER, NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 10 */
+ { CONFIG_SHOW_FAVICON, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 9 */
+ { CONFIG_HIDE_FAVICON, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 10 */
+ { CONFIG_DIR_LISTING, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 11 */
+ { CONFIG_SET_FOOTER, NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 12 */
{ NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
};
@@ -282,6 +288,8 @@
s->hide_readme_file = 0;
s->show_header = 0;
s->hide_header_file = 0;
+ s->show_favicon = 0;
+ s->hide_favicon = 0;
s->encoding = buffer_init();
s->set_footer = buffer_init();
@@ -294,8 +302,10 @@
cv[6].destination = &(s->hide_readme_file);
cv[7].destination = &(s->show_header);
cv[8].destination = &(s->hide_header_file);
- cv[9].destination = &(s->dir_listing); /* old name */
- cv[10].destination = s->set_footer;
+ cv[9].destination = &(s->show_favicon);
+ cv[10].destination = &(s->hide_favicon);
+ cv[11].destination = &(s->dir_listing); /* old name */
+ cv[12].destination = s->set_footer;
p->config_storage[i] = s;
ca = ((data_config *)srv->config_context->data[i])->value;
@@ -324,6 +334,8 @@
PATCH(hide_readme_file);
PATCH(show_header);
PATCH(hide_header_file);
+ PATCH(show_favicon);
+ PATCH(hide_favicon);
PATCH(excludes);
PATCH(set_footer);
@@ -356,6 +368,10 @@
PATCH(show_header);
} else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_HIDE_HEADER_FILE))) {
PATCH(hide_header_file);
+ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_SHOW_FAVICON))) {
+ PATCH(show_favicon);
+ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_HIDE_FAVICON))) {
+ PATCH(hide_favicon);
} else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_SET_FOOTER))) {
PATCH(set_footer);
} else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_EXCLUDE))) {
@@ -462,6 +478,20 @@
);
buffer_append_string_encoded(out, CONST_BUF_LEN(con->uri.path), ENCODING_MINIMAL_XML);
BUFFER_APPEND_STRING_CONST(out, "\n");
+
+ if (p->conf.show_favicon) {
+ stream s;
+ /* if we have a favicon file, display it */
+
+ buffer_copy_string_buffer(p->tmp_buf, con->physical.path);
+ BUFFER_APPEND_SLASH(p->tmp_buf);
+ BUFFER_APPEND_STRING_CONST(p->tmp_buf, "favicon.ico");
+
+ if (-1 != stream_open(&s, p->tmp_buf)) {
+ BUFFER_APPEND_STRING_CONST(out, "\n");
+ }
+ stream_close(&s);
+ }
if (p->conf.external_css->used > 1) {
BUFFER_APPEND_STRING_CONST(out, "d_name, "HEADER.txt") == 0)
continue;
}
-
+ if (p->conf.hide_favicon) {
+ if (strcmp(dent->d_name, "favicon.ico") == 0)
+ continue;
+ }
+
/* compare d_name against excludes array
* elements, skipping any that match.
*/