X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=dart%2Fttyread.c;h=65a6248ed05e83c87f948d0fc180a887fdbb4f4d;hp=cd057f7c3940d1d19356bb6872f0965b3cca2e50;hb=bd1f47a70c33f1a9861feeb363adb9c65f679dfe;hpb=cb3568f6daeeb35b6bf7effec71715780946b117 diff --git a/dart/ttyread.c b/dart/ttyread.c index cd057f7..65a6248 100644 --- a/dart/ttyread.c +++ b/dart/ttyread.c @@ -31,7 +31,7 @@ int setup_tty(int fd) { struct termios tmio; - + int ret = tcgetattr(fd, &tmio); if(ret) { perror("tcgetattr()"); @@ -51,14 +51,21 @@ int setup_tty(int fd) } tmio.c_lflag &= ~ECHO; + tmio.c_lflag &= ~ISIG; tmio.c_lflag |= CLOCAL; + tmio.c_iflag &= ~ICRNL; + tmio.c_iflag &= ~IGNCR; + tmio.c_iflag |= IGNBRK | BRKINT; + + tmio.c_cflag |= CLOCAL; + ret = tcsetattr(fd, TCSANOW, &tmio); if(ret) { perror("tcsetattr()"); return ret; } - + ret = tcflush(fd, TCIFLUSH); if(ret) { perror("tcflush()"); @@ -101,13 +108,19 @@ int main(int argc, char* argv[]) char buf[100]; for(;;) { - int r = read(fd, buf, sizeof(buf)); - if(r <=0 ) return r; - - int i; + ssize_t r = read(fd, buf, sizeof(buf)); + if(r < 0 ) { + perror("read()"); + return r; + } + + ssize_t i; for(i=0; i < r;) { - int w = write(fd, &(buf[i]), r - i); - if(w < 0) return w; + ssize_t w = write(1, &(buf[i]), r - i); + if(w < 0) { + perror("write()"); + return w; + } i+=w; } }