Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca49becb authored by Frank Preel's avatar Frank Preel
Browse files

Start working on path containing spaces

parent 4ff52566
Loading
Loading
Loading
Loading
+20 −14
Original line number Diff line number Diff line
@@ -23,7 +23,10 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javafx.concurrent.Task;
@@ -151,7 +154,7 @@ public class CommandExecutionTask extends Task<CommandExecutionResult> {
     * @return ProcessBuilder instance containing the full command to run
     */
    protected ProcessBuilder getProcessBuilder(){
        final ProcessBuilder pb = new ProcessBuilder(getFullCmd().split(" "));
        final ProcessBuilder pb = new ProcessBuilder(getFullCmd());
        pb.redirectErrorStream(true);
        return pb;
    }
@@ -161,34 +164,37 @@ public class CommandExecutionTask extends Task<CommandExecutionResult> {
     * the full command to be run
     * @return String the full command
     */
    protected String getFullCmd(){
        final StringBuilder sb = new StringBuilder();
    private final String[] getFullCmd(){
    	ArrayList<String> rtn = new ArrayList<String>(10);
        
        // Prepare base of the command
        String cmdBase = command.getCommandBase();
        if(AppConstants.isWindowsOs()){
            cmdBase = "cmd.exe /c \"\""+cmdBase+"\"";
        }
        sb.append(cmdBase);
            rtn.add("cmd.exe");
            rtn.add("/c");
            rtn.add("\"\""+cmdBase+"\"\""); // K1ZFP check this...
        } else        
        	rtn.add(cmdBase);
        
        updateParameters();
        
        //Add the parameters
        if(command.getParameters() != null && !command.getParameters().isEmpty()){
            command.getParameters().values().forEach((param) -> {
        final Map<String, String> parameters = command.getParameters();
		if(parameters != null && !parameters.isEmpty()){
            parameters.values().forEach((param) -> {
                if(AppConstants.isWindowsOs()){
                    param = "\""+param+"\"";
                }
                sb.append(" ").append(param);
                rtn.add(param);
            });
        }
        // Close the full command
        if(AppConstants.isWindowsOs()){
            sb.append("\"");
            //program.append("\"");
        }

        logger.debug("getFullCmd(), full command =  {}", sb.toString());
        return sb.toString();
        logger.debug("getFullCmd(), full command =  {}", rtn.toString());
        return Arrays.copyOf(rtn.toArray(), rtn.size(), String[].class);
    }