summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2018-09-15 17:15:42 -0700
committerJohn Hawthorn <john@hawthorn.email>2018-09-23 11:23:53 -0700
commitb039ea1d9d5361bb3bbbdb10dd2f455028ff7fcb (patch)
treed818c2a2dd751ae2d02718342c1175a0b252a123 /src
parentc173310a093ba1277f419190ecaa36cdb97455a6 (diff)
Allow -1 timeout to mean infinite
Diffstat (limited to 'src')
-rw-r--r--src/tty.c10
-rw-r--r--src/tty.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/src/tty.c b/src/tty.c
index a81fe85..2481475 100644
--- a/src/tty.c
+++ b/src/tty.c
@@ -96,7 +96,7 @@ char tty_getchar(tty_t *tty) {
}
}
-int tty_input_ready(tty_t *tty, unsigned long timeout, int return_on_signal) {
+int tty_input_ready(tty_t *tty, long int timeout, int return_on_signal) {
fd_set readfs;
FD_ZERO(&readfs);
FD_SET(tty->fdin, &readfs);
@@ -108,7 +108,13 @@ int tty_input_ready(tty_t *tty, unsigned long timeout, int return_on_signal) {
if (!return_on_signal)
sigaddset(&mask, SIGWINCH);
- int err = pselect(tty->fdin + 1, &readfs, NULL, NULL, &ts, &mask);
+ int err = pselect(
+ tty->fdin + 1,
+ &readfs,
+ NULL,
+ NULL,
+ timeout < 0 ? NULL : &ts,
+ return_on_signal ? NULL : &mask);
if (err < 0) {
return 0;
diff --git a/src/tty.h b/src/tty.h
index 66f48b9..6c73a6e 100644
--- a/src/tty.h
+++ b/src/tty.h
@@ -17,7 +17,7 @@ void tty_close(tty_t *tty);
void tty_init(tty_t *tty, const char *tty_filename);
void tty_getwinsz(tty_t *tty);
char tty_getchar(tty_t *tty);
-int tty_input_ready(tty_t *tty, int timeout, int return_on_signal);
+int tty_input_ready(tty_t *tty, long int timeout, int return_on_signal);
void tty_setfg(tty_t *tty, int fg);
void tty_setinvert(tty_t *tty);