Skip to content

Commit c0f7018

Browse files
committed
fix #488: use correct environment variables when running commands
1 parent 3333e9f commit c0f7018

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

src/org/intellij/erlang/rebar/settings/RebarConfigurationForm.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private boolean validateRebarPath() {
8585
String rebarPath = myRebarPathSelector.getText();
8686
if (!new File(rebarPath).exists()) return false;
8787

88-
ExtProcessUtil.ExtProcessOutput output = ExtProcessUtil.execAndGetFirstLine(myRebarPathSelector.getText() + " --version", 3000);
88+
ExtProcessUtil.ExtProcessOutput output = ExtProcessUtil.execAndGetFirstLine(3000, myRebarPathSelector.getText(), "--version");
8989
String version = output.getStdOut();
9090
if (version.startsWith("rebar")) {
9191
myRebarVersionText.setText(version);

src/org/intellij/erlang/settings/ErlangExternalToolsConfigurable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public void disposeUIResources() {
166166
}
167167

168168
private void validateEmacsPath() {
169-
String rawVersion = ExtProcessUtil.execAndGetFirstLine(myEmacsPathSelector.getText() + " --version", 3000).getStdOut();
169+
String rawVersion = ExtProcessUtil.execAndGetFirstLine(3000, myEmacsPathSelector.getText(), "--version").getStdOut();
170170
myEmacsVersionText.setText(StringUtil.containsIgnoreCase(rawVersion, "emacs") ? rawVersion : "N/A");
171171
}
172172
}

src/org/intellij/erlang/utils/ExtProcessUtil.java

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.intellij.erlang.utils;
1818

19+
import com.intellij.execution.ExecutionException;
20+
import com.intellij.execution.configurations.GeneralCommandLine;
1921
import com.intellij.openapi.util.text.StringUtil;
2022
import org.jetbrains.annotations.NotNull;
2123

@@ -30,26 +32,31 @@ private ExtProcessUtil() {
3032
}
3133

3234
@NotNull
33-
public static ExtProcessOutput execAndGetFirstLine(@NotNull String cmd, long timeout) {
35+
public static ExtProcessOutput execAndGetFirstLine(long timeout, @NotNull String... command) {
3436
try {
35-
final Process cmdRunner = Runtime.getRuntime().exec(cmd);
37+
final Process cmdRunner = new GeneralCommandLine(command).createProcess();
3638
ExecutorService singleTreadExecutor = Executors.newSingleThreadExecutor();
37-
Future<ExtProcessOutput> cmdRunnerFuture = singleTreadExecutor.submit(new Callable<ExtProcessOutput>() {
38-
@Override
39-
public ExtProcessOutput call() throws Exception {
40-
cmdRunner.waitFor();
41-
String stdOut = readLine(cmdRunner.getInputStream());
42-
String stdErr = readLine(cmdRunner.getErrorStream());
43-
return new ExtProcessOutput(stdOut, stdErr);
44-
}
45-
});
4639
try {
47-
return cmdRunnerFuture.get(timeout, TimeUnit.MILLISECONDS);
48-
} catch (Exception e) { // Suppress
40+
Future<ExtProcessOutput> cmdRunnerFuture = singleTreadExecutor.submit(new Callable<ExtProcessOutput>() {
41+
@Override
42+
public ExtProcessOutput call() throws Exception {
43+
cmdRunner.waitFor();
44+
String stdOut = readLine(cmdRunner.getInputStream());
45+
String stdErr = readLine(cmdRunner.getErrorStream());
46+
return new ExtProcessOutput(stdOut, stdErr);
47+
}
48+
});
49+
50+
try {
51+
return cmdRunnerFuture.get(timeout, TimeUnit.MILLISECONDS);
52+
} catch (Exception e) { // Suppress
53+
}
54+
55+
cmdRunnerFuture.cancel(true);
56+
} finally {
57+
singleTreadExecutor.shutdown();
4958
}
50-
cmdRunnerFuture.cancel(true);
51-
singleTreadExecutor.shutdown();
52-
} catch (IOException e) { // Suppress
59+
} catch (ExecutionException e) { // Suppress
5360
}
5461
return new ExtProcessOutput("", "");
5562
}

0 commit comments

Comments
 (0)