Index: /trunk/Server/config.c
===================================================================
--- /trunk/Server/config.c	(revision 32)
+++ /trunk/Server/config.c	(revision 33)
@@ -84,4 +84,5 @@
 	config.root.icon_count = 0;
 	config.root.index_count = 0;
+	config.root.readme_count = 0;
 	config.vhost_count = 0;
 	config.module_count = 0;
@@ -184,4 +185,5 @@
 								current->icon_count = 0;
 								current->index_count = 0;
+								current->readme_count = 0;
 								int i;
 								current->name = cm_strdup(vhost);
@@ -288,4 +290,8 @@
 						for(i = 1; r[i] != NULL; i++) {
 							current->indexes[current->index_count++] = cm_strdup(r[i]);
+						}
+					} else if(cm_strcaseequ(r[0], "Readme")) {
+						for(i = 1; r[i] != NULL; i++) {
+							current->readmes[current->readme_count++] = cm_strdup(r[i]);
 						}
 					} else {
Index: /trunk/Server/server.c
===================================================================
--- /trunk/Server/server.c	(revision 32)
+++ /trunk/Server/server.c	(revision 33)
@@ -513,8 +513,12 @@
 							addstring(&str, "				<th>Size</th>\n");
 							addstring(&str, "			</tr>\n");
+							int readme = -1;
+							char** readmes = vhost_entry->readme_count == 0 ? config.root.readmes : vhost_entry->readmes;
+							int readme_count = vhost_entry->readme_count == 0 ? config.root.readme_count : vhost_entry->readme_count;
 							if(items != NULL) {
 								int phase = 0;
 							doit:
 								for(i = 0; items[i] != NULL; i++) {
+									int j;
 									char* fpth = cm_strcat3(path, "/", items[i]);
 									struct stat s;
@@ -529,4 +533,16 @@
 										continue;
 									}
+									if(readme == -1) {
+										for(j = 0; j < readme_count; j++) {
+											if(strcmp(items[i], readmes[j]) == 0) {
+												readme = j;
+												break;
+											}
+										}
+										if(readme != -1) {
+											free(fpth);
+											continue;
+										}
+									}
 									if(s.st_size < 1024ULL) {
 										sprintf(size, "%d", (int)s.st_size);
@@ -544,5 +560,4 @@
 
 									char* ext = NULL;
-									int j;
 									for(j = strlen(items[i]) - 1; j >= 0; j--) {
 										if(items[i][j] == '.') {
@@ -595,4 +610,18 @@
 							}
 							addstring(&str, "		</table>\n");
+							if(readme != -1) {
+								addstring(&str, "<hr>\n");
+								char* fpth = cm_strcat3(path, "/", readmes[readme]);
+								struct stat s;
+								stat(fpth, &s);
+								FILE* fr = fopen(fpth, "r");
+								if(fr != NULL) {
+									char* rmbuf = malloc(s.st_size + 1);
+									rmbuf[s.st_size] = 0;
+									fread(rmbuf, s.st_size, 1, fr);
+									addstring(&str, "<pre><code>%h</code></pre>\n", rmbuf);
+									fclose(fr);
+								}
+							}
 							addstring(&str, "		<hr>\n");
 							addstring(&str, "		<address>%s Server at %s Port %d</address>\n", tw_server, name, port);
Index: /trunk/Server/tw_config.h
===================================================================
--- /trunk/Server/tw_config.h	(revision 32)
+++ /trunk/Server/tw_config.h	(revision 33)
@@ -29,4 +29,5 @@
 #define MAX_ICON 1024
 #define MAX_INDEX 1024
+#define MAX_README 8
 
 enum TW_DIR_TYPE {
@@ -65,4 +66,6 @@
 	char* indexes[MAX_INDEX];
 	int index_count;
+	char* readmes[MAX_README];
+	int readme_count;
 };
 
Index: /trunk/Server/version.c
===================================================================
--- /trunk/Server/version.c	(revision 32)
+++ /trunk/Server/version.c	(revision 33)
@@ -5,5 +5,5 @@
 #include "tw_version.h"
 
-const char* tw_version = "0.00";
+const char* tw_version = "1.00";
 
 const char* tw_platform =
Index: /trunk/example.conf
===================================================================
--- /trunk/example.conf	(revision 32)
+++ /trunk/example.conf	(revision 33)
@@ -4,6 +4,6 @@
 #LoadModule /home/nishi/SVN/tewi/trunk/Module/mod_example.so
 
-Listen 8080
-#ListenSSL 443
+Listen 80
+ListenSSL 443
 
 SSLKey key.pem
@@ -23,4 +23,6 @@
 DirectoryIndex index.html
 
+Readme README
+
 DocumentRoot /var/www
 
