From 92bbe45dd031c7a14b9ba55a77a27d66cf07b876 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Tue, 20 Feb 2007 00:09:23 +0000 Subject: (svn r8821) -Regression: Unable to browse directories on *nix if the filesystem is not in UTF-8 charset and special characters are used. The string passed to opendir() which is UTF-8 was not parsed back to the filesystem format. Use a wrapper called ttd_opendir() instead of redefining opendir itself. --- src/win32.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/win32.cpp') diff --git a/src/win32.cpp b/src/win32.cpp index a79fda13a..017d62a2c 100644 --- a/src/win32.cpp +++ b/src/win32.cpp @@ -653,19 +653,19 @@ static inline void dir_free(DIR *d) } } -DIR *opendir(const char *path) +DIR *opendir(const wchar_t *path) { DIR *d; UINT sem = SetErrorMode(SEM_FAILCRITICALERRORS); // disable 'no-disk' message box - DWORD fa = GetFileAttributesW(OTTD2FS(path)); + DWORD fa = GetFileAttributesW(path); if ((fa != INVALID_FILE_ATTRIBUTES) && (fa & FILE_ATTRIBUTE_DIRECTORY)) { d = dir_calloc(); if (d != NULL) { - char search_path[MAX_PATH]; + wchar_t search_path[MAX_PATH]; /* build search path for FindFirstFile */ - snprintf(search_path, lengthof(search_path), "%s" PATHSEP "*", path); - d->hFind = FindFirstFileW(OTTD2FS(search_path), &d->fd); + _snwprintf_s(search_path, lengthof(search_path), L"%s\\*", path); + d->hFind = FindFirstFileW(search_path, &d->fd); if (d->hFind != INVALID_HANDLE_VALUE || GetLastError() == ERROR_NO_MORE_FILES) { // the directory is empty -- cgit v1.2.3-54-g00ecf