Fix some Windows troubles.

Add parentheses so that constant does not overflow; include inttypes.h
when using MinGW to get the proper macros.
diff --git a/src/disk_interface.cc b/src/disk_interface.cc
index f83151c..4b4c4c7 100644
--- a/src/disk_interface.cc
+++ b/src/disk_interface.cc
@@ -65,7 +65,7 @@
   uint64_t mtime = ((uint64_t)filetime.dwHighDateTime << 32) |
     ((uint64_t)filetime.dwLowDateTime);
   // 1600 epoch -> 2000 epoch (subtract 400 years).
-  return (TimeStamp)mtime - 12622770400LL * 1000000000LL / 100;
+  return (TimeStamp)mtime - 12622770400LL * (1000000000LL / 100);
 }
 
 TimeStamp StatSingleFile(const string& path, string* err) {
diff --git a/src/win32port.h b/src/win32port.h
index 5464797..e542536 100644
--- a/src/win32port.h
+++ b/src/win32port.h
@@ -15,6 +15,13 @@
 #ifndef NINJA_WIN32PORT_H_
 #define NINJA_WIN32PORT_H_
 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+#include <inttypes.h>
+#endif
+
 typedef signed short int16_t;
 typedef unsigned short uint16_t;
 /// A 64-bit integer type