+#if defined(__WXMAC__)
+wxString wxMacFSSpec2MacFilename( const FSSpec *spec )
+{
+#ifdef __DARWIN__
+ FSRef theRef;
+ char thePath[FILENAME_MAX];
+
+ // convert the FSSpec to an FSRef
+ (void) FSpMakeFSRef( spec, &theRef );
+ // get the POSIX path associated with the FSRef
+ (void) FSRefMakePath( &theRef, (UInt8 *)thePath, sizeof(thePath) );
+
+ // create path string for return value
+ wxString result( thePath ) ;
+#else
+ Handle myPath ;
+ short length ;
+
+ // get length of path and allocate handle
+ FSpGetFullPath( spec , &length , &myPath ) ;
+ ::SetHandleSize( myPath , length + 1 ) ;
+ ::HLock( myPath ) ;
+ (*myPath)[length] = 0 ;
+ if ((length > 0) && ((*myPath)[length-1] == ':'))
+ (*myPath)[length-1] = 0 ;
+
+ // create path string for return value
+ wxString result( (char*) *myPath ) ;
+
+ // free allocated handle
+ ::HUnlock( myPath ) ;
+ ::DisposeHandle( myPath ) ;
+#endif
+
+ 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