summaryrefslogtreecommitdiff
path: root/src/fios.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-03-06 22:37:04 +0000
committerrubidium <rubidium@openttd.org>2007-03-06 22:37:04 +0000
commit1e8a2e19b388164da10ece7b63648bfc3d66f537 (patch)
tree187a1ab0d77bb0b032920f496fa1a9c6dcac5bcc /src/fios.cpp
parent7a58642b6cf4ae602a55d9bbf4b1c730f7ef513f (diff)
downloadopenttd-1e8a2e19b388164da10ece7b63648bfc3d66f537.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.cpp6
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;