#undef S_IFDIR
#define S_IFDIR 0040000 /* directory */
#define S_IFCHR 0020000 /* character special */
+#define S_IFBLK 0060000 /* block special */
#define S_IFIFO 0010000 /* pipe */
#undef S_IFREG
#define S_IFREG 0100000 /* regular */
#define S_IRUSR S_IREAD
#define S_IWUSR S_IWRITE
#define S_IXUSR S_IEXEC
-#define S_ISREG(x) (((x) & S_IFREG) == S_IFREG)
-#define S_ISDIR(x) (((x) & S_IFDIR) == S_IFDIR)
+#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
+#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
#define S_ISCHR(x) 0
-#define S_ISBLK(x) 0
+#define S_ISBLK(x) (((x) & S_IFMT) == S_IFBLK)
#define S_ISFIFO(x) 0
#endif //HAVE_MINGW