]> git.saurik.com Git - wxWidgets.git/commitdiff
fix for getting proper fspecs for volumes that are not given with the trailing separator
authorStefan Csomor <csomor@advancedconcepts.ch>
Thu, 22 Aug 2002 08:46:52 +0000 (08:46 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Thu, 22 Aug 2002 08:46:52 +0000 (08:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/filefn.cpp

index 61c33fbcbb40634855d10d6e567ec7f61d8e16f3..7a30b5eb6f4662755cc33b9e984617881bdfd643 100644 (file)
@@ -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)
 {