--- Begin Message ---
Package: thy
Version: 0.9.4-1.1
Severity: wishlist
Tags: patch
Hi,
as I store my file names as UTF-8, I need thy to add the appropirate
meta header to the directory indexes. Attached is a script that does
that in a configurable way. Info-Documentation updated.
Greetings from DebConf, Helsinki,
Joachim
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.10.otto
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Versions of packages thy depends on:
ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an
ii libgnutls11 1.0.16-13.1 GNU TLS library - runtime library
ii zlib1g 1:1.2.2-8 compression library - runtime
thy recommends no packages.
-- no debconf information
diff -ru thy-0.9.4/debian/changelog thy-0.9.4-my/debian/changelog
--- thy-0.9.4/debian/changelog 2005-07-14 16:53:49.789977936 +0300
+++ thy-0.9.4-my/debian/changelog 2005-07-14 15:31:16.589978792 +0300
@@ -1,3 +1,9 @@
+thy (0.9.4-1.1) UNRELEASED; urgency=low
+
+ * Added FileEncoding support
+
+ -- Joachim Breitner <[EMAIL PROTECTED]> Thu, 14 Jul 2005 15:31:09 +0300
+
thy (0.9.4-1) unstable; urgency=high
* The `Some Other Level' release.
diff -ru thy-0.9.4/doc/thy.texi thy-0.9.4-my/doc/thy.texi
--- thy-0.9.4/doc/thy.texi 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/doc/thy.texi 2005-07-14 15:51:43.104520240 +0300
@@ -534,6 +534,14 @@
Default is @file{/var/www}.
@end display
[EMAIL PROTECTED],STRING,fileencoding,f,ENCODING}
[EMAIL PROTECTED]
[EMAIL PROTECTED] specifies the character encoding that is used for
+filename.
+
+Default is @samp{iso-8859-1}
[EMAIL PROTECTED] display
+
@cfgopt{ErrorDoc,PAIR,errordoc,e,CODE=PATH}
@display
Set the error-document for @samp{CODE} the file specified with
diff -ru thy-0.9.4/src/cfg_grammar.y thy-0.9.4-my/src/cfg_grammar.y
--- thy-0.9.4/src/cfg_grammar.y 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/cfg_grammar.y 2005-07-14 16:51:41.717447920 +0300
@@ -54,7 +54,7 @@
%token COMMENT ERROR
%token T_BOOL_OFF T_BOOL_ON
-%token T_DOCUMENTROOT T_LISTEN T_DEFAULT_TYPE T_TIMEOUT
+%token T_DOCUMENTROOT T_LISTEN T_DEFAULT_TYPE T_TIMEOUT T_FILEENCODING
%token T_USERDIR T_UID T_PIDFILE T_IPV4 T_IPV6 T_MAP T_INDEXES
%token T_CGIEXTS T_ERRORDOC T_CGIDIRS T_ADDENV T_ADDHANDLER
%token T_ADDMETHOD T_ADDHEADER T_ADDTYPE T_GZIP T_TYPE
@@ -106,6 +106,8 @@
| T_DOCUMENTROOT T_STRING { add_arg ("-w", $2); }
+ | T_FILEENCODING T_STRING { add_arg ("-f", $2); }
+
| T_LISTEN T_STRING { add_arg ("-l", $2); }
| T_IPV4 { bhl_list_append_string (conffile_list, "-4"); }
| T_IPV6 { bhl_list_append_string (conffile_list, "-6"); }
diff -ru thy-0.9.4/src/cfg_lexer.l thy-0.9.4-my/src/cfg_lexer.l
--- thy-0.9.4/src/cfg_lexer.l 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/cfg_lexer.l 2005-07-14 16:27:23.861075776 +0300
@@ -82,6 +82,7 @@
MaxKeepAliveRequests { return T_MAXKEEPALIVEREQUESTS; }
DocumentRoot { return T_DOCUMENTROOT; }
+FileEncoding { return T_FILEENCODING; }
Listen { return T_LISTEN; }
DefaultType { return T_DEFAULT_TYPE; }
Timeout { return T_TIMEOUT; }
diff -ru thy-0.9.4/src/config.c thy-0.9.4-my/src/config.c
--- thy-0.9.4/src/config.c 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/config.c 2005-07-14 16:27:42.595227752 +0300
@@ -145,6 +145,7 @@
{"unmap", 'F', NULL, OPTION_HIDDEN, "Globalise subsequent options", 1},
{"alias", 'A', "SOURCE=DEST", 0, "Add a new alias", 1},
{"cache-control", 'X', "FIELD=VALUE", 0, "Change cache control options", 1},
+ {"fileencoding", 'f', "ENCODING", 0, "Character encoding of the filenames",
1},
{0, 0, 0, 0, NULL, 0}
};
static error_t _config_parse_opt (int key, char *arg,
@@ -1396,6 +1397,9 @@
if (wl > 1 && map_cfg->webroot[wl - 1] == '/')
map_cfg->webroot[wl - 1] = '\0';
break;
+ case 'f':
+ map_cfg->fileencoding = bhc_strdup (arg);
+ break;
case 't':
subopts = arg;
while (*subopts != '\0')
@@ -1489,6 +1493,7 @@
thy_default_config.webroot = _THY_WEBROOT;
thy_default_config.default_type = _THY_DEFTYPE;
thy_default_config.userdir = _THY_USERDIR;
+ thy_default_config.fileencoding = _THY_FILEENCODING;
thy_default_config.options.userdir = THY_BOOL_TRUE;
thy_default_config.options.vhosting = THY_BOOL_FALSE;
@@ -1744,6 +1749,8 @@
cfg->default_type = map->config->default_type;
if (map->config->userdir)
cfg->userdir = map->config->userdir;
+ if (map->config->fileencoding)
+ cfg->fileencoding = map->config->fileencoding;
for (j = HTTP_STATUS_100; j < HTTP_STATUS_UNKNOWN; j++)
{
if (map->config->http_status[j])
diff -ru thy-0.9.4/src/dirindex.c thy-0.9.4-my/src/dirindex.c
--- thy-0.9.4/src/dirindex.c 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/dirindex.c 2005-07-14 15:30:48.313277504 +0300
@@ -148,11 +148,12 @@
*
* @param path is the path to index.
* @param url is the URL we do the indexing for.
+ * @param fileencoding is the configures encoding for filenames
*
* @returns The directory index, or NULL on error.
*/
char *
-directory_index (const char *path, const char *url)
+directory_index (const char *path, const char *url, const char *fileencoding)
{
struct dirent **namelist;
struct stat st;
@@ -260,6 +261,7 @@
"Transitional//EN\">"
"\n"
"<html>\n<head>\n <title>Directory listing of %s</title>\n"
+ " <meta http-equiv=\"Content-Type\" content=\"text/html;
charset=%s\">\n"
" <meta name=\"generator\" content=\"%s\">\n"
"</head>\n<body bgcolor=\"#ffffff\" text=\"#000000\">\n"
"<h2>Index of %s</h2>\n<table width=\"100%%\">\n"
@@ -268,7 +270,7 @@
"%s"
"</table>\n<hr noshade>\nIndex generated %s by %s\n"
"</body>\n</html>\n",
- hurl, thy_servername (NULL), hurl, (d_dirs) ? h_dirs : "",
+ hurl, fileencoding, thy_servername (NULL), hurl, (d_dirs) ? h_dirs
: "",
(d_files) ? h_files : "", t, servername);
free (hurl);
diff -ru thy-0.9.4/src/dirindex.h thy-0.9.4-my/src/dirindex.h
--- thy-0.9.4/src/dirindex.h 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/dirindex.h 2005-07-14 15:31:01.839221248 +0300
@@ -25,6 +25,6 @@
#ifndef _THY_DIRINDEX_H
#define _THY_DIRINDEX_H 1 /**< dirindex.h multi-inclusion guard. */
-char *directory_index (const char *path, const char *url);
+char *directory_index (const char *path, const char *url, const char
*fileencoding);
#endif /* !_THY_DIRINDEX_H */
diff -ru thy-0.9.4/src/session.c thy-0.9.4-my/src/session.c
--- thy-0.9.4/src/session.c 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/session.c 2005-07-14 16:01:25.027054568 +0300
@@ -505,12 +505,14 @@
session->conntime,
config->timeout)) == NULL)
di = directory_index (session->request->resolved,
- session->request->url);
+ session->request->url,
+ map_config->fileencoding);
else
{
if (buf.st_mtime > csession->conntime)
di = directory_index (session->request->resolved,
- session->request->url);
+ session->request->url,
+ map_config->fileencoding);
else
di = bhc_strdup (csession->body.buffer);
}
diff -ru thy-0.9.4/src/thy.h thy-0.9.4-my/src/thy.h
--- thy-0.9.4/src/thy.h 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/thy.h 2005-07-14 15:56:25.549582064 +0300
@@ -83,6 +83,7 @@
version. */
#define _THY_WORKER_PROTOCOL_VERSION 1 /**< Worker protocol
version. */
+#define _THY_FILEENCODING "iso-8859-1" /**< Default Filename Encoding */
#ifndef __DOXYGEN__
#if SIZEOF_SIZE_T == 4
diff -ru thy-0.9.4/src/types.h thy-0.9.4-my/src/types.h
--- thy-0.9.4/src/types.h 2004-10-30 15:06:24.000000000 +0300
+++ thy-0.9.4-my/src/types.h 2005-07-14 16:01:04.488176952 +0300
@@ -482,6 +482,8 @@
char *http_status[HTTP_STATUS_UNKNOWN]; /**< HTTP status code to
error document mapping
table. */
+
+ char *fileencoding; /**< Fileencoding of file names */
/** Options settable via -o.
*/
--- End Message ---