aboutsummaryrefslogtreecommitdiff
path: root/lib/interestingtimes.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/interestingtimes.c')
-rw-r--r--lib/interestingtimes.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/interestingtimes.c b/lib/interestingtimes.c
index 93e2ec52..c4ea2c27 100644
--- a/lib/interestingtimes.c
+++ b/lib/interestingtimes.c
@@ -67,10 +67,14 @@ int scan_key_getsize(char *scratch, int miliwait, unsigned *xx, unsigned *yy)
{
int key;
- while (512&(key = scan_key(scratch, miliwait))) {
- if (key<0) break;
- if (xx) *xx = (key>>10)&1023;
- if (yy) *yy = (key>>20)&1023;
+ if (512&(key = scan_key(scratch, miliwait))) {
+ if (key>0) {
+ if (xx) *xx = (key>>10)&1023;
+ if (yy) *yy = (key>>20)&1023;
+ toys.signal = SIGWINCH;
+
+ return -3;
+ }
}
return key;
@@ -195,7 +199,8 @@ int scan_key(char *scratch, int miliwait)
// Read 1 byte so we don't overshoot sequence match. (We can deviate
// and fail to match, but match consumes entire buffer.)
- if (1 != read(0, scratch+1+*scratch, 1)) return -1;
+ if (toys.signal || 1 != read(0, scratch+1+*scratch, 1))
+ return toys.signal ? -3 : -1;
++*scratch;
}