static int reflect_message_fragment(struct client *cl) { ssize_t rc; char *msg; /* do read */ rc = read(cl->fd, read_buf, sizeof(read_buf)); if (rc == -1) { if (errno == EAGAIN || errno == EINTR) return 0; return -1; } else if (rc == 0) return -1; cl->rbuf = uim_helper_buffer_append(cl->rbuf, read_buf, rc); while ((msg = uim_helper_buffer_get_message(cl->rbuf))) { distribute_message(msg, cl); free(msg); } return 1; }
char * uim_helper_get_message(void) { return uim_helper_buffer_get_message(uim_read_buf); }