Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,28 @@ public Terminal sysTerminal(
String type,
boolean ansiPassThrough,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
Terminal.SignalHandler signalHandler,
boolean paused,
SystemStream systemStream)
throws IOException {
if (OSUtils.IS_WINDOWS) {
return NativeWinSysTerminal.createTerminal(
this, systemStream, name, type, ansiPassThrough, encoding, nativeSignals, signalHandler, paused);
this,
systemStream,
name,
type,
ansiPassThrough,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
paused);
} else {
Pty pty = new FfmNativePty(
this,
Expand All @@ -68,7 +82,16 @@ public Terminal sysTerminal(
systemStream == SystemStream.Output ? 1 : 2,
systemStream == SystemStream.Output ? FileDescriptor.out : FileDescriptor.err,
CLibrary.ttyName(0));
return new PosixSysTerminal(name, type, pty, encoding, nativeSignals, signalHandler);
return new PosixSysTerminal(
name,
type,
pty,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler);
}
}

Expand All @@ -79,13 +102,27 @@ public Terminal newTerminal(
InputStream in,
OutputStream out,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
Terminal.SignalHandler signalHandler,
boolean paused,
Attributes attributes,
Size size)
throws IOException {
Pty pty = CLibrary.openpty(this, attributes, size);
return new PosixPtyTerminal(name, type, pty, in, out, encoding, signalHandler, paused);
return new PosixPtyTerminal(
name,
type,
pty,
in,
out,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
signalHandler,
paused);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,35 @@ public static NativeWinSysTerminal createTerminal(
SignalHandler signalHandler,
boolean paused)
throws IOException {
return createTerminal(
provider,
systemStream,
name,
type,
ansiPassThrough,
encoding,
encoding,
encoding,
encoding,
nativeSignals,
signalHandler,
paused);
}

public static NativeWinSysTerminal createTerminal(
TerminalProvider provider,
SystemStream systemStream,
String name,
String type,
boolean ansiPassThrough,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
SignalHandler signalHandler,
boolean paused)
throws IOException {
try (java.lang.foreign.Arena arena = java.lang.foreign.Arena.ofConfined()) {
// Get input console mode
java.lang.foreign.MemorySegment consoleIn = GetStdHandle(STD_INPUT_HANDLE);
Expand Down Expand Up @@ -100,6 +129,9 @@ public static NativeWinSysTerminal createTerminal(
name,
type,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
consoleIn,
Expand Down Expand Up @@ -157,13 +189,51 @@ private static java.lang.foreign.MemorySegment allocateInt(java.lang.foreign.Are
java.lang.foreign.MemorySegment outConsole,
int outConsoleMode)
throws IOException {
this(
provider,
systemStream,
writer,
name,
type,
encoding,
encoding,
encoding,
encoding,
nativeSignals,
signalHandler,
inConsole,
inConsoleMode,
outConsole,
outConsoleMode);
}

NativeWinSysTerminal(
TerminalProvider provider,
SystemStream systemStream,
Writer writer,
String name,
String type,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
SignalHandler signalHandler,
java.lang.foreign.MemorySegment inConsole,
int inConsoleMode,
java.lang.foreign.MemorySegment outConsole,
int outConsoleMode)
throws IOException {
super(
provider,
systemStream,
writer,
name,
type,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
inConsole,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ public void testNewTerminalWithNull() throws IOException {
new ByteArrayInputStream(new byte[0]),
new ByteArrayOutputStream(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Terminal.SignalHandler.SIG_DFL,
false,
null,
Expand All @@ -50,6 +53,9 @@ public void testNewTerminalNoNull() throws IOException {
new ByteArrayInputStream(new byte[0]),
new ByteArrayOutputStream(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Charset.defaultCharset(),
Terminal.SignalHandler.SIG_DFL,
false,
new Attributes(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,17 +139,40 @@ public Terminal sysTerminal(
String type,
boolean ansiPassThrough,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
Terminal.SignalHandler signalHandler,
boolean paused,
SystemStream systemStream)
throws IOException {
if (OSUtils.IS_WINDOWS) {
return winSysTerminal(
name, type, ansiPassThrough, encoding, nativeSignals, signalHandler, paused, systemStream);
name,
type,
ansiPassThrough,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
paused,
systemStream);
} else {
return posixSysTerminal(
name, type, ansiPassThrough, encoding, nativeSignals, signalHandler, paused, systemStream);
name,
type,
ansiPassThrough,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
paused,
systemStream);
}
}

Expand All @@ -163,8 +186,46 @@ public Terminal winSysTerminal(
boolean paused,
SystemStream systemStream)
throws IOException {
return winSysTerminal(
name,
type,
ansiPassThrough,
encoding,
encoding,
encoding,
encoding,
nativeSignals,
signalHandler,
paused,
systemStream);
}

public Terminal winSysTerminal(
String name,
String type,
boolean ansiPassThrough,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
Terminal.SignalHandler signalHandler,
boolean paused,
SystemStream systemStream)
throws IOException {
JansiWinSysTerminal terminal = JansiWinSysTerminal.createTerminal(
this, systemStream, name, type, ansiPassThrough, encoding, nativeSignals, signalHandler, paused);
this,
systemStream,
name,
type,
ansiPassThrough,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
nativeSignals,
signalHandler,
paused);
terminal.disableScrolling();
return terminal;
}
Expand All @@ -179,8 +240,36 @@ public Terminal posixSysTerminal(
boolean paused,
SystemStream systemStream)
throws IOException {
return posixSysTerminal(
name,
type,
ansiPassThrough,
encoding,
encoding,
encoding,
encoding,
nativeSignals,
signalHandler,
paused,
systemStream);
}

public Terminal posixSysTerminal(
String name,
String type,
boolean ansiPassThrough,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
boolean nativeSignals,
Terminal.SignalHandler signalHandler,
boolean paused,
SystemStream systemStream)
throws IOException {
Pty pty = current(systemStream);
return new PosixSysTerminal(name, type, pty, encoding, nativeSignals, signalHandler);
return new PosixSysTerminal(
name, type, pty, encoding, stdinEncoding, stdoutEncoding, stderrEncoding, nativeSignals, signalHandler);
}

@Override
Expand All @@ -190,13 +279,27 @@ public Terminal newTerminal(
InputStream in,
OutputStream out,
Charset encoding,
Charset stdinEncoding,
Charset stdoutEncoding,
Charset stderrEncoding,
Terminal.SignalHandler signalHandler,
boolean paused,
Attributes attributes,
Size size)
throws IOException {
Pty pty = open(attributes, size);
return new PosixPtyTerminal(name, type, pty, in, out, encoding, signalHandler, paused);
return new PosixPtyTerminal(
name,
type,
pty,
in,
out,
encoding,
stdinEncoding,
stdoutEncoding,
stderrEncoding,
signalHandler,
paused);
}

@Override
Expand Down
Loading
Loading