Allow passing fd = -1 to constructor to make an instance not associated with an fd; must use push_bytes to provide it input

This commit is contained in:
Paul LeoNerd Evans
2012-01-18 14:03:39 +00:00
parent 82ad14175c
commit 6d6afe788c
15 changed files with 28 additions and 16 deletions

View File

@@ -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;