static int _streamref_readdelim (struct _mu_stream *str, char *buf, size_t bufsize, int delim, size_t *pnread) { struct _mu_streamref *sp = (struct _mu_streamref *)str; int rc; size_t nread; mu_off_t off; rc = mu_stream_seek (sp->transport, sp->offset, MU_SEEK_SET, &off); if (rc == 0) { rc = mu_stream_readdelim (sp->transport, buf, bufsize, delim, &nread); if (rc == 0) { if (sp->end) { size_t size = sp->end - off + 1; if (nread > size) nread = size; } sp->offset += nread; *pnread = nread; } } else if (rc == ESPIPE) { *pnread = 0; mu_stream_clearerr (sp->transport); return 0; } return streamref_return (sp, rc); }
static int _iostream_readdelim (struct _mu_stream *str, char *buf, size_t bufsize, int delim, size_t *pnread) { struct _mu_iostream *sp = (struct _mu_iostream *)str; int rc = mu_stream_readdelim (sp->transport[_MU_STREAM_INPUT], buf, bufsize, delim, pnread); if (rc) sp->last_err_str = _MU_STREAM_INPUT; return rc; }