From 351b15586232f7931ae8bbb2bc1ebc2de68052bc Mon Sep 17 00:00:00 2001
From: jp7g21 <jp7g21@soton.ac.uk>
Date: Sun, 14 Nov 2021 02:01:53 +0000
Subject: [PATCH] Read mode

---
 duck/duck.c       | 5 ++---
 libduck/libduck.c | 9 +++++++++
 libduck/libduck.h | 1 +
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/duck/duck.c b/duck/duck.c
index 8c8f856..c72638c 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 8fdee78..cb4e3ec 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 bea82bd..68e17cb 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 */
-- 
GitLab