]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
warning (in Unicode only) fix
[wxWidgets.git] / src / common / filefn.cpp
index f6d5b9d69ff5def30a23ed614504705b8efaaca2..29c5ad4891064badc51300a791108be78b436d19 100644 (file)
     #include <windows.h>
     #include "wx/msw/mslu.h"
 
+    // for _getcwd
+    #ifdef __MINGW32__
+        #include <io.h>
+    #endif
+
     // sys/cygwin.h is needed for cygwin_conv_to_full_win32_path()
     //
     // note that it must be included after <windows.h>
         #ifdef __CYGWIN__
             #include <sys/cygwin.h>
         #endif
-
-        #ifndef __TWIN32__
-            #include <sys/unistd.h>
-        #endif
     #endif // __GNUWIN32__
 #endif // __WINDOWS__
 
@@ -188,6 +189,25 @@ const off_t wxInvalidOffset = (off_t)-1;
 // implementation
 // ============================================================================
 
+#if defined(__WXMAC__) && !defined(__DARWIN__)
+
+WXDLLEXPORT int wxStat( const wxChar *file_name, wxStructStat *buf )
+{
+    return stat( wxMacStringToCString( file_name ), buf );
+}
+
+WXDLLEXPORT int wxAccess( const wxChar *pathname, int mode )
+{
+    return access( wxMacStringToCString( pathname ), mode );
+}
+
+WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode )
+{
+    return open( wxMacStringToCString( pathname ), flags, mode );
+}
+
+#endif
+
 #ifdef wxNEED_WX_UNISTD_H
 
 WXDLLEXPORT int wxStat( const wxChar *file_name, wxStructStat *buf )
@@ -214,6 +234,18 @@ WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode )
 
 IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxStringList)
 
+static inline wxChar* MYcopystring(const wxString& s)
+{
+    wxChar* copy = new wxChar[s.length() + 1];
+    return wxStrcpy(copy, s.c_str());
+}
+
+static inline wxChar* MYcopystring(const wxChar* s)
+{
+    wxChar* copy = new wxChar[wxStrlen(s) + 1];
+    return wxStrcpy(copy, s);
+}
+
 void wxPathList::Add (const wxString& path)
 {
     wxStringList::Add (WXSTRINGCAST path);
@@ -238,7 +270,7 @@ void wxPathList::AddEnvList (const wxString& envVariable)
     wxChar *val = wxGetenv (WXSTRINGCAST envVariable);
     if (val && *val)
     {
-        wxChar *s = copystring (val);
+        wxChar *s = MYcopystring (val);
         wxChar *save_ptr, *token = wxStrtok (s, PATH_TOKS, &save_ptr);
 
         if (token)
@@ -501,9 +533,9 @@ wxChar *wxCopyAbsolutePath(const wxString& filename)
         wxStrcat(buf, wxT("/"));
 #endif
     wxStrcat(buf, wxFileFunctionsBuffer);
-    return copystring( wxRealPath(buf) );
+    return MYcopystring( wxRealPath(buf) );
   }
-  return copystring( wxFileFunctionsBuffer );
+  return MYcopystring( wxFileFunctionsBuffer );
 }
 
 /*-
@@ -552,7 +584,7 @@ wxChar *wxExpandPath(wxChar *buf, const wxChar *name)
     buf[0] = wxT('\0');
     if (name == NULL || *name == wxT('\0'))
         return buf;
-    nm = copystring(name); // Make a scratch copy
+    nm = MYcopystring(name); // Make a scratch copy
     wxChar *nm_tmp = nm;
 
     /* Skip leading whitespace and cr */
@@ -1073,13 +1105,13 @@ void wxUnixFilename2FSSpec( const char *path , FSSpec *spec )
 #endif // __WXMAC__
 
 void
-wxDos2UnixFilename (char *s)
+wxDos2UnixFilename (wxChar *s)
 {
   if (s)
     while (*s)
       {
-        if (*s == '\\')
-          *s = '/';
+        if (*s == _T('\\'))
+          *s = _T('/');
 #ifdef __WXMSW__
         else
           *s = wxTolower (*s);        // Case INDEPENDENT
@@ -1384,7 +1416,7 @@ wxChar *wxGetTempFileName(const wxString& prefix, wxChar *buf)
     if ( buf )
         wxStrcpy(buf, filename);
     else
-        buf = copystring(filename);
+        buf = MYcopystring(filename);
 
     return buf;
 }
@@ -1497,7 +1529,7 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
     if ( needsANSI )
 #endif // wxUSE_UNICODE
     {
-    #ifdef _MSC_VER
+    #if defined(_MSC_VER) || defined(__MINGW32__)
         ok = _getcwd(cbuf, sz) != NULL;
     #elif defined(__WXMAC__) && !defined(__DARWIN__)
         FSSpec cwdSpec ;
@@ -1632,6 +1664,8 @@ wxString wxGetOSDirectory()
     wxChar buf[256];
     GetWindowsDirectory(buf, 256);
     return wxString(buf);
+#elif defined(__WXMAC__)
+    return wxMacFindFolder(kOnSystemDisk, 'macs', false);
 #else
     return wxEmptyString;
 #endif