From 6d6afe788c3ec1f320e12449eee230fb366228c5 Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Wed, 18 Jan 2012 14:03:39 +0000 Subject: Allow passing fd = -1 to constructor to make an instance not associated with an fd; must use push_bytes to provide it input --- termkey.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'termkey.c') diff --git a/termkey.c b/termkey.c index 249fc22..a66d951 100644 --- a/termkey.c +++ b/termkey.c @@ -284,7 +284,7 @@ static TermKey *termkey_new_full(int fd, int flags, size_t buffsize, int waittim goto abort_free_keynames; } - if(!(flags & TERMKEY_FLAG_NOTERMIOS)) { + if(fd != -1 && !(flags & TERMKEY_FLAG_NOTERMIOS)) { struct termios termios; if(tcgetattr(fd, &termios) == 0) { tk->restore_termios = termios; @@ -887,6 +887,11 @@ TermKeyResult termkey_getkey_force(TermKey *tk, TermKeyKey *key) TermKeyResult termkey_waitkey(TermKey *tk, TermKeyKey *key) { + if(tk->fd == -1) { + errno = EBADF; + return TERMKEY_RES_ERROR; + } + while(1) { TermKeyResult ret = termkey_getkey(tk, key); @@ -944,6 +949,11 @@ TermKeyResult termkey_advisereadable(TermKey *tk) { ssize_t len; + if(tk->fd == -1) { + errno = EBADF; + return TERMKEY_RES_ERROR; + } + if(tk->buffstart) { memmove(tk->buffer, tk->buffer + tk->buffstart, tk->buffcount); tk->buffstart = 0; -- cgit v1.2.3