vrb_read_min(3) read a minimum of data into a VRB




#include <vrb.h>

size_t vrb_read_min(vrb_p vrb, int fd, size_t maxsize, size_t minsize);


vrb_read_min reads a minimum amount of data from a specified open file descriptor using read(2) into the specified virtual ring buffer until the specified maximum length has been read, the buffer is full, or end-of-file, or an error is returned (including EAGAIN or EWOULDBLOCK for a non-blocking descriptor). If there is insufficient space in the buffer to read the minimum amount, then read(2) will not be called.


vrb_p vrb
specifies which virtual ring buffer.

int fd
specifies the open file descriptor to read from

size_t maxsize
specifies the maximum length to read, or ~0 for unlimited.

size_t minsize
specifies the minimum length to read.


If successful, the actual length of data read into the buffer is returned. If the minimum amount of space was not available to read into, 0 is returned. If end-of-file occurs, the return value is ~0 and errno is 0. If an error occurs from read(2), the return value is ~0 and errno is set by read(2).


If an error is returned, then errno will have one of the following values:
An end-of-file has occurred. Note that this is a different way of returning an end-of-file condition than read(2) uses.
An invalid virtual ring buffer pointer was specified.