message: Don't fork to new process if we don't have anything to run
  * If we fork and then exit it seems to leave weird processes around that
  hang around.
diff: @@ -342,10 +342,17 @@ static pid_t RunProcess(const char *app, const char *workingDir, const char *cmd
  }
  }
  + const string appPath(GetAbsoluteAppPathFromName(appName));
  +
  + pid_t childPid = 0;
  +
  + // don't fork if we didn't find anything to execute.
  + if(!appPath.empty())
  + {
  // don't care about child processes, just ignore them
  // signal(SIGCHLD, SIG_IGN);
  - pid_t childPid = fork();
  + childPid = fork();
  if(childPid == 0)
  {
  FileIO::ReleaseFDAfterFork();
  @@ -359,20 +366,15 @@ static pid_t RunProcess(const char *app, const char *workingDir, const char *cmd
  close(stdoutPipe[0]);
  close(stderrPipe[0]);
  }
  - const string appPath(GetAbsoluteAppPathFromName(appName));
  - if(!appPath.empty())
  - {
  +
  chdir(workDir.c_str());
  execve(appPath.c_str(), argv, envp);
  RDCERR("Failed to execute '%s' %s", appName.c_str(), strerror(errno));
  RDCERR("Full Path: '%s'", appPath.c_str());
  - }
  - else
  - {
  - RDCERR("Failed to execute '%s' Executable not found", appName.c_str());
  - }
  +
  exit(0);
  }
  + }
  if(stdoutPipe)
  {
  @@ -426,7 +428,7 @@ uint32_t Process::LaunchProcess(const char *app, const char *workingDir, const c
  uint32_t ret = (uint32_t)RunProcess(app, workingDir, cmdLine, currentEnvironment,
  result ? stdoutPipe : NULL, result ? stderrPipe : NULL);
  - if(result)
  + if(ret && result)
  {
  result->strStdout = "";
  result->strStderror = "";
  