#ifdef __WINDOWS__
#include <windows.h>
-
+ #include "wx/msw/mslu.h"
+
// sys/cygwin.h is needed for cygwin_conv_to_full_win32_path()
//
// note that it must be included after <windows.h>
// instead of our code if available
//
// NB: 3rd parameter is bFailIfExists i.e. the inverse of overwrite
- return ::CopyFile(file1, file2, !overwrite) != 0;
+ if ( !::CopyFile(file1, file2, !overwrite) )
+ {
+ wxLogSysError(_("Failed to copy the file '%s' to '%s'"),
+ file1.c_str(), file2.c_str());
+
+ return FALSE;
+ }
#elif defined(__WXPM__)
- if (::DosCopy(file2, file2, overwrite ? DCPY_EXISTING : 0) == 0)
- return TRUE;
- else
+ if ( ::DosCopy(file2, file2, overwrite ? DCPY_EXISTING : 0) != 0 )
return FALSE;
#else // !Win32
wxStructStat fbuf;
return FALSE;
}
#endif // OS/2 || Mac
+#endif // __WXMSW__ && __WIN32__
return TRUE;
-#endif // __WXMSW__ && __WIN32__
}
bool
// for the compilers which have Unicode version of _getcwd(), call it
// directly, for the others call the ANSI version and do the translation
#if !wxUSE_UNICODE
- #define cbuf buf
+ #define cbuf buf
#else // wxUSE_UNICODE
- bool needsANSI = TRUE;
+ bool needsANSI = TRUE;
- #if !defined(HAVE_WGETCWD) || wxUSE_UNICODE_MSLU
+ #if !defined(HAVE_WGETCWD) || wxUSE_UNICODE_MSLU
wxCharBuffer c_buffer(sz);
- char *cbuf = (char*)(const char*)c_buffer;
- #endif
+ char *cbuf = (char*)(const char*)c_buffer;
+ #endif
#ifdef HAVE_WGETCWD
- #if wxUSE_UNICODE_MSLU
- if ( wxGetOsVersion() != wxWIN95 )
- #endif
- {
- ok = _wgetcwd(buf, sz) != NULL;
- needsANSI = FALSE;
- }
+ #if wxUSE_UNICODE_MSLU
+ if ( wxGetOsVersion() != wxWIN95 )
+ #else
+ char *cbuf = NULL; // never really used because needsANSI will always be FALSE
+ #endif
+ {
+ ok = _wgetcwd(buf, sz) != NULL;
+ needsANSI = FALSE;
+ }
#endif
- if ( needsANSI )
+ if ( needsANSI )
#endif // wxUSE_UNICODE
- {
+ {
#ifdef _MSC_VER
ok = _getcwd(cbuf, sz) != NULL;
#elif defined(__WXMAC__) && !defined(__DARWIN__)
#else // !Win32/VC++ !Mac !OS2
ok = getcwd(cbuf, sz) != NULL;
#endif // platform
- }
+
+ #if wxUSE_UNICODE
+ // finally convert the result to Unicode if needed
+ wxConvFile.MB2WC(buf, cbuf, sz);
+ #endif // wxUSE_UNICODE
+ }
if ( !ok )
{
wxString pathUnix = buf;
cygwin_conv_to_full_win32_path(pathUnix, buf);
#endif // __CYGWIN__
-
- // finally convert the result to Unicode if needed
-#if wxUSE_UNICODE
- wxConvFile.MB2WC(buf, cbuf, sz);
-#endif // wxUSE_UNICODE
}
return buf;
#if !wxUSE_UNICODE
- #undef cbuf
+ #undef cbuf
#endif
}
#ifdef __VISUALC__
#pragma warning(default:4706) // assignment within conditional expression
#endif // VC++
-
-//------------------------------------------------------------------------
-// Missing functions in Unicode for Win9x
-//------------------------------------------------------------------------
-
-// NB: MSLU only covers Win32 API, it doesn't provide Unicode implementation of
-// libc functions. Unfortunately, some of MSVCRT wchar_t functions
-// (e.g. _wopen) don't work on Windows 9x, so we have to workaround it
-// by calling the char version. We still want to use wchar_t version on
-// NT/2000/XP, though, because they allow for Unicode file names.
-#if wxUSE_UNICODE_MSLU
-
- #if defined( __VISUALC__ ) \
- || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
- || ( defined(__MWERKS__) && defined(__WXMSW__) )
- WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode)
- {
- if ( wxGetOsVersion() == wxWINDOWS_NT )
- return _wopen(name, flags, mode);
- else
- return _open(wxConvFile.cWX2MB(name), flags, mode);
- }
- #endif
-
-#endif // wxUSE_UNICODE_MSLU