summaryrefslogtreecommitdiff
path: root/static/openbsd/man3/evbuffer_new.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:54:44 -0400
commita9157ce950dfe2fc30795d43b9d79b9d1bffc48b (patch)
tree9df484304b560466d145e662c1c254ff0e9ae0ba /static/openbsd/man3/evbuffer_new.3
parent160aa82b2d39c46ad33723d7d909cb4972efbb03 (diff)
docs: Added All OpenBSD Manuals
Diffstat (limited to 'static/openbsd/man3/evbuffer_new.3')
-rw-r--r--static/openbsd/man3/evbuffer_new.3280
1 files changed, 280 insertions, 0 deletions
diff --git a/static/openbsd/man3/evbuffer_new.3 b/static/openbsd/man3/evbuffer_new.3
new file mode 100644
index 00000000..40f92e5f
--- /dev/null
+++ b/static/openbsd/man3/evbuffer_new.3
@@ -0,0 +1,280 @@
+.\" $OpenBSD: evbuffer_new.3,v 1.16 2025/06/13 18:34:00 schwarze Exp $
+.\"
+.\" Copyright (c) 2014 David Gwynne <dlg@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd $Mdocdate: June 13 2025 $
+.Dt EVBUFFER_NEW 3
+.Os
+.Sh NAME
+.Nm evbuffer_new ,
+.Nm evbuffer_free ,
+.Nm evbuffer_setcb ,
+.Nm evbuffer_expand ,
+.Nm evbuffer_add ,
+.Nm evbuffer_add_buffer ,
+.Nm evbuffer_add_printf ,
+.Nm evbuffer_add_vprintf ,
+.Nm evbuffer_drain ,
+.Nm evbuffer_remove ,
+.Nm evbuffer_write ,
+.Nm evbuffer_read ,
+.Nm evbuffer_find ,
+.Nm evbuffer_readline ,
+.Nm evbuffer_readln ,
+.Nm EVBUFFER_LENGTH ,
+.Nm EVBUFFER_DATA
+.Nd libevent utility API for buffered input/output
+.Sh SYNOPSIS
+.Lb libevent
+.In event.h
+.Ft struct evbuffer *
+.Fn "evbuffer_new" "void"
+.Ft void
+.Fn "evbuffer_free" "struct evbuffer *buf"
+.Ft void
+.Fo evbuffer_setcb
+.Fa "struct evbuffer *buf"
+.Fa "void (*cb)(struct evbuffer *, size_t, size_t, void *)"
+.Fa "void *cbarg"
+.Fc
+.Ft int
+.Fn "evbuffer_expand" "struct evbuffer *buf" "size_t datlen"
+.Ft int
+.Fn "evbuffer_add" "struct evbuffer *buf" "const void *data" "size_t size"
+.Ft int
+.Fn "evbuffer_add_buffer" "struct evbuffer *dst" "struct evbuffer *src"
+.Ft int
+.Fn "evbuffer_add_printf" "struct evbuffer *buf" "const char *fmt" "..."
+.Ft int
+.Fn "evbuffer_add_vprintf" "struct evbuffer *buf" "const char *fmt" "va_list ap"
+.Ft void
+.Fn "evbuffer_drain" "struct evbuffer *buf" "size_t size"
+.Ft int
+.Fn "evbuffer_remove" "struct evbuffer *buf" "void *data" "size_t datlen"
+.Ft int
+.Fn "evbuffer_write" "struct evbuffer *buf" "int fd"
+.Ft int
+.Fn "evbuffer_read" "struct evbuffer *buf" "int fd" "int size"
+.Ft u_char *
+.Fn "evbuffer_find" "struct evbuffer *buf" "const u_char *data" "size_t size"
+.Ft char *
+.Fn "evbuffer_readline" "struct evbuffer *buf"
+.Ft char *
+.Fo evbuffer_readln
+.Fa "struct evbuffer *buf"
+.Fa "size_t *read_out"
+.Fa "enum evbuffer_eol_style eol_style"
+.Fc
+.Ft size_t
+.Fn "EVBUFFER_LENGTH" "const struct evbuffer *buf"
+.Ft u_char *
+.Fn "EVBUFFER_DATA" "const struct evbuffer *buf"
+.Sh DESCRIPTION
+The evbuffer API provides an implementation of buffering for use with
+libevent.
+.Pp
+.Fn evbuffer_new
+allocates and initialises a new evbuffer structure.
+.Pp
+.Fn evbuffer_free
+deallocates the evbuffer structure
+.Fa buf
+and any referenced storage.
+.Pp
+.Fn evbuffer_setcb
+sets the callback
+.Fa cb
+to be invoked with argument
+.Fa cbarg
+when the data in evbuffer
+.Fa buf
+is modified.
+.Pp
+.Fn evbuffer_expand
+expands the available space in
+.Fa buf
+to at least
+.Fa datlen
+bytes.
+.Pp
+.Fn evbuffer_add
+appends a copy of
+.Fa size
+bytes from buffer
+.Fa data
+to the end of the evbuffer
+.Fa buf .
+.Pp
+.Fn evbuffer_add_buffer
+moves the data off the
+.Fa src
+evbuffer and appends it to
+.Fa dst .
+.Pp
+.Fn evbuffer_add_printf
+appends a
+.Xr printf 3
+style formatted string specified by
+.Fa fmt
+to the end of
+.Fa buf .
+.Pp
+.Fn evbuffer_add_vprintf
+appends a
+.Xr vprintf 3
+style formatted string specified by
+.Fa fmt
+with a va_list
+.Fa ap
+to the end of
+.Fa buf .
+.Pp
+.Fn evbuffer_drain
+deletes
+.Fa size
+bytes from the beginning of the evbuffer
+.Fa buf .
+.Pp
+.Fn evbuffer_remove
+reads and drains up to
+.Fa datlen
+bytes from the beginning of the evbuffer
+.Fa buf
+into
+.Fa data .
+.Pp
+.Fn evbuffer_write
+writes and drains the contents of evbuffer
+.Fa buf
+to the file descriptor
+.Fa fd .
+.Pp
+.Fn evbuffer_read
+appends up to
+.Fa size
+bytes on to the end of the evbuffer
+.Fa buf
+by reading from the file descriptor
+.Fa fd .
+.Pp
+.Fn evbuffer_find
+finds the
+.Fa size
+length string
+.Fa data
+in the evbuffer
+.Fa buf .
+.Pp
+.Fn evbuffer_readline
+reads and drains a single line from the evbuffer
+.Fa buf .
+A line is delimited by "\en", "\er", "\er\en", or "\en\er".
+It is the responsibility of the caller to free the returned line with
+.Xr free 3 .
+.Pp
+.Fn evbuffer_readln
+reads and drains a single line from the evbuffer
+.Fa buf .
+The length of the line will be stored in
+.Fa read_out
+on success.
+It is the responsibility of the caller to free the returned line with
+.Xr free 3 .
+The line delimiter is specified as one of the following:
+.Bl -tag -width xxx -offset indent
+.It Dv EVBUFFER_EOL_ANY
+Any sequence of newline or carriage return characters.
+.It Dv EVBUFFER_EOL_CRLF
+A new line optionally preceded by a carriage return.
+.It Dv EVBUFFER_EOL_CRLF_STRICT
+A carriage return followed by a new line character.
+.It Dv EVBUFFER_EOL_LF
+A new line character.
+.El
+.Pp
+.Fn EVBUFFER_LENGTH
+reports how many bytes are stored in the evbuffer
+.Fa buf .
+.Sh RETURN VALUES
+.Fn evbuffer_new
+returns a pointer to a newly allocated buffer on success,
+or
+.Dv NULL
+on failure and sets
+.Va errno
+to indicate the failure.
+.Pp
+.Fn evbuffer_expand ,
+.Fn evbuffer_add ,
+and
+.Fn evbuffer_add_buffer
+return 0 on success,
+or -1 on failure and set
+.Va errno
+to indicate the failure.
+.Pp
+.Fn evbuffer_add_printf
+and
+.Fn evbuffer_add_vprintf
+return the number of bytes added on success,
+or -1 on failure.
+.Pp
+.Fn evbuffer_remove
+returns the number of bytes read.
+.Pp
+.Fn evbuffer_write
+returns the number of bytes written and drained on success,
+or -1 on failure and sets
+.Va errno
+to indicate the failure.
+.Pp
+.Fn 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
+.Va errno
+to indicate the failure.
+.Pp
+.Fn evbuffer_find
+returns a pointer to the start of the string within the evbuffer on success,
+or
+.Dv NULL
+on failure.
+.Pp
+.Fn evbuffer_readline
+and
+.Fn evbuffer_readln
+return a pointer to the line on success,
+or
+.Dv NULL
+on failure.
+.Pp
+.Fn EVBUFFER_LENGTH
+returns the number of bytes available in the evbuffer.
+.Pp
+.Fn EVBUFFER_DATA
+returns a pointer to the evbuffer
+.Fa buf
+on success.
+.Sh SEE ALSO
+.Xr errno 2 ,
+.Xr event 3 ,
+.Xr free 3 ,
+.Xr printf 3
+.Sh AUTHORS
+The
+.Nm event
+library was written by
+.An Niels Provos .