From 78721ed379618b55d396a2b5ef6c123c4464ce1f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Mon, 27 Jul 2015 13:00:45 -0400 Subject: [PATCH] lib/file: revamp `poll_in` to use in `FileReader` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/standard/file.nit | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/standard/file.nit b/lib/standard/file.nit index 849b4e7..e5fc85b 100644 --- a/lib/standard/file.nit +++ b/lib/standard/file.nit @@ -176,6 +176,20 @@ class FileReader end_reached = true end end + + redef fun poll_in + do + var res = native_poll_in(fd) + if res == -1 then + last_error = new IOError(errno.to_s) + return false + else return res > 0 + end + + private fun native_poll_in(fd: Int): Int `{ + struct pollfd fds = {fd, POLLIN, 0}; + return poll(&fds, 1, 0); + `} end # `Stream` that can write to a File @@ -305,16 +319,6 @@ class Stdin path = "/dev/stdin" prepare_buffer(1) end - - redef fun poll_in `{ - struct pollfd fd = {0, POLLIN, 0}; - int res = poll(&fd, 1, 0); - if (res == -1) { - perror("Error poll stdin"); - exit(EXIT_FAILURE); - } - return res > 0; - `} end # Standard output stream. -- 1.7.9.5