X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94ac672812d24937c9da25d30aa3578e861d24dd..9ac71bef070f553f4ecef2c549dba33b10422f06:/src/common/filefn.cpp diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index b064624435..7a30b5eb6f 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -920,26 +920,40 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) return result ; } +#ifndef __DARWIN__ +// Mac file names are POSIX (Unix style) under Darwin +// therefore the conversion functions below are not needed + +static char sMacFileNameConversion[ 1000 ] ; +#endif void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) { + OSStatus err = noErr ; #ifdef __DARWIN__ FSRef theRef; // get the FSRef associated with the POSIX path - (void) FSPathMakeRef((const UInt8 *) path, &theRef, NULL); + err = FSPathMakeRef((const UInt8 *) path, &theRef, NULL); // convert the FSRef to an FSSpec - (void) FSGetCatalogInfo(&theRef, kFSCatInfoNone, NULL, NULL, spec, NULL); + err = FSGetCatalogInfo(&theRef, kFSCatInfoNone, NULL, NULL, spec, NULL); #else - FSpLocationFromFullPath( strlen(path) , path , spec ) ; + if ( strchr( path , ':' ) == NULL ) + { + // try whether it is a volume / or a mounted volume + strncpy( sMacFileNameConversion , path , 1000 ) ; + sMacFileNameConversion[998] = 0 ; + strcat( sMacFileNameConversion , ":" ) ; + err = FSpLocationFromFullPath( strlen(sMacFileNameConversion) , sMacFileNameConversion , spec ) ; + } + else + { + err = FSpLocationFromFullPath( strlen(path) , path , spec ) ; + } #endif } #ifndef __DARWIN__ -// Mac file names are POSIX (Unix style) under Darwin -// therefore the conversion functions below are not needed - -static char sMacFileNameConversion[ 1000 ] ; wxString wxMac2UnixFilename (const char *str) { @@ -1479,8 +1493,6 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) #if wxUSE_UNICODE // finally convert the result to Unicode if needed wxConvFile.MB2WC(buf, cbuf, sz); - // wxString tmp = wxString::FromAscii( cbuf ); - // wxStrcpy( buf, tmp.c_str() ); #endif // wxUSE_UNICODE } @@ -1524,15 +1536,11 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) wxString wxGetCwd() { - wxString str; - - // we can't create wxStringBuffer object inline: Sun CC generates buggy - // code in this case! - { - wxStringBuffer buf(str, _MAXPATHLEN); - wxGetWorkingDirectory(buf, _MAXPATHLEN); - } - + wxChar *buffer = new wxChar[_MAXPATHLEN]; + wxGetWorkingDirectory(buffer, _MAXPATHLEN); + wxString str( buffer ); + delete [] buffer; + return str; }