Thread (1 message) 1 message, 1 author, 2016-12-13

Re: What's cooking in git.git (Dec 2016, #02; Mon, 12)

From: Junio C Hamano <hidden>
Date: 2016-12-13 16:10:09

Johannes Schindelin [off-list ref] writes:
Hi Junio,

On Mon, 12 Dec 2016, Junio C Hamano wrote:
quoted
* js/mingw-isatty (2016-12-11) 1 commit
  (merged to 'next' on 2016-12-12 at 60c1da6676)
 + mingw: intercept isatty() to handle /dev/null as Git expects it

 We often decide if a session is interactive by checking if the
 standard I/O streams are connected to a TTY, but isatty() emulation
 on Windows incorrectly returned true if it is used on NUL (i.e. an
 equivalent to /dev/null). This has been fixed.
I'd like to suggest a reword: we did not use an isatty() emulation, but
Windows' own _isatty() function that simply has different semantics than
what Git expected. *Now* we have an isatty() emulation that wraps
_isatty() and emulates the behavior expected by Git.
Thanks for a comment.

One of the things that the new code does with the fix is this:

+/* In this file, we actually want to use Windows' own isatty(). */
+#undef isatty
+

which undoes "#define isatty winansi_isatty" that other code uses,
so that the implementation of winansi_isatty() can say isatty() and
get what people usually get when they say "isatty()" on Windows.

Before or after that patch, there is no "#define isatty _isatty" in
our codebase.  I take all of the above to mean that Windows does
give us isatty() function (not a macro--as otherwise it won't become
available to us again by "#undef isatty"), that in turn internally
calls what it calls _isatty() that says true for NUL?

Following the above reasoning, I meant "whatever you get when you
write isatty() on Windows" by "isatty() emulation on Windows" in the
paragraph you are commenting on.  I didn't say "what was written by
Git for Windows folks to emulate isatty()" or "what was given by MS
development tools", as that distinction is immaterial and does not
change the value of the fix.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help