On Mon, 13 May 2024 21:32:18 GMT, Naoto Sato <na...@openjdk.org> wrote:

>> Making sure `restoreEcho` correctly reflects the state in the shutdown 
>> thread, which differs from the application's thread that issues the 
>> `readPassword()` method.
>
> Naoto Sato has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Addresses a review comment

I think we're assuming here that it's good practice for the Console to snapshot 
the initial tty state and to restore that state on exit. That's probably right.

If we're really supporting that, though, it means that the Console needs to be 
prepared to deal with whatever state the tty is in. In particular, if echo is 
off when the JVM starts, then we'll also need to make sure that ordinary reads 
turn echo on before actually reading.

And JLine probably also needs to do things like disable canonical input 
processing (stty -icanon, or "raw" mode, in Unix parlance). Will these be 
restored on exit? Hm... I just went and looked a bit through JLine, and it 
installs its own shutdown hooks! I didn't dig further to see exactly what they 
do though. Probably they're solving a similar problem though.

Unfortunately, shutdown hooks are unordered, so it's possible to that the 
shutdown hook added at this level will run either before or after JLine's and 
maybe they'll conflict. So maybe the SPI needs to have tty-save-state and 
tty-restore-state functions added to it, or something like that, so the 
responsibility for handling tty stated is pushed down to the provider. But I 
don't know if JLine could support that. The java.base provider might be able to 
do something reasonable though.

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

PR Comment: https://git.openjdk.org/jdk/pull/19184#issuecomment-2110784011

Reply via email to