(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.
This commit is contained in:
15
src/fios.h
15
src/fios.h
@@ -77,10 +77,21 @@ struct DIR {
|
||||
bool at_first_entry;
|
||||
};
|
||||
|
||||
DIR *opendir(const char *path);
|
||||
DIR *opendir(const wchar_t *path);
|
||||
struct dirent *readdir(DIR *d);
|
||||
int closedir(DIR *d);
|
||||
|
||||
#endif /* defined(WIN32) */
|
||||
|
||||
/**
|
||||
* A wrapper around opendir() which will convert the string from
|
||||
* OPENTTD encoding to that of the filesystem. For all purposes this
|
||||
* function behaves the same as the original opendir function
|
||||
* @param path string to open directory of
|
||||
* @return DIR pointer
|
||||
*/
|
||||
static inline DIR *ttd_opendir(const char *path)
|
||||
{
|
||||
return opendir(OTTD2FS(path));
|
||||
}
|
||||
|
||||
#endif /* FIOS_H */
|
||||
|
Reference in New Issue
Block a user