+ if (stream) {
+ if (pipe(fds) == -1) {
+ fprintf(stderr, "logd: failed to create pipe: %s\n", strerror(errno));
+ return -1;
+ }
+
+ ubus_request_set_fd(ctx, req, fds[0]);
+ cl = calloc(1, sizeof(*cl));
+ cl->s.stream.notify_state = client_notify_state;
+ cl->fd = fds[1];
+ ustream_fd_init(&cl->s, cl->fd);
+ list_add(&cl->list, &clients);
+ while ((!tb[READ_LINES] || count) && l) {
+ blob_buf_init(&b, 0);
+ log_fill_msg(&b, l);
+ l = log_list(count, l);
+ ret = ustream_write(&cl->s.stream, (void *) b.head, blob_len(b.head) + sizeof(struct blob_attr), false);
+ if (ret < 0)
+ break;
+ }
+ } else {