aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--norns_shell.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/norns_shell.c b/norns_shell.c
index fbd556c..fc7867d 100644
--- a/norns_shell.c
+++ b/norns_shell.c
@@ -89,6 +89,7 @@ int main (int argc, char **argv)
int received = 0;
struct timespec sent_sentinel = {0};
+ /* TODO wait for responses before exiting after EOF */
struct nn_pollfd poll_s = { .fd = s, .events = NN_POLLIN | NN_POLLOUT };
while (!killed) {
switch (nn_poll(&poll_s, 1, 1000)) {
@@ -153,13 +154,14 @@ int main (int argc, char **argv)
fprintf(stderr, "Can't read: %m\n");
goto error;
}
- /* treat EAGAIN as "read 0" */
- n = 0;
}
+ if (n == 0) goto finish;
+ /* treat EAGAIN as "read 0" */
+ if (n < 1) n = 0;
line_n += n;
if (line_n >= 1 && line[line_n - 1] == '\n') {
if ((nn_send(s, line, line_n, 0)) != line_n) {
- fprintf(stderr, "Couldn't send: %m\n");
+ fprintf(stderr, "Can't send: %m\n");
goto error;
}
line_n = 0;