From bfc2bf628fa574f16249b0a5e12a0b60c15e03a7 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 22 Aug 2002 08:46:52 +0000 Subject: [PATCH] fix for getting proper fspecs for volumes that are not given with the trailing separator git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/filefn.cpp | 44 ++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 61c33fbcbb..7a30b5eb6f 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -920,27 +920,41 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) return result ; } - -void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) -{ -#ifdef __DARWIN__ - FSRef theRef; - - // get the FSRef associated with the POSIX path - (void) FSPathMakeRef((const UInt8 *) path, &theRef, NULL); - // convert the FSRef to an FSSpec - (void) FSGetCatalogInfo(&theRef, kFSCatInfoNone, NULL, NULL, spec, NULL); -#else - 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 ] ; +#endif +void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) +{ + OSStatus err = noErr ; +#ifdef __DARWIN__ + FSRef theRef; + + // get the FSRef associated with the POSIX path + err = FSPathMakeRef((const UInt8 *) path, &theRef, NULL); + // convert the FSRef to an FSSpec + err = FSGetCatalogInfo(&theRef, kFSCatInfoNone, NULL, NULL, spec, NULL); +#else + 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__ + wxString wxMac2UnixFilename (const char *str) { char *s = sMacFileNameConversion ;