changeset 10384:b0837d51a306 draft

(svn r14635) -Change: use S_ISDIR/S_ISREG as x & S_IFREG always results false on platforms when S_IFREG is 0x0000.
author rubidium <rubidium@openttd.org>
date Wed, 26 Nov 2008 01:07:49 +0000
parents 087e76c4495d
children 9709c41adf56
files src/fileio.cpp src/stdafx.h
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.cpp
+++ b/src/fileio.cpp
@@ -984,12 +984,12 @@
 
 		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, '.');
 
--- 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)