The following C file gives a bogus result when NUL is piped to it:
int main()
{
printf("_isatty = %d\n", _isatty(0));
}
the result is:
C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64
I'm pretty sure NUL (aka /dev/null) is not a terminal device! So I need to detect in another way whether or not the file descriptor corresponds to NUL. The number doesn't have any specific meaning; I see it when I actually do have a terminal attached.
What should I do? This question suggests using a sketchy undocumented function to get the underlying name, presumably comparing it to NUL, but that feels less than ideal to me. Is there a better way?
P.S. This would help solve this GHC bug.