+static int read_out (int amaster)
+{
+ char buf[LINE_MAX];
+ ssize_t buf_got;
+
+ buf_got = read (amaster, buf, sizeof buf);
+ if (buf_got == 0)
+ return 0;
+ /* Weird but at least after POLLHUP we get EIO instead of just EOF. */
+ if (buf_got == -1 && errno == EIO)
+ return 0;
+ if (buf_got == -1 && errno == EAGAIN)
+ return 0;
+ if (buf_got < 0)
+ {
+ perror ("read (amaster)");
+ exit (EXIT_FAILURE);
+ }
+ if (write (STDOUT_FILENO, buf, buf_got) != buf_got)
+ {
+ perror ("write(2)");
+ exit (EXIT_FAILURE);
+ }
+ return 1;
+}
+