diff --git a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp index 780716a80d..9e8251546c 100644 --- a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp +++ b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp @@ -26,14 +26,19 @@ namespace juce { -static bool exeIsAvailable (const char* const executable) +static bool exeIsAvailable (String executable) { ChildProcess child; - const bool ok = child.start ("which " + String (executable)) - && child.readAllProcessOutput().trim().isNotEmpty(); - child.waitForProcessToFinish (60 * 1000); - return ok; + if (child.start ("which " + executable)) + { + auto output = child.readAllProcessOutput().trim(); + child.waitForProcessToFinish (60 * 1000); + + return output.isNotEmpty() && ! output.contains ("no " + executable); + } + + return false; } @@ -67,7 +72,7 @@ public: child.start (args, ChildProcess::wantStdOut); while (child.isRunning()) - if (! MessageManager::getInstance()->runDispatchLoopUntil(20)) + if (! MessageManager::getInstance()->runDispatchLoopUntil (20)) break; finish (false); @@ -217,8 +222,7 @@ private: StringArray tokens; tokens.addTokens (owner.filters, ";,|", "\""); - for (int i = 0; i < tokens.size(); ++i) - args.add ("--file-filter=" + tokens[i]); + args.add ("--file-filter=" + tokens.joinIntoString (" ")); } if (owner.startingFile.isDirectory())