From: Vadim Zeitlin Date: Sat, 26 Jan 2002 17:02:45 +0000 (+0000) Subject: patch to fix various filename-related functions for cygwin X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3ffbc733a20ffbda22abece30b4a1afb5c8bc75d?ds=sidebyside patch to fix various filename-related functions for cygwin git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13829 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/filefn.h b/include/wx/filefn.h index 393abee3a1..dff1b66eee 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -270,12 +270,15 @@ WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0); #define wxPATH_SEP_MAC wxT(";") // platform independent versions -#if defined(__UNIX__) +#if defined(__UNIX__) && !defined(__GNUWIN32__) #define wxFILE_SEP_PATH wxFILE_SEP_PATH_UNIX #define wxPATH_SEP wxPATH_SEP_UNIX #elif defined(__MAC__) #define wxFILE_SEP_PATH wxFILE_SEP_PATH_MAC #define wxPATH_SEP wxPATH_SEP_MAC +#elif defined(__GNUWIN32__) // Cygwin + #define wxFILE_SEP_PATH wxFILE_SEP_PATH_DOS + #define wxPATH_SEP wxPATH_SEP_UNIX #else // Windows and OS/2 #define wxFILE_SEP_PATH wxFILE_SEP_PATH_DOS #define wxPATH_SEP wxPATH_SEP_DOS diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 1c498fa3b0..fca7a284a1 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -93,13 +93,6 @@ #endif #endif -#ifdef __GNUWIN32__ - #include - #ifndef __TWIN32__ - #include - #endif -#endif - #ifdef __BORLANDC__ // Please someone tell me which version of Borland needs // this (3.1 I believe) and how to test for it. // If this works for Borland 4.0 as well, then no worries. @@ -121,7 +114,18 @@ #ifdef __WINDOWS__ #include -#endif + + // sys/cygwin.h is needed for cygwin_conv_to_full_win32_path() + // + // note that it must be included after + #ifdef __GNUWIN32__ + #include + #include + #ifndef __TWIN32__ + #include + #endif + #endif // __GNUWIN32__ +#endif // __WINDOWS__ // TODO: Borland probably has _wgetcwd as well? #ifdef _MSC_VER @@ -1456,11 +1460,11 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) } #endif // __DJGPP__ -#ifdef __CYGWIN10__ - // another example of DOS/Unix mix +#ifdef __GNUWIN32__ + // another example of DOS/Unix mix (Cygwin) wxString pathUnix = buf; cygwin_conv_to_full_win32_path(pathUnix, buf); -#endif // __CYGWIN10__ +#endif // __GNUWIN32__ // finally convert the result to Unicode if needed #if wxUSE_UNICODE && !defined(HAVE_WGETCWD) diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 4c8e813969..6d23a03728 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -64,6 +64,7 @@ extern "C" { #if defined(__GNUWIN32__) && !defined(__TWIN32__) #include #include + #include // for cygwin_conv_to_full_win32_path() #endif //GNUWIN32 #ifdef __BORLANDC__ // Please someone tell me which version of Borland needs @@ -372,6 +373,13 @@ const wxChar* wxGetHomeDir(wxString *pstr) // add a trailing slash if needed if ( strDir.Last() != wxT('/') ) strDir << wxT('/'); + + #ifdef __GNUWIN32__ + // Cygwin returns unix type path but that does not work well + static wxChar windowsPath[MAX_PATH]; + cygwin_conv_to_full_win32_path(strDir, windowsPath); + strDir = windowsPath; + #endif #else // Windows #ifdef __WIN32__ const wxChar *szHome = wxGetenv(wxT("HOMEDRIVE"));