Don't bother checking canRead() before calling getMagicNumber();
[oota-llvm.git] / lib / System / Win32 / TimeValue.inc
index 7ec2b395485e14ead4fde4e7dff1f394a9b2ccb1..e37f111fc77ca82299810bb6210ac1605df47f9c 100644 (file)
@@ -2,16 +2,17 @@
 // 
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by Jeff Cohen and is distributed under the 
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 // 
 //===----------------------------------------------------------------------===//
 //
-// This file provides the Win32 specific implementation of the TimeValue class.
+// This file provides the Win32 implementation of the TimeValue class.
 //
 //===----------------------------------------------------------------------===//
 
 #include "Win32.h"
+#include <time.h>
 
 namespace llvm {
 using namespace sys;
@@ -21,15 +22,30 @@ using namespace sys;
 //===----------------------------------------------------------------------===//
 
 TimeValue TimeValue::now() {
-  __int64 ft;
+  uint64_t ft;
   GetSystemTimeAsFileTime(reinterpret_cast<FILETIME *>(&ft));
 
-  return TimeValue(
-    static_cast<TimeValue::SecondsType>( ft / 10000000 +
-      Win32ZeroTime.seconds_ ),
-    static_cast<TimeValue::NanoSecondsType>( (ft % 10000000) * 100) );
+  TimeValue t(0, 0);
+  t.fromWin32Time(ft);
+  return t;
+}
+
+std::string TimeValue::str() const {
+#ifdef __MINGW32__
+  // This ban may be lifted by either:
+  // (i) a future MinGW version other than 1.0 inherents the __time64_t type, or
+  // (ii) configure tests for either the time_t or __time64_t type.
+  time_t ourTime = time_t(this->toEpochTime());
+  struct tm *lt = ::localtime(&ourTime);
+#else
+  __time64_t ourTime = this->toEpochTime();
+  struct tm *lt = ::_localtime64(&ourTime);
+#endif
+
+  char buffer[25];
+  strftime(buffer, 25, "%a %b %d %H:%M:%S %Y", lt);
+  return std::string(buffer);
 }
 
-// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
 
 }