/** * Reads decompressed from the decompression program * @return -1 for EAGAIN, 0 for EOF, byte count otherwise. */ static ssize_t Read (stream_t *stream, void *buf, size_t buflen) { stream_sys_t *sys = stream->p_sys; ssize_t ret = 0; if (buf == NULL) /* caller skips data, get big enough peek buffer */ { buf = malloc(buflen); if (unlikely(buf == NULL)) return -1; ret = Read(stream, buf, buflen); free(buf); return ret; } assert ((buf != NULL) || (buflen == 0)); ssize_t val = vlc_read_i11e (sys->read_fd, buf, buflen); if (val > 0) { sys->offset += val; ret += val; } return ret; }
/** * Reads decompressed from the decompression program * @return -1 for EAGAIN, 0 for EOF, byte count otherwise. */ static ssize_t Read (stream_t *stream, void *buf, size_t buflen) { stream_sys_t *sys = stream->p_sys; ssize_t val = vlc_read_i11e (sys->read_fd, buf, buflen); return (val >= 0) ? val : 0; }