Eryk Sun <[email protected]> added the comment:
Here's an example of how to change the isatty() method in Modules/_io/fileio.c
to check for a console in Windows:
_io_FileIO_isatty_impl(fileio *self)
{
long res;
if (self->fd < 0)
return err_closed();
Py_BEGIN_ALLOW_THREADS
_Py_BEGIN_SUPPRESS_IPH
res = isatty(self->fd);
#ifdef MS_WINDOWS
if (res) {
DWORD mode;
HANDLE h = (HANDLE)_get_osfhandle(self->fd);
// It's a console if GetConsoleMode succeeds or if the last error
// isn't ERROR_INVALID_HANDLE. e.g., if 'con' is opened with 'w'
// mode, the error is ERROR_ACCESS_DENIED.
res = GetConsoleMode(h, &mode) ||
GetLastError() != ERROR_INVALID_HANDLE;
}
#endif
_Py_END_SUPPRESS_IPH
Py_END_ALLOW_THREADS
return PyBool_FromLong(res);
}
----------
stage: -> needs patch
type: -> behavior
versions: +Python 3.10, Python 3.9 -Python 3.5, Python 3.6, Python 3.7
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue28654>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com