]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
no changes
[wxWidgets.git] / src / common / filefn.cpp
index fd4b6b7ae9f5611d4eeaaa76d216088f2386d65f..59d875f298741263ef2ca57f0e88941a66acf652 100644 (file)
@@ -75,7 +75,7 @@
     #include <process.h>
     #include "wx/os2/private.h"
 #endif
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
+#if defined(__WINDOWS__) && !defined(__WXMICROWIN__) && !defined(__WXWINE__)
 #if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__)
     #include <direct.h>
     #include <dos.h>
@@ -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)
 {
@@ -1522,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;
 }