Re: [PATCH v3 1/2] add interface for /dev/tty interaction
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 6, 2012, 20:01 UTC
- Message-ID
- <7v1ujjzt5p.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120806195616.GC10039@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 8 quoted lines
> Erik has looked into doing a Windows alternative in compat/terminal.c, > and I think an integer would be insufficient there. In particular, I > think Windows needs two descriptors to accomplish the same thing (one > for CONIN$ and one for CONOUT$). So you'd need to turn term_t into a > struct (and you'd probably not want to return it by value then). > > Maybe it would be better to keep the abstraction as non-leaky as > possible, and just provide "terminal_can_prompt()" or similar?
OK. As we won't be giving separate instances of terminals to different callers anyway, compat/terminal.c can keep a static variable of whatever type that is necessary for the implementation around. That sounds like a reasonable way to go.
Show 13 quoted lines
> Returning the open descriptor (as Tay's patch does) avoids a race > condition where /dev/tty can be opened when terminal_can_prompt runs, > but not when we try to actually read from it. But we can either: > > 1. Not care. Even if the tty is opened, if a user has closed the > terminal we are going to get a read error anyway. So you can never > avoid that race condition in some form. > > 2. Open the terminal descriptor when either function is called, and > never close it. I don't think there is any reason we can't just > leak the descriptor. > > -Peff