X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92384716797eae7e739ea5b4cb2ca7995d53bc86..0e2a14e5e30994698f213daf2fc9e3d897846f4d:/src/unix/stdpaths.cpp diff --git a/src/unix/stdpaths.cpp b/src/unix/stdpaths.cpp index 5850820158..fc50fe8ae5 100644 --- a/src/unix/stdpaths.cpp +++ b/src/unix/stdpaths.cpp @@ -38,6 +38,10 @@ #include #endif +#if defined(__WXMAC__) + #include "wx/mac/private.h" +#endif + // ============================================================================ // wxStandardPaths implementation // ============================================================================ @@ -58,31 +62,30 @@ wxString wxStandardPaths::GetInstallPrefix() const wxStandardPaths *pathPtr = wx_const_cast(wxStandardPaths *, this); #ifdef __LINUX__ - // under Linux, we can get location of the executable - wxChar buf[4096]; - int result; - - // FIXME: is readlink() Unicode-aware or not??? - result = readlink( (const char*)wxT("/proc/self/exe"), buf, WXSIZEOF(buf) - sizeof(wxChar) ); - if (result != -1) + // under Linux, we can try to infer the prefix from the location of the + // executable + char buf[4096]; + int result = readlink("/proc/self/exe", buf, WXSIZEOF(buf) - sizeof(char)); + if ( result != -1 ) { - buf[result] = wxChar(0); - wxString exeStr( buf, wxConvLibc ); + buf[result] = '\0'; // readlink() doesn't NUL-terminate the buffer + + wxString exeStr(buf, wxConvLibc); // consider that we're in the last "bin" subdirectory of our prefix - wxString basename( wxString( wxTheApp->argv[0]).AfterLast( wxChar('/')) ); - size_t pos = exeStr.find( wxT("/bin/") + basename ); - if (pos != wxString::npos) - pathPtr->m_prefix.assign( exeStr, 0, pos ); + wxString basename(wxString(wxTheApp->argv[0]).AfterLast(_T('/'))); + size_t pos = exeStr.find(wxT("/bin/") + basename); + if ( pos != wxString::npos ) + pathPtr->m_prefix.assign(exeStr, 0, pos); } #endif // __LINUX__ - if (m_prefix.empty()) + if ( m_prefix.empty() ) { #ifdef __VMS - pathPtr->m_prefix = wxT("/sys$system"); + pathPtr->m_prefix = wxT("/sys$system"); #else - pathPtr->m_prefix = wxT("/usr/local"); + pathPtr->m_prefix = wxT("/usr/local"); #endif } } @@ -130,6 +133,8 @@ wxString wxStandardPaths::GetUserDataDir() const { #ifdef __VMS return wxFileName::GetHomeDir(); +#elif defined(__WXMAC__) + return AppendAppName(wxMacFindFolder((short) kUserDomain, kApplicationSupportFolderType, kDontCreateFolder)); #else return AppendAppName(wxFileName::GetHomeDir() + _T("/.")); #endif