]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
Fixes for GNUPro 00r1
[wxWidgets.git] / src / common / filefn.cpp
index 11de9801ba2204bd1f160d423ea2bc2580977042..79c63f4bade52bbc06c08b246cde8471097c3137 100644 (file)
     #endif
 #endif
 
     #endif
 #endif
 
+#if defined(__WXMAC__)
+  #include  "wx/mac/private.h"  // includes mac headers
+#endif
+
 #include <time.h>
 
 #ifndef __MWERKS__
 #include <time.h>
 
 #ifndef __MWERKS__
@@ -1336,7 +1340,10 @@ wxString wxFindFirstFile(const wxChar *spec, int flags)
     wxString result;
     gs_dir->GetFirst(&result, wxFileNameFromPath(spec), dirFlags);
     if ( result.IsEmpty() )
     wxString result;
     gs_dir->GetFirst(&result, wxFileNameFromPath(spec), dirFlags);
     if ( result.IsEmpty() )
+    {
         wxDELETE(gs_dir);
         wxDELETE(gs_dir);
+        return result;
+    }
 
     return gs_dirPath + result;
 }
 
     return gs_dirPath + result;
 }
@@ -1349,7 +1356,10 @@ wxString wxFindNextFile()
     gs_dir->GetNext(&result);
     
     if ( result.IsEmpty() )
     gs_dir->GetNext(&result);
     
     if ( result.IsEmpty() )
+    {
         wxDELETE(gs_dir);
         wxDELETE(gs_dir);
+        return result;
+    }
     
     return gs_dirPath + result;
 }
     
     return gs_dirPath + result;
 }
@@ -1439,6 +1449,14 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
     delete [] cbuf;
   }
 #endif
     delete [] cbuf;
   }
 #endif
+
+#ifdef __DJGPP__
+  // VS: DJGPP is a strange mix of DOS and UNIX API and returns paths with 
+  //     / deliminers. We don't like that.
+  for (wxChar *ch = buf; *ch; ch++)
+    if (*ch == wxT('/')) *ch = wxT('\\');
+#endif
+
   return buf;
 }
 
   return buf;
 }
 
@@ -1505,11 +1523,9 @@ wxString wxGetOSDirectory()
 
 bool wxEndsWithPathSeparator(const wxChar *pszFileName)
 {
 
 bool wxEndsWithPathSeparator(const wxChar *pszFileName)
 {
-  size_t len = wxStrlen(pszFileName);
-  if ( len == 0 )
-    return FALSE;
-  else
-    return wxIsPathSeparator(pszFileName[len - 1]);
+    size_t len = wxStrlen(pszFileName);
+
+    return len && wxIsPathSeparator(pszFileName[len - 1]);
 }
 
 // find a file in a list of directories, returns false if not found
 }
 
 // find a file in a list of directories, returns false if not found
@@ -1750,3 +1766,28 @@ bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
 #ifdef __VISUALC__
     #pragma warning(default:4706)   // assignment within conditional expression
 #endif // VC++
 #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