From ff83aeec1c2e50d8dfdddd5e7d5ab6b8166ec603 Mon Sep 17 00:00:00 2001 From: Brian Swetland Date: Tue, 27 Jun 2017 14:25:14 -0700 Subject: [PATCH] [linenoise] allow get columns query to timeout Change-Id: Ifa92588c564205818eef7b24b356d440254eca64 --- third_party/ulib/linenoise/linenoise.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/third_party/ulib/linenoise/linenoise.c b/third_party/ulib/linenoise/linenoise.c index 9fae61dd6..2f10c25cf 100644 --- a/third_party/ulib/linenoise/linenoise.c +++ b/third_party/ulib/linenoise/linenoise.c @@ -115,7 +115,7 @@ #include #include #include -#include +#include #ifdef __Fuchsia__ #include @@ -295,6 +295,12 @@ static int getCursorPosition(int ifd, int ofd) { /* Read the response: ESC [ rows ; cols R */ while (i < sizeof(buf)-1) { + struct pollfd p = { + .fd = ifd, + .events = POLLIN, + .revents = 0, + }; + if (poll(&p, 1, 250) != 1) return -1; if (read(ifd,buf+i,1) != 1) break; if (buf[i] == 'R') break; i++; @@ -312,7 +318,7 @@ static int getCursorPosition(int ifd, int ofd) { static int getColumns(int ifd, int ofd) { #ifdef __Fuchsia__ ioctl_console_dimensions_t dims; - ssize_t r = mxio_ioctl(0, IOCTL_CONSOLE_GET_DIMENSIONS, NULL, 0, &dims, + ssize_t r = mxio_ioctl(0, IOCTL_CONSOLE_GET_DIMENSIONS,NULL, 0, &dims, sizeof(dims)); if (r != sizeof(dims)) { #else