Search $PATH for command when creating SystemExec from command line
authorColin Fletcher <colin.m.fletcher@googlemail.com>
Tue, 27 May 2014 09:21:34 +0000 (10:21 +0100)
committerColin Fletcher <colin.m.fletcher@googlemail.com>
Thu, 12 Jun 2014 22:20:05 +0000 (23:20 +0100)
When creating a SystemExec from a command-line, search $PATH for the
command to execute, so that post-export hooks don't need to specify a full
path.

libs/pbd/system_exec.cc

index 7e94880f858568e372b80db6c859e0d1fa9a888c..a5dd20afac7e180245568b9a7817c6524d3aab9f 100644 (file)
 #include <sys/resource.h>
 #endif
 
+#include <glibmm/miscutils.h>
 
 #define USE_VFORK
 
+#include "pbd/file_utils.h"
+#include "pbd/search_path.h"
 #include "pbd/system_exec.h"
 
 using namespace std;
@@ -192,8 +195,14 @@ SystemExec::SystemExec (std::string command, const std::map<char, std::string> s
 {
        init ();
        make_argp_escaped(command, subs);
-       cmd = argp[0];
-       // cmd = strdup(argp[0]);
+       if (!find_file_in_search_path (Searchpath (Glib::getenv ("PATH")), argp[0], cmd)) {
+               // not found in path - use as-is
+               cmd = argp[0];
+       }
+
+       // Glib::find_program_in_path () is only available in Glib >= 2.28
+       // cmd = Glib::find_program_in_path (argp[0]);
+
        make_envp();
 }