RFR: 8356985: Use "stdin.encoding" in Console's read*() methods

Volkan Yazici vyazici at openjdk.org
Tue May 20 19:26:52 UTC 2025


On Tue, 20 May 2025 19:18:43 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:

>> src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java line 160:
>> 
>>> 158: 
>>> 159:             try {
>>> 160:                 Terminal terminal = TerminalBuilder.builder().encoding(outCharset)
>> 
>> Shouldn't ideally `JdkConsole::charset` and `Terminal::encoding` be adapted for stdin/stdout variants?
>
> Also noticed `DumbTerminalProvider::sysTerminal` calls `DumbTerminal` with `new FileInputStream(FileDescriptor.in)`. Later on `DumbTerminal` applies `encoding()` both for passed `stdin` and `std{out,err}`. In short, `TerminalProvider` might need to undergo a similar refactoring separating input and output encodings.

All `FileDescriptor.in` encounters in `jdk.internal.org.jline.terminal` that might need attention:

src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/DumbTerminalProvider.java
src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/exec/ExecPty.java
src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ffm/FfmTerminalProvider.java

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25271#discussion_r2098707061


More information about the core-libs-dev mailing list