fix for bug 1371386, with some minor mods and cleanup

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Surovell
2005-12-03 21:17:17 +00:00
parent d806d30a0f
commit 74ebd40690

View File

@@ -55,31 +55,33 @@ wxString wxStandardPaths::GetInstallPrefix() const
{ {
if ( m_prefix.empty() ) if ( m_prefix.empty() )
{ {
wxStandardPaths *self = wx_const_cast(wxStandardPaths *, this); wxStandardPaths *pathPtr = wx_const_cast(wxStandardPaths *, this);
#ifdef __LINUX__ #ifdef __LINUX__
// under Linux, we can get location of the executable // under Linux, we can get location of the executable
char buf[4096]; wxChar buf[4096];
if ( readlink("/proc/self/exe", buf, WXSIZEOF(buf)) != -1 ) int result;
result = readlink( wxT("/proc/self/exe"), buf, WXSIZEOF(buf) - sizeof(wxChar) );
if (result != -1)
{ {
wxString exe(buf, wxConvLibc); buff[result] = wxChar(0);
wxString exeStr( buf, wxConvLibc );
// consider that we're in the last "bin" subdirectory of our prefix // consider that we're in the last "bin" subdirectory of our prefix
wxString basename(wxString(wxTheApp->argv[0]).AfterLast(_T('/'))); 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 ) if (pos != wxString::npos)
{ pathPtr->m_prefix.assign( exeStr, 0, pos );
self->m_prefix.assign(exe, 0, pos);
}
} }
if ( m_prefix.empty() )
#endif // __LINUX__ #endif // __LINUX__
if (m_prefix.empty())
{ {
#ifdef __VMS #ifdef __VMS
self->m_prefix = _T("/sys$system"); pathPtr->m_prefix = wxT("/sys$system");
#else #else
self->m_prefix = _T("/usr/local"); pathPtr->m_prefix = wxT("/usr/local");
#endif #endif
} }
} }