]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fileconf.cpp
overload operator<<() for wchar_t too (if applicable/possible); this fixes the proble...
[wxWidgets.git] / src / common / fileconf.cpp
index e3af92c28a85860bdb6314d967e84f036c30b15e..ef5c6c6d137540b6fc253bc5ca9b0c60c367a3c2 100644 (file)
@@ -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;
   }