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