some strategic documentation
[ardour.git] / libs / pbd / pbd / localtime_r.h
index ad5b89d1342261d9c8bce623722de0e02bda335c..2a4502481d8b139f8f77ea863c0f6f9978e581be 100644 (file)
@@ -3,11 +3,22 @@
 #include <time.h>
 
 #ifdef COMPILER_MSVC
-       #define localtime_r( _clock, _result ) \
-               ( *(_result) = *localtime( (_clock) ), \
-               (_result) )
-#else
-       extern struct tm *localtime_r(const time_t *const timep, struct tm *p_tm);
+
+#define localtime_r( _clock, _result ) \
+       ( *(_result) = *localtime( (_clock) ), (_result) )
+
+#elif defined COMPILER_MINGW
+
+#  ifdef localtime_r
+#  undef localtime_r
+#  endif
+
+// As in 64 bit time_t is 64 bit integer, compiler breaks compilation
+// everytime implicit cast from long int* to time_t* worked in
+// the past (32 bit). To unblock such a cast we added the localtime below:
+extern struct tm *localtime(const long int *_Time);
+extern struct tm *localtime_r(const time_t *const timep, struct tm *p_tm);
+
 #endif
 
 #endif