diff --git a/duck/duck.c b/duck/duck.c index 8c8f8565c03ee7e3a7a77467ccd5010e181bc5f4..c72638c9cdbf33a169c6272feb95a4f75f24f2a9 100644 --- a/duck/duck.c +++ b/duck/duck.c @@ -94,9 +94,8 @@ int main(int argc, char **argv) } } if (read_mode) { - while (1) { - char c; - if (read(duckfd, &c, 1) != 1) err( + read_duck_to_stdout(); + } close_duck(); return 0; } diff --git a/libduck/libduck.c b/libduck/libduck.c index 8fdee78b8e87e585c6b62b46787abe7a3393b6de..cb4e3ece9d11d8cc2db3e1d63050024e54c7ff64 100644 --- a/libduck/libduck.c +++ b/libduck/libduck.c @@ -88,6 +88,15 @@ int duck_set_velocity(int motor, int deg_per_sec, int ms) return duck_printf("v %d %d %d\n", motor, deg_per_sec, ms); } +void read_duck_to_stdout(void) +{ + while (1) { + char c; + if (read(duckfd, &c, 1) != 1) err(EXIT_FAILURE, "Read failed\n"); + putchar(c); + } +} + void close_duck(void) { if (duck_debug_mode) { diff --git a/libduck/libduck.h b/libduck/libduck.h index bea82bd7cba1534fd1c65d0736aaa2bc590d199e..68e17cbc11998d5a582fb4c3b132529114e33a5a 100644 --- a/libduck/libduck.h +++ b/libduck/libduck.h @@ -16,6 +16,7 @@ void configure_duck(void); int duck_set_position(int motor, int angle); int duck_delay(int ms); int duck_set_velocity(int motor, int deg_per_sec, int ms); +void read_duck_to_stdout(void); void close_duck(void); #endif /* _LIBDUCK_H */