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
#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.