]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fileconf.cpp
test for timegm() added
[wxWidgets.git] / src / common / fileconf.cpp
index 6b33a83545e5cdc8145ea68614fb5f5eccdd41ff..54bc21641a83d76157a032d94ba8e223c1e00699 100644 (file)
@@ -98,7 +98,9 @@ wxString wxFileConfig::GetGlobalDir()
 {
   wxString strDir;
 
-  #ifdef __UNIX__
+  #ifdef __VMS__ // Note if __VMS is defined __UNIX is also defined
+    strDir = wxT("sys$manager:");
+  #elif defined( __UNIX__ )
     strDir = wxT("/etc/");
   #elif defined(__WXPM__)
     ULONG                           aulSysInfo[QSV_MAX] = {0};
@@ -194,7 +196,19 @@ wxString wxFileConfig::GetGlobalDir()
   #elif defined(__WXSTUBS__)
     wxASSERT_MSG( FALSE, wxT("TODO") ) ;
   #elif defined(__WXMAC__)
-    wxASSERT_MSG( FALSE, wxT("TODO") ) ;
+  {
+               short           vRefNum  ;
+               long            dirID ;
+               
+               if ( FindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder, &vRefNum, &dirID) == noErr)
+               {
+                       FSSpec file ;
+                       if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
+                       {
+                               strDir = wxMacFSSpec2UnixFilename( &file ) + "/" ;
+                       }
+               }
+  }
   #else // Windows
     wxChar szWinDir[MAX_PATH];
     ::GetWindowsDirectory(szWinDir, MAX_PATH);
@@ -210,13 +224,20 @@ wxString wxFileConfig::GetLocalDir()
 {
   wxString strDir;
 
+#ifndef __WXMAC__
   wxGetHomeDir(&strDir);
 
-#ifdef  __UNIX__
+#ifndef __VMS__
+# ifdef  __UNIX__
   if (strDir.Last() != wxT('/')) strDir << wxT('/');
 #else
   if (strDir.Last() != wxT('\\')) strDir << wxT('\\');
 #endif
+#endif
+#else
+       // no local dir concept on mac
+       return GetGlobalDir() ;
+#endif
 
   return strDir;
 }
@@ -229,6 +250,8 @@ wxString wxFileConfig::GetGlobalFileName(const wxChar *szFile)
   if ( wxStrchr(szFile, wxT('.')) == NULL )
   #ifdef  __UNIX__
     str << wxT(".conf");
+  #elif defined( __WXMAC__ )
+     str << " Preferences";
   #else   // Windows
     str << wxT(".ini");
   #endif  // UNIX/Win
@@ -238,8 +261,14 @@ wxString wxFileConfig::GetGlobalFileName(const wxChar *szFile)
 
 wxString wxFileConfig::GetLocalFileName(const wxChar *szFile)
 {
-  wxString str = GetLocalDir();
-
+#ifdef __VMS__ // On VMS I saw the problem that the home directory was appended
+   // twice for the configuration file. Does that also happen for other
+   // platforms?
+   wxString str = wxT( ' ' ); 
+#else
+   wxString str = GetLocalDir();
+#endif
+   
   #ifdef  __UNIX__
     str << wxT('.');
   #endif
@@ -251,6 +280,10 @@ wxString wxFileConfig::GetLocalFileName(const wxChar *szFile)
       str << wxT(".ini");
   #endif
 
+
+  #ifdef __WXMAC__
+     str << " Preferences";
+  #endif
   return str;
 }
 
@@ -324,20 +357,21 @@ wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName,
 
   // if the path is not absolute, prepend the standard directory to it
   // UNLESS wxCONFIG_USE_RELATIVE_PATH style is set
-  if ( !(style & wxCONFIG_USE_RELATIVE_PATH) ){
-         if ( !m_strLocalFile.IsEmpty() && !wxIsAbsolutePath(m_strLocalFile) )
-         {
-                 wxString strLocal = m_strLocalFile;
-                 m_strLocalFile = GetLocalDir();
-                 m_strLocalFile << strLocal;
-         }
-
-         if ( !m_strGlobalFile.IsEmpty() && !wxIsAbsolutePath(m_strGlobalFile) )
-         {
-                 wxString strGlobal = m_strGlobalFile;
-                 m_strGlobalFile = GetGlobalDir();
-                 m_strGlobalFile << strGlobal;
-         }
+  if ( !(style & wxCONFIG_USE_RELATIVE_PATH) )
+  {
+      if ( !m_strLocalFile.IsEmpty() && !wxIsAbsolutePath(m_strLocalFile) )
+      {
+          wxString strLocal = m_strLocalFile;
+          m_strLocalFile = GetLocalDir();
+          m_strLocalFile << strLocal;
+      }
+
+      if ( !m_strGlobalFile.IsEmpty() && !wxIsAbsolutePath(m_strGlobalFile) )
+      {
+          wxString strGlobal = m_strGlobalFile;
+          m_strGlobalFile = GetGlobalDir();
+          m_strGlobalFile << strGlobal;
+      }
   }
 
   Init();
@@ -748,7 +782,25 @@ bool wxFileConfig::Flush(bool /* bCurrentOnly */)
     }
   }
 
+#ifndef __WXMAC__
   return file.Commit();
+#else
+  bool ret = file.Commit();
+  if ( ret )
+  {
+       FSSpec spec ;
+       
+       wxUnixFilename2FSSpec( m_strLocalFile , &spec ) ;
+       FInfo finfo ;
+       if ( FSpGetFInfo( &spec , &finfo ) == noErr )
+       {
+               finfo.fdType = 'TEXT' ;
+               finfo.fdCreator = 'ttxt' ;
+               FSpSetFInfo( &spec , &finfo ) ;
+       }
+  }
+  return ret ;
+#endif
 }
 
 // ----------------------------------------------------------------------------