summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-11-26 01:07:49 +0000
committerrubidium <rubidium@openttd.org>2008-11-26 01:07:49 +0000
commitbb25748a9dfb150b5168af8bffb961335032db6c (patch)
tree8022d37179ec08ca7defea8941abd3e126b1f985
parent69eb6978e76dd97df4dc3f9b937012c91553303b (diff)
downloadopenttd-bb25748a9dfb150b5168af8bffb961335032db6c.tar.xz
(svn r14635) -Change: use S_ISDIR/S_ISREG as x & S_IFREG always results false on platforms when S_IFREG is 0x0000.
-rw-r--r--src/fileio.cpp4
-rw-r--r--src/stdafx.h5
2 files changed, 7 insertions, 2 deletions
diff --git a/src/fileio.cpp b/src/fileio.cpp
index a4ba69cc2..f7b4a5af2 100644
--- a/src/fileio.cpp
+++ b/src/fileio.cpp
@@ -984,12 +984,12 @@ static uint ScanPath(FileScanner *fs, const char *extension, const char *path, s
snprintf(filename, lengthof(filename), "%s%s", path, d_name);
- if (sb.st_mode & S_IFDIR) {
+ if (S_ISDIR(sb.st_mode)) {
/* Directory */
if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue;
AppendPathSeparator(filename, lengthof(filename));
num += ScanPath(fs, extension, filename, basepath_length);
- } else if (sb.st_mode & S_IFREG) {
+ } else if (S_ISREG(sb.st_mode)) {
/* File */
char *ext = strrchr(filename, '.');
diff --git a/src/stdafx.h b/src/stdafx.h
index 34da8f501..a0d715ed3 100644
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -235,6 +235,11 @@
#undef assert
#define assert(expression) if (!(expression)) { SetExceptionString("Assertion failed at %s:%d: %s", __FILE__, __LINE__, #expression); *(byte*)0 = 0; }
#endif
+
+ /* MSVC doesn't have these :( */
+ #define S_ISDIR(mode) (mode & S_IFDIR)
+ #define S_ISREG(mode) (mode & S_IFREG)
+
#endif /* defined(_MSC_VER) */
#if defined(WINCE)