]> git.saurik.com Git - wxWidgets.git/commitdiff
patch to fix various filename-related functions for cygwin
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 26 Jan 2002 17:02:45 +0000 (17:02 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 26 Jan 2002 17:02:45 +0000 (17:02 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13829 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/filefn.h
src/common/filefn.cpp
src/msw/utils.cpp

index 393abee3a19b53df9288a08b1e10b156663ac2fa..dff1b66eee148a1c6f486e772eaeb76a4f0b28b7 100644 (file)
@@ -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
index 1c498fa3b0f53c7adb99eb46d7a3b62e0ce99d55..fca7a284a115c06518b721731a7d50349fab4d80 100644 (file)
     #endif
 #endif
 
-#ifdef __GNUWIN32__
-    #include <wchar.h>
-    #ifndef __TWIN32__
-        #include <sys/unistd.h>
-    #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.
 
 #ifdef __WINDOWS__
     #include <windows.h>
-#endif
+
+    // sys/cygwin.h is needed for cygwin_conv_to_full_win32_path()
+    //
+    // note that it must be included after <windows.h>
+    #ifdef __GNUWIN32__
+        #include <sys/cygwin.h>
+        #include <wchar.h>
+        #ifndef __TWIN32__
+            #include <sys/unistd.h>
+        #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)
index 4c8e813969302ff7ce95f7515b9197a2d1fbdc87..6d23a0372829465f391c55ec515c5380c3ade980 100644 (file)
@@ -64,6 +64,7 @@ extern "C" {
 #if defined(__GNUWIN32__) && !defined(__TWIN32__)
     #include <sys/unistd.h>
     #include <sys/stat.h>
+    #include <sys/cygwin.h> // 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"));