(svn r14635) -Change: use S_ISDIR/S_ISREG as x & S_IFREG always results false on platforms when S_IFREG is 0x0000.
authorrubidium
Wed, 26 Nov 2008 01:07:49 +0000
changeset 10384 6b408b83ac34
parent 10383 7aee0e95303f
child 10385 4f9838649c7f
(svn r14635) -Change: use S_ISDIR/S_ISREG as x & S_IFREG always results false on platforms when S_IFREG is 0x0000.
src/fileio.cpp
src/stdafx.h
--- a/src/fileio.cpp	Wed Nov 26 01:03:34 2008 +0000
+++ b/src/fileio.cpp	Wed Nov 26 01:07:49 2008 +0000
@@ -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	Wed Nov 26 01:03:34 2008 +0000
+++ b/src/stdafx.h	Wed Nov 26 01:07:49 2008 +0000
@@ -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)