Re: [PATCH] Enable HAVE_DEV_TTY for Solaris
- From
Erik Faye-Lund <kusmabite@gmail.com>
- Date
- Aug 8, 2012, 14:13 UTC
- Message-ID
- <CABPQNSaUCEDU4+2N63n0k_XwSXOP_iFZG3GEYSPSBPcSVV8wRQ@mail.gmail.com>
- In-Reply-To
- <20120807041026.GA21918@sigill.intra.peff.net>
On Tue, Aug 7, 2012 at 6:10 AM, Jeff King <peff@peff.net> wrote:
Show 12 quoted lines
> Subject: [PATCH] terminal: seek when switching between reading and writing > > When a stdio stream is opened in update mode (e.g., "w+"), > the C standard forbids switching between reading or writing > without an intervening positioning function. Many > implementations are lenient about this, but Solaris libc > will flush the recently-read contents to the output buffer. > In this instance, that meant writing the non-echoed password > that the user just typed to the terminal. > > Fix it by inserting a no-op fseek between the read and > write.
My Windows-patches for git_terminal_prompt would probably also solve this problem. Instead of opening a read-write handle to /dev/tty, they open two handles to the terminal instead; one for reading and one for writing. This is because the terminal cannot be opened in read-write mode on Windows (we need to open "CONIN$" and "CONOUT$" separately).
You can have a look at the series here if you're interested: https://github.com/kusma/git/tree/work/terminal-cleanup
That last patch is the reason why I haven't submitted the series yet, but perhaps some of the preparatory patches could be worth-while for other platforms in the mean time?