cygwin: select: use UNICODE console functions

For historical reasons peek_console was calling the functions
PeekConsoleInputA and ReadConsoleInputA.  However, these functions are
not working correctly under at least codepage 65001 (UTF-8) on systems
prior to Windows 10.

Use PeekConsoleInputW and ReadConsoleInputW instead, which work
correctly under all systems and all codepages.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2017-07-31 22:57:06 +02:00
parent 7b9bfb4136
commit e6c75c1de1

View File

@ -886,7 +886,7 @@ peek_console (select_record *me, bool)
for (;;)
if (fh->bg_check (SIGTTIN, true) <= bg_eof)
return me->read_ready = true;
else if (!PeekConsoleInput (h, &irec, 1, &events_read) || !events_read)
else if (!PeekConsoleInputW (h, &irec, 1, &events_read) || !events_read)
break;
else
{
@ -918,7 +918,7 @@ peek_console (select_record *me, bool)
}
/* Read and discard the event */
ReadConsoleInput (h, &irec, 1, &events_read);
ReadConsoleInputW (h, &irec, 1, &events_read);
}
return me->write_ready;