EVBUFFER_NEW(3) | Library Functions Manual | EVBUFFER_NEW(3)

# NAME

`evbuffer_new`, `evbuffer_free`, `evbuffer_setcb`, `evbuffer_expand`, `evbuffer_add`, `evbuffer_add_buffer`, `evbuffer_add_printf`, `evbuffer_add_vprintf`, `evbuffer_drain`, `evbuffer_remove`, `evbuffer_write`, `evbuffer_read`, `evbuffer_find`, `evbuffer_readline`, `evbuffer_readln`, `EVBUFFER_LENGTH`, `EVBUFFER_DATA` — libevent utility API for buffered input/output

# SYNOPSIS

Event Notification Library (libevent, -levent)
`#include <event.h>`

struct evbuffer *
`evbuffer_new`(void);

void
`evbuffer_free`(struct evbuffer *buf);

void
`evbuffer_setcb`(struct evbuffer *buf, void (*cb)(struct evbuffer *, size_t, size_t, void *), void *cbarg);

int
`evbuffer_expand`(struct evbuffer *buf, size_t datlen);

int
`evbuffer_add`(struct evbuffer *buf, const void *data, size_t size);

int
`evbuffer_add_buffer`(struct evbuffer *dst, struct evbuffer *src);

int
`evbuffer_add_printf`(struct evbuffer *buf, const char *fmt, ...);

int
`evbuffer_add_vprintf`(struct evbuffer *buf, const char *fmt, va_list ap);

void
`evbuffer_drain`(struct evbuffer *buf, size_t size);

int
`evbuffer_remove`(struct evbuffer *buf, void *data, size_t datlen);

int
`evbuffer_write`(struct evbuffer *buf, int fd);

int
`evbuffer_read`(struct evbuffer *buf, int fd, int size);

u_char *
`evbuffer_find`(struct evbuffer *buf, const u_char *data, size_t size);

char *
`evbuffer_readline`(struct evbuffer *buf);

char *
`evbuffer_readln`(struct evbuffer *buf, size_t *read_out, enum evbuffer_eol_style eol_style);

size_t
`EVBUFFER_LENGTH`(const struct evbuffer *buf);

u_char *
`EVBUFFER_DATA`(const struct evbuffer *buf);

# DESCRIPTION

The evbuffer API provides an implementation of buffering for use with libevent.

`evbuffer_new`() allocates and initialises a new evbuffer structure.

`evbuffer_free`() deallocates the evbuffer structure buf and any referenced storage.

`evbuffer_setcb`() sets the callback cb to be invoked with argument cbarg when the data in evbuffer buf is modified.

`evbuffer_expand`() expands the available space in buf to at least datlen bytes.

`evbuffer_add`() appends a copy of size bytes from buffer data to the end of the evbuffer buf.

`evbuffer_add_buffer`() moves the data off the src evbuffer and appends it to dst.

`evbuffer_add_printf`() appends a printf(3) style formatted string specified by fmt to the end of buf.

`evbuffer_add_vprintf`() appends a vprintf(3) style formatted string specified by fmt with a va_list ap to the end of buf.

`evbuffer_drain`() deletes size bytes from the beginning of the evbuffer buf.

`evbuffer_remove`() reads and drains up to datlen bytes from the beginning of the evbuffer buf into data.

`evbuffer_write`() writes and drains the contents of evbuffer buf to the file descriptor fd.

`evbuffer_read`() appends up to size bytes on to the end of the evbuffer buf by reading from the file descriptor fd.

`evbuffer_find`() finds the size length string data in the evbuffer buf.

`evbuffer_readline`() reads and drains a single line from the evbuffer buf. A line is delimited by "\n", "\r", "\r\n", or "\n\r". It is the responsibility of the caller to free the returned line with free(3).

`evbuffer_readln`() reads and drains a single line from the evbuffer buf. The length of the line will be stored in read_out on success. It is the responsibility of the caller to free the returned line with free(3). The line delimiter is specified as one of the following:

`EVBUFFER_EOL_ANY`
  Any sequence of newline or carriage return characters.
`EVBUFFER_EOL_CRLF`
  A new line optionally preceded by a carriage return.
`EVBUFFER_EOL_CRLF_STRICT`
  A carriage return followed by a new line character.
`EVBUFFER_EOL_LF`
  A new line character.

`EVBUFFER_LENGTH`() reports how many bytes are stored in the evbuffer buf.

# RETURN VALUES

`evbuffer_new`() returns a pointer to a newly allocated buffer on success, or `NULL` on failure and sets errno to indicate the failure.

`evbuffer_expand`(), `evbuffer_add`(), and `evbuffer_add_buffer`() return 0 on success, or -1 on failure and set errno to indicate the failure.

`evbuffer_add_printf`() and `evbuffer_add_vprintf`() return the number of bytes added on success, or -1 on failure.

`evbuffer_remove`() returns the number of bytes read.

`evbuffer_write`() returns the number of bytes written and drained on success, or -1 on failure and sets errno to indicate the failure.

`evbuffer_read`() returns the number of bytes appended to the evbuffer on success, 0 on an end of file condition, or -1 on failure and sets errno to indicate the failure.

`evbuffer_find`() returns a pointer to the start of the string within the evbuffer on success, or `NULL` on failure.

`evbuffer_readline`() and `evbuffer_readln`() return a pointer to the line on success, or `NULL` on failure.

`EVBUFFER_LENGTH`() returns the number of bytes available in the evbuffer.

`EVBUFFER_DATA`() returns a pointer to the evbuffer buf on success.

# SEE ALSO

errno(2), event(3), free(3), printf(3)

# AUTHORS

The `event` library was written by Niels Provos.

June 13, 2025 | Debian