From c71e1928a203855b10bc2524900fd00a48a8435e Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Sun, 10 Feb 2008 19:23:18 +0000 Subject: Have 'termkey_advisereadable' return a value indicating if it's likely useful to call it again --- termkey.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'termkey.c') diff --git a/termkey.c b/termkey.c index d2d557b..6f8b254 100644 --- a/termkey.c +++ b/termkey.c @@ -444,6 +444,7 @@ termkey_result termkey_getkey(termkey_t *tk, termkey_key *key) case TERMKEY_RES_NONE: case TERMKEY_RES_EOF: + case TERMKEY_RES_AGAIN: break; } @@ -569,17 +570,21 @@ void termkey_pushinput(termkey_t *tk, unsigned char *input, size_t inputlen) tk->buffcount += inputlen; } -void termkey_advisereadable(termkey_t *tk) +termkey_result termkey_advisereadable(termkey_t *tk) { unsigned char buffer[64]; // Smaller than the default size size_t len = read(tk->fd, buffer, sizeof buffer); if(len == -1 && errno == EAGAIN) - return; - else if(len < 1) + return TERMKEY_RES_NONE; + else if(len < 1) { tk->is_closed = 1; - else + return TERMKEY_RES_NONE; + } + else { termkey_pushinput(tk, buffer, len); + return TERMKEY_RES_AGAIN; + } } const char *termkey_describe_sym(termkey_t *tk, termkey_keysym code) -- cgit v1.2.3-54-g00ecf