From 49c196c1056aaed97ff5cf43beff5c436d783b99 Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 31 Jan 2013 10:29:48 +0100 Subject: mhmake: solved file date checking on 64-bit windows --- tools/mhmake/src/fileinfo.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tools/mhmake/src/fileinfo.cpp') diff --git a/tools/mhmake/src/fileinfo.cpp b/tools/mhmake/src/fileinfo.cpp index 884d645b5..d9d16c1e3 100644 --- a/tools/mhmake/src/fileinfo.cpp +++ b/tools/mhmake/src/fileinfo.cpp @@ -96,6 +96,16 @@ string fileinfo::GetName() const /////////////////////////////////////////////////////////////////////////////// mh_time_t fileinfo::realGetDate() const { +#ifdef WIN32 + WIN32_FILE_ATTRIBUTE_DATA Attr; + BOOL Ret=GetFileAttributesEx(m_AbsFileName.c_str(), GetFileExInfoStandard, &Attr); + if (!Ret) + ((fileinfo*)this)->m_Date.SetNotExist(); + else if (Attr.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) + ((fileinfo*)this)->m_Date.SetDir(); + else + ((fileinfo*)this)->m_Date=*(mh_basetime_t*)&Attr.ftLastWriteTime; +#else struct stat Buf; if (-1==stat(m_AbsFileName.c_str(),&Buf)) ((fileinfo*)this)->m_Date.SetNotExist(); @@ -103,6 +113,7 @@ mh_time_t fileinfo::realGetDate() const ((fileinfo*)this)->m_Date.SetDir(); else ((fileinfo*)this)->m_Date=Buf.st_mtime; +#endif return m_Date; } @@ -141,7 +152,13 @@ bool fileinfo::IsDir() const /////////////////////////////////////////////////////////////////////////////// void fileinfo::SetDateToNow() { +#ifdef WIN32 + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + m_Date=*(mh_basetime_t*)&ft; +#else m_Date=time(NULL); +#endif } /////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3