X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8fd7108e7cfd6d3564a71ab5f49c391613e27798..472137baebae6c011ad7d70285de454b9ce7796d:/src/common/filefn.cpp diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 22f0636f92..7a8f627a55 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -56,7 +56,7 @@ #endif #if defined(__WXMAC__) - #include "wx/mac/private.h" // includes mac headers + #include "wx/osx/private.h" // includes mac headers #endif #ifdef __WINDOWS__ @@ -96,10 +96,6 @@ #define _MAXPATHLEN 1024 #endif -#ifdef __WXMAC__ -# include "MoreFilesX.h" -#endif - // ---------------------------------------------------------------------------- // private globals // ---------------------------------------------------------------------------- @@ -344,20 +340,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; @@ -414,11 +399,9 @@ void wxStripExtension(wxString& buffer) template static CharType *wxDoRealPath (CharType *path) { + static const CharType SEP = wxFILE_SEP_PATH; #ifdef __WXMSW__ - static const CharType SEP = wxT('\\'); wxUnix2DosFilename(path); -#else - static const CharType SEP = wxT('/'); #endif if (path[0] && path[1]) { /* MATTHEW: special case "/./x" */ @@ -550,11 +533,11 @@ static CharType *wxDoExpandPath(CharType *buf, const wxString& name) trimchars[2] = wxT('\t'); trimchars[3] = 0; + static const CharType SEP = wxFILE_SEP_PATH; #ifdef __WXMSW__ - const CharType SEP = wxT('\\'); -#else - const CharType SEP = wxT('/'); + //wxUnix2DosFilename(path); #endif + buf[0] = wxT('\0'); if (name.empty()) return buf; @@ -808,22 +791,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(']')) { @@ -864,15 +837,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('\\')) { @@ -882,7 +846,6 @@ wxString wxPathOnly (const wxString& path) buf[i] = 0; return wxString(buf); } -#endif #ifdef __VMS__ if (path[i] == wxT(']')) { @@ -911,13 +874,9 @@ wxString wxPathOnly (const wxString& path) // and back again - or we get nasty problems with delimiters. // Also, convert to lower case, since case is significant in UNIX. -#if defined(__WXMAC__) +#if defined(__WXMAC__) && !defined(__WXOSX_IPHONE__) -#if TARGET_API_MAC_OSX #define kDefaultPathStyle kCFURLPOSIXPathStyle -#else -#define kDefaultPathStyle kCFURLHFSPathStyle -#endif wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent ) { @@ -935,13 +894,13 @@ wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathCompon CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, cfString); CFRelease( cfString ); CFStringNormalize(cfMutableString,kCFStringNormalizationFormC); - return wxMacCFStringHolder(cfMutableString).AsString(); + return wxCFStringRef(cfMutableString).AsString(); } OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ) { OSStatus err = noErr ; - CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, wxMacCFStringHolder(path)); + CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, wxCFStringRef(path)); CFStringNormalize(cfMutableString,kCFStringNormalizationFormD); CFURLRef url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, cfMutableString , kDefaultPathStyle, false); CFRelease( cfMutableString ); @@ -966,7 +925,7 @@ wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ) CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, cfname); CFRelease( cfname ); CFStringNormalize(cfMutableString,kCFStringNormalizationFormC); - return wxMacCFStringHolder(cfMutableString).AsString() ; + return wxCFStringRef(cfMutableString).AsString() ; } #ifndef __LP64__ @@ -983,10 +942,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 @@ -1409,7 +1369,12 @@ wxChar *wxGetTempFileName(const wxString& prefix, wxChar *buf) return NULL; if ( buf ) +#ifdef _PACC_VER + // work around the PalmOS pacc compiler bug + wxStrcpy(buf, filename.data()); +#else wxStrcpy(buf, filename); +#endif else buf = MYcopystring(filename); @@ -1443,8 +1408,7 @@ wxString wxFindFirstFile(const wxString& spec, int flags) if ( !wxEndsWithPathSeparator(gs_dirPath ) ) gs_dirPath << wxFILE_SEP_PATH; - if (gs_dir) - delete gs_dir; + delete gs_dir; // can be NULL, this is ok gs_dir = new wxDir(gs_dirPath); if ( !gs_dir->IsOpened() ) @@ -1474,7 +1438,7 @@ wxString wxFindFirstFile(const wxString& spec, int flags) wxString wxFindNextFile() { - wxASSERT_MSG( gs_dir, wxT("You must call wxFindFirstFile before!") ); + wxCHECK_MSG( gs_dir, "", "You must call wxFindFirstFile before!" ); wxString result; gs_dir->GetNext(&result); @@ -1542,16 +1506,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; @@ -1574,7 +1528,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 @@ -1702,7 +1656,7 @@ wxString wxGetOSDirectory() wxChar buf[256]; GetWindowsDirectory(buf, 256); return wxString(buf); -#elif defined(__WXMAC__) +#elif defined(__WXMAC__) && wxOSX_USE_CARBON return wxMacFindFolder(kOnSystemDisk, 'macs', false); #else return wxEmptyString; @@ -1747,7 +1701,7 @@ bool wxFindFileInPath(wxString *pStr, const wxString& szPath, const wxString& sz return false; } -void WXDLLEXPORT wxSplitPath(const wxString& fileName, +void WXDLLIMPEXP_BASE wxSplitPath(const wxString& fileName, wxString *pstrPath, wxString *pstrName, wxString *pstrExt) @@ -1757,7 +1711,7 @@ void WXDLLEXPORT wxSplitPath(const wxString& fileName, #if wxUSE_DATETIME -time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename) +time_t WXDLLIMPEXP_BASE wxFileModificationTime(const wxString& filename) { wxDateTime mtime; if ( !wxFileName(filename).GetTimes(NULL, &mtime, NULL) ) @@ -1773,7 +1727,7 @@ time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename) // Returns 0 if none or if there's a problem. // filterStr is in the form: "All files (*.*)|*.*|JPEG Files (*.jpeg)|*.jpeg" -int WXDLLEXPORT wxParseCommonDialogsFilter(const wxString& filterStr, +int WXDLLIMPEXP_BASE wxParseCommonDialogsFilter(const wxString& filterStr, wxArrayString& descriptions, wxArrayString& filters) { @@ -1896,7 +1850,7 @@ static bool wxCheckWin32Permission(const wxString& path, DWORD access) HANDLE h = ::CreateFile ( - path.wx_str(), + path.t_str(), access, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,