зеркало из https://github.com/github/ruby.git
readline.c: fix type
* ext/readline/readline.c (getc_body): fix variable type, and extract _get_osfhandle. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
2e97d5bc42
Коммит
1ec805727e
|
@ -164,23 +164,24 @@ getc_body(struct getc_struct *p)
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
{
|
{
|
||||||
INPUT_RECORD ir;
|
INPUT_RECORD ir;
|
||||||
int n;
|
DWORD n;
|
||||||
static int prior_key = '0';
|
static int prior_key = '0';
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
HANDLE h;
|
||||||
if (prior_key > 0xff) {
|
if (prior_key > 0xff) {
|
||||||
prior_key = rl_getc(p->input);
|
prior_key = rl_getc(p->input);
|
||||||
return prior_key;
|
return prior_key;
|
||||||
}
|
}
|
||||||
if (PeekConsoleInput((HANDLE)_get_osfhandle(p->fd), &ir, 1, &n)) {
|
h = (HANDLE)_get_osfhandle(p->fd);
|
||||||
|
if (PeekConsoleInput(h, &ir, 1, &n)) {
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
if (ir.EventType == KEY_EVENT && ir.Event.KeyEvent.bKeyDown) {
|
if (ir.EventType == KEY_EVENT && ir.Event.KeyEvent.bKeyDown) {
|
||||||
prior_key = rl_getc(p->input);
|
prior_key = rl_getc(p->input);
|
||||||
return prior_key;
|
return prior_key;
|
||||||
} else {
|
} else {
|
||||||
ReadConsoleInput((HANDLE)_get_osfhandle(p->fd), &ir, 1, &n);
|
ReadConsoleInput(h, &ir, 1, &n);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
HANDLE h = (HANDLE)_get_osfhandle(p->fd);
|
|
||||||
rb_w32_wait_events(&h, 1, INFINITE);
|
rb_w32_wait_events(&h, 1, INFINITE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче