Skip to content

Commit efb30db

Browse files
Merge pull request #116 from alexarchambault/fix-fallbacks
Fix Windows scripts after manual tests
2 parents cb36805 + 794e59f commit efb30db

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

native/src/io/github/alexarchambault/nativeterm/NativeTerminalFallbacks.java renamed to native/src/io/github/alexarchambault/nativeterm/TerminalScriptFallbacks.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
/**
1212
* Methods to query the terminal size and enable ANSI output in it like in {@link NativeTerminal}
1313
*/
14-
public final class NativeTerminalFallbacks {
14+
public final class TerminalScriptFallbacks {
1515

16-
private NativeTerminalFallbacks() {}
16+
private TerminalScriptFallbacks() {}
1717

1818
/**
1919
* Gets the terminal size

native/src/io/github/alexarchambault/nativeterm/internal/ScriptRunner.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ public static String runPowerShellScript(String script) throws InterruptedExcept
3434
"-NoProfile",
3535
"-NonInteractive",
3636
"-EncodedCommand", encodedScript);
37-
builder.inheritIO();
37+
builder
38+
.redirectOutput(ProcessBuilder.Redirect.PIPE)
39+
.redirectInput(ProcessBuilder.Redirect.INHERIT)
40+
.redirectError(ProcessBuilder.Redirect.INHERIT);
3841

3942
Process proc = builder.start();
4043

native/src/io/github/alexarchambault/nativeterm/internal/WindowsTermScripts.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,26 @@ private WindowsTermScripts() {}
3232
"public static extern uint SetConsoleMode(\n" +
3333
" IntPtr hConsoleHandle,\n" +
3434
" uint dwMode);\n" +
35-
"public const int STD_OUTPUT_HANDLE = -11;\n" +
35+
"public const int STD_ERROR_HANDLE = -12;\n" +
3636
"public const int ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;\n" +
3737
"'@\n" +
3838
"\n" +
3939
"$WinAPI = Add-Type -MemberDefinition $signature `\n" +
4040
" -Name WinAPI -Namespace ConinModeScript `\n" +
4141
" -PassThru\n" +
4242
"\n" +
43-
"$handle = $WinAPI::GetStdHandle($WinAPI::STD_OUTPUT_HANDLE)\n" +
43+
"$handle = $WinAPI::GetStdHandle($WinAPI::STD_ERROR_HANDLE)\n" +
4444
"$mode = 0\n" +
4545
"$ret = $WinAPI::GetConsoleMode($handle, [ref]$mode)\n" +
4646
"if ($ret -eq 0) {\n" +
47-
" throw \"GetConsoleMode failed (is stdin a console?)\"\n" +
48-
"}\n" +
49-
"$ret = $WinAPI::SetConsoleMode($handle, $mode -bor $WinAPI::ENABLE_VIRTUAL_TERMINAL_PROCESSING)\n" +
50-
"if ($ret -eq 0) {\n" +
51-
" throw \"SetConsoleMode failed (is stdin a console?)\"\n" +
47+
" Write-Host \"Error: GetConsoleMode failed (is stderr a console?)\"\n" +
48+
"} else {\n" +
49+
" $ret = $WinAPI::SetConsoleMode($handle, $mode -bor $WinAPI::ENABLE_VIRTUAL_TERMINAL_PROCESSING)\n" +
50+
" if ($ret -eq 0) {\n" +
51+
" Write-Host \"false\"\n" +
52+
" } else {\n" +
53+
" Write-Host \"true\"\n" +
54+
" }\n" +
5255
"}\n";
5356

5457
/**
@@ -68,7 +71,7 @@ private WindowsTermScripts() {}
6871
" [DllImport(\"kernel32.dll\", SetLastError = true)]\n" +
6972
" public static extern IntPtr GetStdHandle(int nStdHandle);\n" +
7073
"\n" +
71-
" public const int STD_OUTPUT_HANDLE = -11;\n" +
74+
" public const int STD_ERROR_HANDLE = -12;\n" +
7275
"\n" +
7376
" [StructLayout(LayoutKind.Sequential)]\n" +
7477
" public struct COORD\n" +
@@ -100,14 +103,14 @@ private WindowsTermScripts() {}
100103
"\n" +
101104
"Add-Type -TypeDefinition $signature -Language CSharp\n" +
102105
"\n" +
103-
"$outputHandle = [Kernel32]::GetStdHandle([Kernel32]::STD_OUTPUT_HANDLE)\n" +
106+
"$outputHandle = [Kernel32]::GetStdHandle([Kernel32]::STD_ERROR_HANDLE)\n" +
104107
"\n" +
105108
"$info = New-Object Kernel32+CONSOLE_SCREEN_BUFFER_INFO\n" +
106109
"\n" +
107110
"if ([Kernel32]::GetConsoleScreenBufferInfo($outputHandle, [ref]$info)) {\n" +
108111
" Write-Host \"Size: $($info.srWindow.Right - $info.srWindow.Left + 1) $($info.srWindow.Bottom - $info.srWindow.Top + 1)\"\n" +
109112
"} else {\n" +
110-
" Write-Host \"Error: \" + [System.Runtime.InteropServices.Marshal]::GetLastWin32Error()\n" +
113+
" Write-Host \"Error: Win32 error $([System.Runtime.InteropServices.Marshal]::GetLastWin32Error())\"\n" +
111114
"}\n";
112115

113116
}

0 commit comments

Comments
 (0)