diff options
author | rubidium <rubidium@openttd.org> | 2007-03-06 22:37:04 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-03-06 22:37:04 +0000 |
commit | b6d5f6f74696f5ac62093dce1454249a4c25f578 (patch) | |
tree | 187a1ab0d77bb0b032920f496fa1a9c6dcac5bcc /src/fios.cpp | |
parent | 4445faba29b97baa7d8751c7df33c0a4eb4c187e (diff) | |
download | openttd-b6d5f6f74696f5ac62093dce1454249a4c25f578.tar.xz |
(svn r9043) -Fix [FS#652]: the personal (.openttd) directories were hidden in the load/save directory listings (stepancheg).
Diffstat (limited to 'src/fios.cpp')
-rw-r--r-- | src/fios.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/fios.cpp b/src/fios.cpp index b2956f9ad..e1a738d8e 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -33,6 +33,7 @@ static int _fios_count, _fios_alloc; /* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */ extern bool FiosIsRoot(const char *path); extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb); +extern bool FiosIsHiddenFile(const struct dirent *ent); extern void FiosGetDrives(void); extern bool FiosGetDiskFreeSpace(const char *path, uint32 *tot); @@ -227,7 +228,8 @@ static FiosItem *FiosGetFileList(int mode, fios_getlist_callback_proc *callback_ /* found file must be directory, but not '.' or '..' */ if (FiosIsValidFile(_fios_path, dirent, &sb) && (sb.st_mode & S_IFDIR) && - strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) { + (!FiosIsHiddenFile(dirent) || strncasecmp(d_name, PERSONAL_DIR, strlen(d_name)) == 0) && + strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) { fios = FiosAlloc(); fios->type = FIOS_TYPE_DIR; fios->mtime = 0; @@ -258,7 +260,7 @@ static FiosItem *FiosGetFileList(int mode, fios_getlist_callback_proc *callback_ char *t; ttd_strlcpy(d_name, FS2OTTD(dirent->d_name), sizeof(d_name)); - if (!FiosIsValidFile(_fios_path, dirent, &sb) || !(sb.st_mode & S_IFREG)) continue; + if (!FiosIsValidFile(_fios_path, dirent, &sb) || !(sb.st_mode & S_IFREG) || FiosIsHiddenFile(dirent)) continue; /* File has no extension, skip it */ if ((t = strrchr(d_name, '.')) == NULL) continue; |