Пример #1
0
/**
 * 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;
}
Пример #2
0
/**
 * 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;
}