Commit e8cc449fe9c99f9ca35088e3247ab9c0088081fe

Ramsay Jones 2010-02-19T21:49:22

win32: Add separate MinGW and MSVC compatability header files Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>

diff --git a/src/common.h b/src/common.h
index 29a61a7..18c321c 100644
--- a/src/common.h
+++ b/src/common.h
@@ -32,43 +32,13 @@
 # include <io.h>
 # include <direct.h>
 # include <windows.h>
+# include "msvc-compat.h"
+# include "mingw-compat.h"
 
 # define snprintf _snprintf
 
-# if defined(__DMC__)
-#  if defined(_M_AMD64)
-#   define SSIZE_T long long
-#  else
-#   define SSIZE_T int
-#  endif
-# endif
-
 typedef SSIZE_T ssize_t;
 
-# if defined(_MSC_VER)
-/* access() mode parameter #defines   */
-#  define F_OK 0  /* existence  check */
-#  define W_OK 2  /* write mode check */
-#  define R_OK 4  /* read  mode check */
-# endif
-
-#if defined(__MINGW32__)
-
-# define off_t off64_t
-# define lseek _lseeki64
-# define stat _stati64
-# define fstat _fstati64
-
-#elif defined(_MSC_VER)
-
-typedef __int64 off64_t;
-# define off_t off64_t
-# define lseek _lseeki64
-# define stat _stat64
-# define fstat _fstat64
-
-#endif
-
 #else
 
 # include <unistd.h>
@@ -83,13 +53,4 @@ typedef __int64 off64_t;
 
 #define GIT_PATH_MAX 4096
 
-#ifndef GIT_HAVE_INTTYPES_H
-/* add some missing <stdint.h> typedef's */
-typedef long int32_t;
-typedef unsigned long uint32_t;
-
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-#endif
-
 #endif /* INCLUDE_common_h__ */
diff --git a/src/mingw-compat.h b/src/mingw-compat.h
new file mode 100644
index 0000000..e3805df
--- /dev/null
+++ b/src/mingw-compat.h
@@ -0,0 +1,14 @@
+#ifndef INCLUDE_mingw_compat__
+#define INCLUDE_mingw_compat__
+
+#if defined(__MINGW32__)
+
+/* use a 64-bit file offset type */
+# define off_t off64_t
+# define lseek _lseeki64
+# define stat _stati64
+# define fstat _fstati64
+
+#endif
+
+#endif /* INCLUDE_mingw_compat__ */
diff --git a/src/msvc-compat.h b/src/msvc-compat.h
new file mode 100644
index 0000000..62ab0af
--- /dev/null
+++ b/src/msvc-compat.h
@@ -0,0 +1,41 @@
+#ifndef INCLUDE_msvc_compat__
+#define INCLUDE_msvc_compat__
+
+#if defined(_MSC_VER)
+
+/* access() mode parameter #defines   */
+# define F_OK 0  /* existence  check */
+# define W_OK 2  /* write mode check */
+# define R_OK 4  /* read  mode check */
+
+/* use a 64-bit file offset type */
+typedef __int64 off64_t;
+# define off_t off64_t
+# define lseek _lseeki64
+# define stat _stat64
+# define fstat _fstat64
+
+/* stat: file mode type testing macros */
+# define S_ISDIR(m)   (((m) & _S_IFMT) == _S_IFDIR)
+# define S_ISREG(m)   (((m) & _S_IFMT) == _S_IFREG)
+# define S_ISFIFO(m)  (((m) & _S_IFMT) == _S_IFIFO)
+
+/* add some missing <stdint.h> typedef's */
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+
+typedef short int16_t;
+typedef unsigned short uint16_t;
+
+typedef long int32_t;
+typedef unsigned long uint32_t;
+
+typedef long long int64_t;
+typedef unsigned long long uint64_t;
+
+typedef long long intmax_t;
+typedef unsigned long long uintmax_t;
+
+#endif
+
+#endif /* INCLUDE_msvc_compat__ */