X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b39dbf34b887a73c525da903d8599f4f6b7eb8f9..50dee7e0ebbe05574116dce391596ddc55d644be:/src/common/filefn.cpp diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 8310ce87b9..40af10e79a 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -124,6 +124,11 @@ #include #include "wx/msw/mslu.h" + // for _getcwd + #ifdef __MINGW32__ + #include + #endif + // sys/cygwin.h is needed for cygwin_conv_to_full_win32_path() // // note that it must be included after @@ -184,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 ) @@ -208,11 +232,23 @@ WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode ) // wxPathList // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxStringList) +// 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); + wxStringList::Append (WXSTRINGCAST path); } // Add paths e.g. from the PATH environment variable @@ -234,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) @@ -273,7 +309,7 @@ void wxPathList::EnsureFileAccessible (const wxString& path) bool wxPathList::Member (const wxString& path) { - for (wxStringList::Node *node = GetFirst(); node; node = node->GetNext()) + for (wxStringList::compatibility_iterator node = GetFirst(); node; node = node->GetNext()) { wxString path2( node->GetData() ); if ( @@ -301,9 +337,9 @@ wxString wxPathList::FindValidPath (const wxString& file) wxChar *filename = (wxChar*) NULL; /* shut up buggy egcs warning */ filename = wxIsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (wxChar *)buf; - for (wxStringList::Node *node = GetFirst(); node; node = node->GetNext()) + for (wxStringList::compatibility_iterator node = GetFirst(); node; node = node->GetNext()) { - wxChar *path = node->GetData(); + const wxChar *path = node->GetData(); wxStrcpy (wxFileFunctionsBuffer, path); wxChar ch = wxFileFunctionsBuffer[wxStrlen(wxFileFunctionsBuffer)-1]; if (ch != wxT('\\') && ch != wxT('/')) @@ -497,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 ); } /*- @@ -548,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 */ @@ -1069,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 @@ -1380,7 +1416,7 @@ wxChar *wxGetTempFileName(const wxString& prefix, wxChar *buf) if ( buf ) wxStrcpy(buf, filename); else - buf = copystring(filename); + buf = MYcopystring(filename); return buf; } @@ -1493,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 ; @@ -1628,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