Second try at fixing S_* for Windows.
diff --git a/lib/zip_source_filep.c b/lib/zip_source_filep.c
index c5cfee2..22500e2 100644
--- a/lib/zip_source_filep.c
+++ b/lib/zip_source_filep.c
@@ -39,15 +39,24 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+
#ifdef _WIN32
/* WIN32 needs <fcntl.h> for _O_BINARY */
#include <fcntl.h>
#endif
-#ifdef _MSC_VER
-/* MSVC doesn't have S_ISREG, S_IRWXG, S_IRWXO */
+
+/* Windows sys/types.h does not provide these */
+#ifndef S_ISREG
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#endif
+#ifndef S_IRWXG
#define S_IRWXG (S_IRWXU >> 3)
+#endif
+#ifndef S_IRWXO
#define S_IRWXO (S_IRWXG >> 3)
+#endif
+
+#ifdef _MSC_VER
/* MSVC doesn't have mode_t */
typedef int mode_t;
#endif