X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/52de37c78f31bc03f8b96090932c7ce8c3907d29..3222fc18c9363f4339937bac1f92705ee6cfcd7c:/src/common/filefn.cpp diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index ee5913ccc9..ff3dc70050 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -30,8 +30,10 @@ #include "wx/intl.h" #include "wx/log.h" #include "wx/utils.h" + #include "wx/crt.h" #endif +#include "wx/dynarray.h" #include "wx/file.h" #include "wx/filename.h" #include "wx/dir.h" @@ -95,7 +97,7 @@ #endif #ifdef __WXMAC__ -# include "MoreFilesX.h" +// # include "MoreFilesX.h" #endif // ---------------------------------------------------------------------------- @@ -316,7 +318,7 @@ wxFileExists (const wxString& filename) #elif defined(__WIN32__) && !defined(__WXMICROWIN__) // we must use GetFileAttributes() instead of the ANSI C functions because // it can cope with network (UNC) paths unlike them - DWORD ret = ::GetFileAttributes(filename); + DWORD ret = ::GetFileAttributes(filename.fn_str()); return (ret != (DWORD)-1) && !(ret & FILE_ATTRIBUTE_DIRECTORY); #else // !__WIN32__ @@ -342,20 +344,9 @@ wxIsAbsolutePath (const wxString& filename) { if (!filename.empty()) { -#if defined(__WXMAC__) && !defined(__DARWIN__) - // Classic or Carbon CodeWarrior like - // Carbon with Apple DevTools is Unix like - - // This seems wrong to me, but there is no fix. since - // "MacOS:MyText.txt" is absolute whereas "MyDir:MyText.txt" - // is not. Or maybe ":MyDir:MyText.txt" has to be used? RR. - if (filename.Find(':') != wxNOT_FOUND && filename[0] != ':') - return true ; -#else // Unix like or Windows if (filename[0] == wxT('/')) return true; -#endif #ifdef __VMS__ if ((filename[0] == wxT('[') && filename[1] != wxT('.'))) return true; @@ -556,7 +547,7 @@ static CharType *wxDoExpandPath(CharType *buf, const wxString& name) buf[0] = wxT('\0'); if (name.empty()) return buf; - nm = MYcopystring((const CharType*)name.c_str()); // Make a scratch copy + nm = ::MYcopystring(static_cast(name.c_str())); // Make a scratch copy CharType *nm_tmp = nm; /* Skip leading whitespace and cr */ @@ -806,22 +797,12 @@ wxPathOnly (wxChar *path) // Search backward for a backward or forward slash while (i > -1) { -#if defined(__WXMAC__) && !defined(__DARWIN__) - // Classic or Carbon CodeWarrior like - // Carbon with Apple DevTools is Unix like - if (path[i] == wxT(':') ) - { - buf[i] = 0; - return buf; - } -#else // Unix like or Windows if (path[i] == wxT('/') || path[i] == wxT('\\')) { buf[i] = 0; return buf; } -#endif #ifdef __VMS__ if (path[i] == wxT(']')) { @@ -862,15 +843,6 @@ wxString wxPathOnly (const wxString& path) // Search backward for a backward or forward slash while (i > -1) { -#if defined(__WXMAC__) && !defined(__DARWIN__) - // Classic or Carbon CodeWarrior like - // Carbon with Apple DevTools is Unix like - if (path[i] == wxT(':') ) - { - buf[i] = 0; - return wxString(buf); - } -#else // Unix like or Windows if (path[i] == wxT('/') || path[i] == wxT('\\')) { @@ -880,7 +852,6 @@ wxString wxPathOnly (const wxString& path) buf[i] = 0; return wxString(buf); } -#endif #ifdef __VMS__ if (path[i] == wxT(']')) { @@ -911,11 +882,7 @@ wxString wxPathOnly (const wxString& path) #if defined(__WXMAC__) -#if TARGET_API_MAC_OSX #define kDefaultPathStyle kCFURLPOSIXPathStyle -#else -#define kDefaultPathStyle kCFURLHFSPathStyle -#endif wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent ) { @@ -981,10 +948,11 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) void wxMacFilename2FSSpec( const wxString& path , FSSpec *spec ) { - OSStatus err = noErr ; - FSRef fsRef ; - wxMacPathToFSRef( path , &fsRef ) ; - err = FSRefMakeFSSpec( &fsRef , spec ) ; + OSStatus err = noErr; + FSRef fsRef; + wxMacPathToFSRef( path , &fsRef ); + err = FSGetCatalogInfo(&fsRef, kFSCatInfoNone, NULL, NULL, spec, NULL); + verify_noerr( err ); } #endif @@ -1124,7 +1092,7 @@ wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite) // instead of our code if available // // NB: 3rd parameter is bFailIfExists i.e. the inverse of overwrite - if ( !::CopyFile(file1, file2, !overwrite) ) + if ( !::CopyFile(file1.fn_str(), file2.fn_str(), !overwrite) ) { wxLogSysError(_("Failed to copy the file '%s' to '%s'"), file1.c_str(), file2.c_str()); @@ -1271,7 +1239,7 @@ bool wxRemoveFile(const wxString& file) || (defined(__MWERKS__) && defined(__MSL__)) int res = wxRemove(file); #elif defined(__WXMAC__) - int res = unlink(wxFNCONV(file)); + int res = unlink(file.fn_str()); #elif defined(__WXPALMOS__) int res = 1; // TODO with VFSFileDelete() @@ -1287,7 +1255,7 @@ bool wxMkdir(const wxString& dir, int perm) #if defined(__WXPALMOS__) return false; #elif defined(__WXMAC__) && !defined(__UNIX__) - return (mkdir( wxFNCONV(dir) , 0 ) == 0); + return (mkdir(dir.fn_str() , 0 ) == 0); #else // !Mac const wxChar *dirname = dir.c_str(); @@ -1375,7 +1343,7 @@ bool wxDirExists(const wxString& pathName) return false; #elif defined(__WIN32__) && !defined(__WXMICROWIN__) // stat() can't cope with network paths - DWORD ret = ::GetFileAttributes(strPath); + DWORD ret = ::GetFileAttributes(strPath.fn_str()); return (ret != (DWORD)-1) && (ret & FILE_ATTRIBUTE_DIRECTORY); #elif defined(__OS2__) @@ -1540,16 +1508,6 @@ wxChar *wxDoGetCwd(wxChar *buf, int sz) { #if defined(_MSC_VER) || defined(__MINGW32__) ok = _getcwd(cbuf, sz) != NULL; - #elif defined(__WXMAC__) && !defined(__DARWIN__) - char lbuf[1024] ; - if ( getcwd( lbuf , sizeof( lbuf ) ) ) - { - wxString res( lbuf , *wxConvCurrent ) ; - wxStrcpy( buf , res ) ; - ok = true; - } - else - ok = false ; #elif defined(__OS2__) APIRET rc; ULONG ulDriveNum = 0; @@ -1572,7 +1530,7 @@ wxChar *wxDoGetCwd(wxChar *buf, int sz) ok = getcwd(cbuf, sz) != NULL; #endif // platform - #if wxUSE_UNICODE && !(defined(__WXMAC__) && !defined(__DARWIN__)) + #if wxUSE_UNICODE // finally convert the result to Unicode if needed wxConvFile.MB2WC(buf, cbuf, sz); #endif // wxUSE_UNICODE @@ -1644,11 +1602,11 @@ bool wxSetWorkingDirectory(const wxString& d) #if defined(__OS2__) if (d[1] == ':') { - ::DosSetDefaultDisk(1 + wxToupper(d[0]) - _T('A')); - // do not call DosSetCurrentDir when just changing drive, - // since it requires e.g. "d:." instead of "d:"! - if (d.length() == 2) - return true; + ::DosSetDefaultDisk(wxToupper(d[0]) - _T('A') + 1); + // do not call DosSetCurrentDir when just changing drive, + // since it requires e.g. "d:." instead of "d:"! + if (d.length() == 2) + return true; } return (::DosSetCurrentDir(d.c_str()) == 0); #elif defined(__UNIX__) || defined(__WXMAC__) || defined(__DOS__) @@ -1661,7 +1619,7 @@ bool wxSetWorkingDirectory(const wxString& d) wxUnusedVar(d); return false; #else - return (bool)(SetCurrentDirectory(d) != 0); + return (bool)(SetCurrentDirectory(d.fn_str()) != 0); #endif #else // Must change drive, too. @@ -1913,7 +1871,7 @@ bool wxIsWritable(const wxString &path) { #if defined( __UNIX__ ) || defined(__OS2__) // access() will take in count also symbolic links - return access(path.fn_str(), W_OK) == 0; + return wxAccess(path.c_str(), W_OK) == 0; #elif defined( __WINDOWS__ ) return wxCheckWin32Permission(path, GENERIC_WRITE); #else @@ -1927,7 +1885,7 @@ bool wxIsReadable(const wxString &path) { #if defined( __UNIX__ ) || defined(__OS2__) // access() will take in count also symbolic links - return access(path.fn_str(), R_OK) == 0; + return wxAccess(path.c_str(), R_OK) == 0; #elif defined( __WINDOWS__ ) return wxCheckWin32Permission(path, GENERIC_READ); #else @@ -1941,7 +1899,7 @@ bool wxIsExecutable(const wxString &path) { #if defined( __UNIX__ ) || defined(__OS2__) // access() will take in count also symbolic links - return access(path.fn_str(), X_OK) == 0; + return wxAccess(path.c_str(), X_OK) == 0; #elif defined( __WINDOWS__ ) return wxCheckWin32Permission(path, GENERIC_EXECUTE); #else