From a0cc098ef0883d1893c4412e4dbde8155314732f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 30 Jan 2018 22:58:08 +0100 Subject: [PATCH] Use only existing directories in Unix wxMimeTypesManager Avoid using directories under /opt if they don't exist anyhow. This also makes the code easier to modify in the future, see #16704. --- src/unix/mimetype.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/unix/mimetype.cpp b/src/unix/mimetype.cpp index fef68d3abf..50a555f45e 100644 --- a/src/unix/mimetype.cpp +++ b/src/unix/mimetype.cpp @@ -520,6 +520,11 @@ void wxMimeTypesManagerImpl::InitIfNeeded() } +static void AppendToPathIfExists(wxString& pathvar, const wxString& dir) +{ + if ( wxFileName::DirExists(dir) ) + pathvar << ":" << dir; +} // read system and user mailcaps and other files void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, @@ -546,10 +551,18 @@ void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, if ( xdgDataDirs.empty() ) { xdgDataDirs = "/usr/local/share:/usr/share"; - if (mailcapStyles & wxMAILCAP_GNOME) - xdgDataDirs += ":/usr/share/gnome:/opt/gnome/share"; - if (mailcapStyles & wxMAILCAP_KDE) - xdgDataDirs += ":/usr/share/kde3:/opt/kde3/share"; + + if ( mailcapStyles & wxMAILCAP_GNOME ) + { + AppendToPathIfExists(xdgDataDirs, "/usr/share/gnome"); + AppendToPathIfExists(xdgDataDirs, "/opt/gnome/share"); + } + + if ( mailcapStyles & wxMAILCAP_KDE ) + { + AppendToPathIfExists(xdgDataDirs, "/usr/share/kde3"); + AppendToPathIfExists(xdgDataDirs, "/opt/kde3/share"); + } } if ( !sExtraDir.empty() ) {