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
This commit is contained in:
Stefan Csomor
2002-08-22 08:46:52 +00:00
parent 9e25f50910
commit bfc2bf628f

View File

@@ -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 ;