X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b931e275f57c63d1976e370842877ac5d78da2b0..6493aacaeb7b22b9fa35c559f7753e9fec0da71f:/src/common/filefn.cpp diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 5168a4cff5..3d1fa6c33e 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -1106,8 +1106,19 @@ wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite) } bool -wxRenameFile (const wxString& file1, const wxString& file2) +wxRenameFile(const wxString& file1, const wxString& file2, bool overwrite) { + if ( !overwrite && wxFileExists(file2) ) + { + wxLogSysError + ( + _("Failed to rename the file '%s' to '%s' because the destination file already exists."), + file1.c_str(), file2.c_str() + ); + + return false; + } + #if !defined(__WXWINCE__) && !defined(__WXPALMOS__) // Normal system call if ( wxRename (file1, file2) == 0 ) @@ -1115,7 +1126,7 @@ wxRenameFile (const wxString& file1, const wxString& file2) #endif // Try to copy - if (wxCopyFile(file1, file2)) { + if (wxCopyFile(file1, file2, overwrite)) { wxRemoveFile(file1); return true; } @@ -1623,44 +1634,11 @@ void WXDLLEXPORT wxSplitPath(const wxChar *pszFileName, time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename) { -#if defined(__WXPALMOS__) - return 0; -#elif defined(__WXWINCE__) - FILETIME ftLastWrite; - AutoHANDLE hFile(::CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, - NULL, 0, FILE_ATTRIBUTE_NORMAL, 0)); - - if ( !hFile.IsOk() ) - return 0; - - if ( !::GetFileTime(hFile, NULL, NULL, &ftLastWrite) ) - return 0; + wxDateTime mtime; + if ( !wxFileName(filename).GetTimes(NULL, &mtime, NULL) ) + return (time_t)-1; - // sure we want to translate to local time here? - FILETIME ftLocal; - if ( !::FileTimeToLocalFileTime(&ftLastWrite, &ftLocal) ) - { - wxLogLastError(_T("FileTimeToLocalFileTime")); - } - - // FILETIME is a counted in 100-ns since 1601-01-01, convert it to - // number of seconds since 1970-01-01 - ULARGE_INTEGER uli; - uli.LowPart = ftLocal.dwLowDateTime; - uli.HighPart = ftLocal.dwHighDateTime; - - ULONGLONG ull = uli.QuadPart; - ull /= wxULL(10000000); // number of 100ns intervals in 1s - ull -= wxULL(11644473600); // 1970-01-01 - 1601-01-01 in seconds - - return wx_static_cast(time_t, ull); -#else - wxStructStat buf; - if ( wxStat( filename, &buf) != 0 ) - return 0; - - return buf.st_mtime; -#endif + return mtime.GetTicks(); }