X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/17256d1ed028fadca9ba5ebe076f961353a15310..b9e3186d195f6a6211794f849f1efffdccf91444:/src/common/fileconf.cpp diff --git a/src/common/fileconf.cpp b/src/common/fileconf.cpp index e3af92c28a..ef5c6c6d13 100644 --- a/src/common/fileconf.cpp +++ b/src/common/fileconf.cpp @@ -997,19 +997,23 @@ bool wxFileConfig::Flush(bool /* bCurrentOnly */) bool ret = file.Commit(); #if defined(__WXMAC__) - if ( ret ) - { - FSSpec spec ; - - wxMacFilename2FSSpec( m_strLocalFile , &spec ) ; - FInfo finfo ; - if ( FSpGetFInfo( &spec , &finfo ) == noErr ) - { - finfo.fdType = 'TEXT' ; - finfo.fdCreator = 'ttxt' ; - FSpSetFInfo( &spec , &finfo ) ; - } - } + if ( ret ) + { + FSRef fsRef ; + FSCatalogInfo catInfo; + FileInfo *finfo ; + + if ( wxMacPathToFSRef( m_strLocalFile , &fsRef ) == noErr ) + { + if ( FSGetCatalogInfo (&fsRef, kFSCatInfoFinderInfo, &catInfo, NULL, NULL, NULL) == noErr ) + { + finfo = (FileInfo*)&catInfo.finderInfo; + finfo->fileType = 'TEXT' ; + finfo->fileCreator = 'ttxt' ; + FSSetCatalogInfo( &fsRef, kFSCatInfoFinderInfo, &catInfo ) ; + } + } + } #endif // __WXMAC__ #ifdef __UNIX__ @@ -2021,14 +2025,22 @@ static wxString FilterOutEntryName(const wxString& str) strResult.Alloc(str.Len()); for ( const wxChar *pc = str.c_str(); *pc != wxT('\0'); pc++ ) { - wxChar c = *pc; + const wxChar c = *pc; // we explicitly allow some of "safe" chars and 8bit ASCII characters - // which will probably never have special meaning + // which will probably never have special meaning and with which we can't + // use isalnum() anyhow (in ASCII built, in Unicode it's just fine) + // // NB: note that wxCONFIG_IMMUTABLE_PREFIX and wxCONFIG_PATH_SEPARATOR // should *not* be quoted - if ( !wxIsalnum(c) && !wxStrchr(wxT("@_/-!.*%"), c) && ((c & 0x80) == 0) ) + if ( +#if !wxUSE_UNICODE + ((unsigned char)c < 127) && +#endif // ANSI + !wxIsalnum(c) && !wxStrchr(wxT("@_/-!.*%"), c) ) + { strResult += wxT('\\'); + } strResult += c; }