wrowe 00/10/24 19:46:43
Modified: src/modules/standard mod_autoindex.c
src/lib/apr aprlib.dsp
src/lib/apr/file_io/unix fileacc.c
src/lib/apr/file_io/win32 dir.c filedup.c fileio.h
filestat.c open.c
src/lib/apr/include apr.h.in apr.hw
Log:
Ok here it is: Win32 utf-8 native unicode filename support.
There are just too many folks to credit... so this goes out from
the entire ApacheCon hacking team :-)
Revision Changes Path
1.44 +3 -0 apache-2.0/src/modules/standard/mod_autoindex.c
Index: mod_autoindex.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/modules/standard/mod_autoindex.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- mod_autoindex.c 2000/10/16 06:05:04 1.43
+++ mod_autoindex.c 2000/10/25 02:46:40 1.44
@@ -1558,6 +1558,9 @@
}
r->content_type = "text/html";
+#if APR_HAS_UNICODE_FS
+ r->content_type = "text/html;charset=utf-8";
+#endif
ap_send_http_header(r);
1.43 +3 -10 apache-2.0/src/lib/apr/aprlib.dsp
Index: aprlib.dsp
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/aprlib.dsp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- aprlib.dsp 2000/10/17 17:47:47 1.42
+++ aprlib.dsp 2000/10/25 02:46:41 1.43
@@ -43,7 +43,7 @@
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"
/YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "dso/win32" /I
"file_io/win32" /I "locks/win32" /I "misc/win32" /I "misc/unix" /I
"network_io/win32" /I "threadproc/win32" /I "time/win32" /D "NDEBUG" /D
"APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "dso/win32" /I
"file_io/win32" /I "locks/win32" /I "misc/win32" /I "misc/unix" /I
"network_io/win32" /I "threadproc/win32" /I "time/win32" /I "i18n/unix" /D
"NDEBUG" /D "APR_UNICODE" /D "APR_IMPLEMENT_UNICODE" /D "APR_DECLARE_EXPORT" /D
"WIN32" /D "_WINDOWS" /FD /c
# SUBTRACT CPP /YX
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
@@ -68,8 +68,8 @@
RSC=rc.exe
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
-# ADD BASE CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "include" /I "dso/win32" /I
"file_io/win32" /I "locks/win32" /I "misc/win32" /I "misc/unix" /I
"network_io/win32" /I "threadproc/win32" /I "time/win32" /D "_DEBUG" /D
"APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /GX /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"
/YX /FD /ZI /c
+# ADD CPP /nologo /MDd /W3 /GX /Od /I "include" /I "dso/win32" /I
"file_io/win32" /I "locks/win32" /I "misc/win32" /I "misc/unix" /I
"network_io/win32" /I "threadproc/win32" /I "time/win32" /I "i18n/unix" /D
"_DEBUG" /D "APR_UNICODE" /D "APR_IMPLEMENT_UNICODE" /D "APR_DECLARE_EXPORT" /D
"WIN32" /D "_WINDOWS" /FD /ZI /c
# SUBTRACT CPP /YX
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
@@ -341,13 +341,6 @@
# Begin Source File
SOURCE=.\i18n\unix\utf8_ucs2.c
-
-!IF "$(CFG)" == "aprlib - Win32 Release"
-
-!ELSEIF "$(CFG)" == "aprlib - Win32 Debug"
-
-!ENDIF
-
# End Source File
# Begin Source File
1.34 +16 -0 apache-2.0/src/lib/apr/file_io/unix/fileacc.c
Index: fileacc.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/unix/fileacc.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- fileacc.c 2000/08/02 05:25:50 1.33
+++ fileacc.c 2000/10/25 02:46:41 1.34
@@ -68,11 +68,27 @@
#else
#include "fileio.h"
#endif
+#if APR_HAS_UNICODE_FS
+#include "i18n.h"
+#endif
+
/* A file to put ALL of the accessor functions for apr_file_t types. */
apr_status_t apr_get_filename(char **fname, apr_file_t *thefile)
{
+#if APR_HAS_UNICODE_FS
+ apr_status_t rv;
+ int len = wcslen(thefile->fname) + 1;
+ int dremains = MAX_PATH;
+ *fname = apr_palloc(thefile->cntxt, len * 2);
+ if ((rv = conv_ucs2_to_utf8(thefile->fname, &len,
+ *fname, &dremains)))
+ return rv;
+ if (len)
+ return APR_ENAMETOOLONG;
+#else
*fname = apr_pstrdup(thefile->cntxt, thefile->fname);
+#endif
return APR_SUCCESS;
}
1.29 +65 -30 apache-2.0/src/lib/apr/file_io/win32/dir.c
Index: dir.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/dir.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- dir.c 2000/10/23 17:21:11 1.28
+++ dir.c 2000/10/25 02:46:41 1.29
@@ -57,6 +57,9 @@
#include "apr_file_io.h"
#include "apr_strings.h"
#include "apr_portable.h"
+#if APR_HAS_UNICODE_FS
+#include "i18n.h"
+#endif
#include "atime.h"
#if APR_HAVE_ERRNO_H
@@ -75,70 +78,90 @@
apr_status_t dir_cleanup(void *thedir)
{
apr_dir_t *dir = thedir;
- if (!CloseHandle(dir->dirhand)) {
+ if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) {
return apr_get_os_error();
}
+ dir->dirhand = INVALID_HANDLE_VALUE;
return APR_SUCCESS;
}
apr_status_t apr_opendir(apr_dir_t **new, const char *dirname, apr_pool_t
*cont)
{
+ int len = strlen(dirname);
+#if APR_HAS_UNICODE_FS
+ apr_status_t rv;
+ int lremains = len;
+ int dremains = (len + 3) * 2;
(*new) = apr_pcalloc(cont, sizeof(apr_dir_t));
- (*new)->cntxt = cont;
- (*new)->entry = NULL;
- if (dirname[strlen(dirname)] == '/') {
- (*new)->dirname = apr_pstrcat(cont, dirname, "*", NULL);
- }
- else {
- (*new)->dirname = apr_pstrcat(cont, dirname, "/*", NULL);
+ (*new)->entry = apr_pcalloc(cont, sizeof(WIN32_FIND_DATAW));
+ (*new)->dirname = apr_palloc(cont, dremains);
+ if ((rv = conv_utf8_to_ucs2(dirname, &lremains,
+ (*new)->dirname, &dremains)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+ len = (len + 3) * 2 - dremains;
+#else
+ (*new) = apr_pcalloc(cont, sizeof(apr_dir_t));
+ (*new)->entry = apr_pcalloc(cont, sizeof(WIN32_FIND_DATA));
+ (*new)->dirname = apr_palloc(cont, len + 3);
+ memcpy((*new)->dirname, dirname, len);
+#endif
+ if (len && dirname[len - 1] != '/') {
+ (*new)->dirname[len++] = '/';
}
+ (*new)->dirname[len++] = '*';
+ (*new)->dirname[len] = '\0';
+ (*new)->cntxt = cont;
(*new)->dirhand = INVALID_HANDLE_VALUE;
apr_register_cleanup((*new)->cntxt, (void *)(*new), dir_cleanup,
apr_null_cleanup);
return APR_SUCCESS;
}
-apr_status_t apr_closedir(apr_dir_t *thedir)
+apr_status_t apr_closedir(apr_dir_t *dir)
{
- if (!FindClose(thedir->dirhand)) {
- return apr_get_os_error();
+ if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) {
+ return apr_get_os_error();
}
- apr_kill_cleanup(thedir->cntxt, thedir, dir_cleanup);
+ dir->dirhand = INVALID_HANDLE_VALUE;
return APR_SUCCESS;
}
apr_status_t apr_readdir(apr_dir_t *thedir)
{
+#if APR_HAS_UNICODE_FS
+ if (thedir->dirhand == INVALID_HANDLE_VALUE) {
+ thedir->dirhand = FindFirstFileW(thedir->dirname, thedir->entry);
+ if (thedir->dirhand == INVALID_HANDLE_VALUE) {
+ return apr_get_os_error();
+ }
+ }
+ else if (!FindNextFileW(thedir->dirhand, thedir->entry)) {
+ return apr_get_os_error();
+ }
+#else
if (thedir->dirhand == INVALID_HANDLE_VALUE) {
- thedir->entry = apr_pcalloc(thedir->cntxt, sizeof(WIN32_FIND_DATA));
thedir->dirhand = FindFirstFile(thedir->dirname, thedir->entry);
if (thedir->dirhand == INVALID_HANDLE_VALUE) {
return apr_get_os_error();
}
- return APR_SUCCESS;
}
- if (!FindNextFile(thedir->dirhand, thedir->entry)) {
+ else if (!FindNextFile(thedir->dirhand, thedir->entry)) {
return apr_get_os_error();
}
+#endif
return APR_SUCCESS;
}
-apr_status_t apr_rewinddir(apr_dir_t *thedir)
+apr_status_t apr_rewinddir(apr_dir_t *dir)
{
- apr_status_t stat;
- apr_pool_t *cont = thedir->cntxt;
- char *temp = apr_pstrdup(cont, thedir->dirname);
- temp[strlen(temp) - 2] = '\0'; /*remove the \* at the end */
- if (thedir->dirhand == INVALID_HANDLE_VALUE) {
- return APR_SUCCESS;
- }
- if ((stat = apr_closedir(thedir)) == APR_SUCCESS) {
- if ((stat = apr_opendir(&thedir, temp, cont)) == APR_SUCCESS) {
- apr_readdir(thedir);
- return APR_SUCCESS;
- }
- }
- return stat;
+ dir_cleanup(dir);
+ if (!FindClose(dir->dirhand)) {
+ return apr_get_os_error();
+ }
+ dir->dirhand = INVALID_HANDLE_VALUE;
+ return APR_SUCCESS;
}
apr_status_t apr_make_dir(const char *path, apr_fileperms_t perm, apr_pool_t
*cont)
@@ -196,7 +219,19 @@
apr_status_t apr_get_dir_filename(char **new, apr_dir_t *thedir)
{
+#if APR_HAS_UNICODE_FS
+ apr_status_t rv;
+ int len = wcslen(thedir->entry->cFileName) + 1;
+ int dremains = MAX_PATH;
+ (*new) = apr_palloc(thedir->cntxt, len * 2);
+ if ((rv = conv_ucs2_to_utf8(thedir->entry->cFileName, &len,
+ *new, &dremains)))
+ return rv;
+ if (len)
+ return APR_ENAMETOOLONG;
+#else
(*new) = apr_pstrdup(thedir->cntxt, thedir->entry->cFileName);
+#endif
return APR_SUCCESS;
}
1.23 +13 -2 apache-2.0/src/lib/apr/file_io/win32/filedup.c
Index: filedup.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/filedup.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- filedup.c 2000/10/23 17:21:11 1.22
+++ filedup.c 2000/10/25 02:46:42 1.23
@@ -57,19 +57,25 @@
#include "apr_general.h"
#include "apr_strings.h"
#include <string.h>
+#if APR_HAS_UNICODE_FS
+#include "i18n.h"
+#include <wchar.h>
+#endif
apr_status_t apr_dupfile(apr_file_t **new_file, apr_file_t *old_file,
apr_pool_t *p)
{
BOOLEAN isStdHandle = FALSE;
HANDLE hCurrentProcess = GetCurrentProcess();
+#if APR_HAS_UNICODE_FS
+ int len = wcslen(old_file->fname) + 1;
+#endif
if ((*new_file) == NULL) {
if (p == NULL) {
p = old_file->cntxt;
}
- (*new_file) = (apr_file_t *) apr_pcalloc(p,
- sizeof(apr_file_t));
+ (*new_file) = (apr_file_t *) apr_pcalloc(p, sizeof(apr_file_t));
if ((*new_file) == NULL) {
return APR_ENOMEM;
}
@@ -104,7 +110,12 @@
}
(*new_file)->cntxt = old_file->cntxt;
+#if APR_HAS_UNICODE_FS
+ (*new_file)->fname = apr_palloc(old_file->cntxt, len * 2);
+ wcscpy((*new_file)->fname, old_file->fname);
+#else
(*new_file)->fname = apr_pstrdup(old_file->cntxt, old_file->fname);
+#endif
/* (*new_file)->demonfname = apr_pstrdup(old_file->cntxt,
old_file->demonfname);
* (*new_file)->lowerdemonfname = apr_pstrdup(old_file->cntxt,
old_file->lowerdemonfname);
*/
1.33 +12 -1 apache-2.0/src/lib/apr/file_io/win32/fileio.h
Index: fileio.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/fileio.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- fileio.h 2000/10/23 17:21:11 1.32
+++ fileio.h 2000/10/25 02:46:42 1.33
@@ -89,6 +89,8 @@
#define APR_FILE_BUFSIZE 4096
+typedef apr_int16_t apr_wchar_t;
+
typedef enum apr_canon_case_e {
APR_CANON_CASE_GIVEN,
APR_CANON_CASE_LOWER,
@@ -138,7 +140,11 @@
apr_interval_time_t timeout;
/* File specific info */
+#if APR_HAS_UNICODE_FS
+ apr_wchar_t *fname;
+#else
char *fname;
+#endif
apr_canon_t *canonname;
DWORD dwFileAttributes;
@@ -165,9 +171,14 @@
struct apr_dir_t {
apr_pool_t *cntxt;
- char *dirname;
HANDLE dirhand;
+#if APR_HAS_UNICODE_FS
+ apr_wchar_t *dirname;
+ WIN32_FIND_DATAW *entry;
+#else
+ char *dirname;
WIN32_FIND_DATA *entry;
+#endif
};
apr_status_t file_cleanup(void *);
1.30 +47 -9 apache-2.0/src/lib/apr/file_io/win32/filestat.c
Index: filestat.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/filestat.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- filestat.c 2000/10/16 03:35:02 1.29
+++ filestat.c 2000/10/25 02:46:42 1.30
@@ -58,6 +58,9 @@
#include "apr_general.h"
#include "apr_errno.h"
#include "apr_time.h"
+#if APR_HAS_UNICODE_FS
+#include "i18n.h"
+#endif
#include <sys/stat.h>
#include "atime.h"
#include "misc.h"
@@ -196,20 +199,53 @@
{
/* WIN32_FILE_ATTRIBUTE_DATA is an exact subset of the first
* entries of WIN32_FIND_DATA
+ * We need to catch the case where fname length == MAX_PATH since for
+ * some strange reason GetFileAttributesEx fails with PATH_NOT_FOUND.
+ * We would rather indicate length error than 'not found'
+ * since in many cases the apr user is testing for 'not found'
+ * and this is not such a case.
*/
+#if APR_HAS_UNICODE_FS
+ WIN32_FIND_DATAW FileInformation;
+ apr_wchar_t wname[MAX_PATH];
+ int len = MAX_PATH;
+ int lremains = strlen(fname) + 1;
+ apr_oslevel_e os_level;
+ apr_status_t rv;
+ HANDLE hFind;
+ if ((rv = conv_utf8_to_ucs2(fname, &lremains, wname, &len)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+ if (!apr_get_oslevel(cont, &os_level) && os_level >= APR_WIN_98) {
+ if (!GetFileAttributesExW(wname, GetFileExInfoStandard,
+ (WIN32_FILE_ATTRIBUTE_DATA*)
&FileInformation)) {
+ return apr_get_os_error();
+ }
+ }
+ else {
+ /* What a waste of cpu cycles... but what else can we do?
+ */
+ if (strchr(fname, '*') || strchr(fname, '?'))
+ return APR_ENOENT;
+ hFind = FindFirstFileW(wname, &FileInformation);
+ if (hFind == INVALID_HANDLE_VALUE) {
+ return apr_get_os_error();
+ } else {
+ FindClose(hFind);
+ }
+ }
+#else
+ int len = strlen(fname);
WIN32_FIND_DATA FileInformation;
HANDLE hFind;
apr_oslevel_e os_level;
-
- memset(finfo,'\0', sizeof(*finfo));
+ (*new) = apr_pcalloc(cont, sizeof(apr_dir_t));
+ (*new)->entry = apr_pcalloc(cont, sizeof(WIN32_FIND_DATA));
+ (*new)->dirname = apr_palloc(cont, len + 3);
+ memcpy((*new)->dirname, dirname, len);
- /* We need to catch the case where fname length == MAX_PATH since for
- * some strange reason GetFileAttributesEx fails with PATH_NOT_FOUND.
- * We would rather indicate length error than 'not found'
- * since in many cases the apr user is testing for 'not found'
- * and this is not such a case.
- */
- if (strlen(fname) >= MAX_PATH) {
+ if (len >= MAX_PATH) {
return APR_ENAMETOOLONG;
}
else if (!apr_get_oslevel(cont, &os_level) && os_level >= APR_WIN_98) {
@@ -230,7 +266,9 @@
FindClose(hFind);
}
}
+#endif
+ memset(finfo,'\0', sizeof(*finfo));
/* Filetype - Directory or file?
* Short of opening the handle to the file, the 'FileType' appears
* to be unknowable (in any trustworthy or consistent sense), that
1.52 +60 -6 apache-2.0/src/lib/apr/file_io/win32/open.c
Index: open.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- open.c 2000/10/23 17:21:11 1.51
+++ open.c 2000/10/25 02:46:42 1.52
@@ -63,6 +63,9 @@
#include <string.h>
#include <sys/stat.h>
#include "misc.h"
+#if APR_HAS_UNICODE_FS
+#include "i18n.h"
+#endif
apr_status_t file_cleanup(void *thefile)
{
@@ -76,7 +79,7 @@
}
apr_status_t apr_open(apr_file_t **new, const char *fname,
- apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont)
+ apr_int32_t flag, apr_fileperms_t perm, apr_pool_t
*cont)
{
DWORD oflags = 0;
DWORD createflags = 0;
@@ -84,6 +87,10 @@
DWORD sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE;
apr_oslevel_e level;
apr_status_t rv;
+#if APR_HAS_UNICODE_FS
+ int lremains = strlen(fname) + 1;
+ int dremains = (lremains) * 2;
+#endif
(*new) = (apr_file_t *)apr_pcalloc(cont, sizeof(apr_file_t));
(*new)->cntxt = cont;
@@ -108,8 +115,16 @@
if (rv)
return rv;
}
-
+#if APR_HAS_UNICODE_FS
+ (*new)->fname = apr_palloc(cont, dremains);
+ if ((rv = conv_utf8_to_ucs2(fname, &lremains,
+ (*new)->fname, &dremains)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+#else
(*new)->fname = apr_pstrdup(cont, fname);
+#endif
if (apr_get_oslevel(cont, &level) == APR_SUCCESS && level >= APR_WIN_NT)
{
sharemode |= FILE_SHARE_DELETE;
@@ -150,10 +165,14 @@
if (flag & APR_DELONCLOSE) {
attributes |= FILE_FLAG_DELETE_ON_CLOSE;
}
-
- (*new)->filehand = CreateFile(fname, oflags, sharemode,
- NULL, createflags, attributes, 0);
+#if APR_HAS_UNICODE_FS
+ (*new)->filehand = CreateFileW((*new)->fname, oflags, sharemode,
+ NULL, createflags, attributes, 0);
+#else
+ (*new)->filehand = CreateFile((*new)->fname, oflags, sharemode,
+ NULL, createflags, attributes, 0);
+#endif
if ((*new)->filehand == INVALID_HANDLE_VALUE) {
return apr_get_os_error();
}
@@ -193,7 +212,20 @@
apr_status_t apr_remove_file(const char *path, apr_pool_t *cont)
{
+#if APR_HAS_UNICODE_FS
+ apr_wchar_t wpath[MAX_PATH];
+ int lremains = strlen(path) + 1;
+ int dremains = MAX_PATH;
+ apr_status_t rv;
+ if ((rv = conv_utf8_to_ucs2(path, &lremains,
+ wpath, &dremains)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+ if (DeleteFileW(wpath))
+#else
if (DeleteFile(path))
+#endif
return APR_SUCCESS;
return apr_get_os_error();
}
@@ -201,8 +233,30 @@
apr_status_t apr_rename_file(const char *from_path, const char *to_path,
apr_pool_t *p)
{
+#if APR_HAS_UNICODE_FS
+ apr_wchar_t wfrompath[MAX_PATH];
+ apr_wchar_t wtopath[MAX_PATH];
+ int lremains = strlen(from_path) + 1;
+ int dremains = MAX_PATH;
+ apr_status_t rv;
+ if ((rv = conv_utf8_to_ucs2(from_path, &lremains,
+ wfrompath, &dremains)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+ lremains = strlen(to_path) + 1;
+ dremains = MAX_PATH;
+ if ((rv = conv_utf8_to_ucs2(to_path, &lremains,
+ wtopath, &dremains)))
+ return rv;
+ if (lremains)
+ return APR_ENAMETOOLONG;
+ if (MoveFileExW(wfrompath, wtopath, MOVEFILE_REPLACE_EXISTING |
+ MOVEFILE_COPY_ALLOWED))
+#else
if (MoveFileEx(from_path, to_path, MOVEFILE_REPLACE_EXISTING |
MOVEFILE_COPY_ALLOWED))
+#endif
return APR_SUCCESS;
return apr_get_os_error();
}
@@ -249,7 +303,7 @@
if ((*thefile)->filehand == INVALID_HANDLE_VALUE)
return apr_get_os_error();
(*thefile)->cntxt = cont;
- (*thefile)->fname = "STD_ERROR_HANDLE";
+ (*thefile)->fname = "\0\0"; // What was this: "STD_ERROR_HANDLE";
(*thefile)->eof_hit = 0;
return APR_SUCCESS;
1.47 +1 -0 apache-2.0/src/lib/apr/include/apr.h.in
Index: apr.h.in
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr.h.in,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- apr.h.in 2000/10/17 13:26:54 1.46
+++ apr.h.in 2000/10/25 02:46:43 1.47
@@ -93,6 +93,7 @@
#define APR_HAS_XLATE @iconv@
#define APR_HAS_OTHER_CHILD @oc@
#define APR_HAS_DSO @aprdso@
+#define APR_HAS_UNICODE_FS 0
/* This macro tells APR that it is safe to make a file masquerade as a
* socket. This is necessary, because some platforms support poll'ing
1.32 +3 -1 apache-2.0/src/lib/apr/include/apr.hw
Index: apr.hw
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr.hw,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- apr.hw 2000/10/17 13:26:54 1.31
+++ apr.hw 2000/10/25 02:46:43 1.32
@@ -147,12 +147,14 @@
/* APR Feature Macros */
#define APR_HAS_THREADS 1
-#define APR_HAS_SENDFILE 1
+#define APR_HAS_SENDFILE 1
#define APR_HAS_RANDOM 1
#define APR_HAS_DSO 1
#define APR_HAS_MMAP 0
#define APR_HAS_XLATE 0
+
+#define APR_HAS_UNICODE_FS 1
/* Typedefs that APR needs. */