X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a98ce49a41630c2eabb266fe1597d4e279545023..e15f0a5ea372e3a6c693fb6aa4fe73893a9af797:/src/unix/stdpaths.cpp diff --git a/src/unix/stdpaths.cpp b/src/unix/stdpaths.cpp index 5c36bfcf7e..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 // ============================================================================ @@ -55,31 +59,33 @@ wxString wxStandardPaths::GetInstallPrefix() const { if ( m_prefix.empty() ) { - wxStandardPaths *self = wx_const_cast(wxStandardPaths *, this); + wxStandardPaths *pathPtr = wx_const_cast(wxStandardPaths *, this); #ifdef __LINUX__ - // under Linux, we can get location of the executable + // under Linux, we can try to infer the prefix from the location of the + // executable char buf[4096]; - if ( readlink("/proc/self/exe", buf, WXSIZEOF(buf)) != -1 ) + int result = readlink("/proc/self/exe", buf, WXSIZEOF(buf) - sizeof(char)); + if ( result != -1 ) { - wxString exe(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(_T('/'))); - size_t pos = exe.find(_T("/bin/") + basename); + size_t pos = exeStr.find(wxT("/bin/") + basename); if ( pos != wxString::npos ) - { - self->m_prefix.assign(exe, 0, pos); - } + pathPtr->m_prefix.assign(exeStr, 0, pos); } +#endif // __LINUX__ if ( m_prefix.empty() ) -#endif // __LINUX__ { #ifdef __VMS - self->m_prefix = _T("/sys$system"); + pathPtr->m_prefix = wxT("/sys$system"); #else - self->m_prefix = _T("/usr/local"); + pathPtr->m_prefix = wxT("/usr/local"); #endif } } @@ -127,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