X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=dart%2Fttyread.c;h=65f0203ac9d008bf34783d3b6eeb17b60bbe471f;hb=cbae74009cf269a5ca260e5e67de6ab35b5ae95d;hp=beb88561a1328456179d4971cfe93ecbe4b22044;hpb=b0f2556e0f18f6ded6a2b72bfda99b97023dfee6;p=svn42.git diff --git a/dart/ttyread.c b/dart/ttyread.c index beb8856..65f0203 100644 --- a/dart/ttyread.c +++ b/dart/ttyread.c @@ -97,7 +97,7 @@ int main(int argc, char* argv[]) return 1; } - int fd = open(argv[1], O_RDONLY); + int fd = open(argv[1], O_RDONLY | O_NONBLOCK | O_NOCTTY); if(fd < 0) { perror("open()"); return 2; @@ -105,8 +105,22 @@ int main(int argc, char* argv[]) if(setup_tty(fd)) return 3; + fd_set rfds, efds; char buf[100]; for(;;) { + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + FD_ZERO(&efds); + FD_SET(1, &efds); + + int s = select(fd+1, &rfds, NULL, &efds, NULL); + if(s < 0) { + perror("select()"); + return s; + } + if(FD_ISSET(1, &efds)) return 0; + if(!FD_ISSET(fd, &rfds)) continue; + ssize_t r = read(fd, buf, sizeof(buf)); if(r <= 0) { perror("read()");