ibmi: fix the false isatty() issue on IBMi

On IBMi PASE isatty() always returns true for stdin, stdout and stderr.
Use ioctl() instead to identify whether it's actually a TTY.

PR-URL: https://github.com/libuv/libuv/pull/2565
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
This commit is contained in:
Xu Meng 2019-12-16 15:26:54 +01:00 committed by Ben Noordhuis
parent d077d066fd
commit e14c56bd90

View File

@ -293,7 +293,14 @@ uv_handle_type uv_guess_handle(uv_file file) {
if (file < 0) if (file < 0)
return UV_UNKNOWN_HANDLE; return UV_UNKNOWN_HANDLE;
#if defined(__PASE__)
/* On IBMi PASE isatty() always returns true for stdin, stdout and stderr.
* Use ioctl() instead to identify whether it's actually a TTY.
*/
if (!ioctl(file, TXISATTY + 0x81, NULL) || errno != ENOTTY)
#else
if (isatty(file)) if (isatty(file))
#endif
return UV_TTY; return UV_TTY;
if (fstat(file, &s)) if (fstat(file, &s))