ssize_t buffer_getn(buffer* b,char* x,size_t len);
buffer_getn copies data to x, x, ..., x[len-1] from the buffer, calling buffer_feed as needed, and returns len.
If a read error occurs, buffer_getn returns -1 and sets errno appropriately. It may then have put any number between 0 and len in the buffer, you can't tell. That makes this function only useful if you don't care when an error occurs. Use buffer_get otherwise.
If the read operation signals end-of-file before len bytes were read, buffer_getn returns the number of bytes read from the buffer before end-of-file.
buffer_init(3), buffer_get(3), buffer(3)