|KCGI_BUF_WRITE(3)||Library Functions Manual||KCGI_BUF_WRITE(3)|
put binary data into a kcgi buffer
kcgi_buf_write(const char *buf,
size_t sz, void *arg);
Appends binary data buf of size
sz to arg, which is cast to a
struct kcgi_buf *. Buffers must be initialised to zero
with memset(3) prior to first use. The buffer will always
be NUL-terminated. Does nothing if buf is
NULL or sz is zero.
The struct kcgi_buf structure has the following fields:
- char *buf
- Buffer contents. This is always NUL-terminated, even if the data is binary. This buffer must be passed to free(3) after use.
- size_t maxsz
- Allocated buffer size.
- size_t sz
- Buffer current length not including the NUL terminator.
- size_t growsz
- Amount of "slop" space in the buffer if it's reallocated. If set to zero, defaults to 1 KB.
These functions return an enum kcgi_err
indicating the error state:
KCGI_OK for no error,
KCGI_ENOMEM for an internal memory allocation
The following creates a simple NUL-terminated buffer. It does not perform any error checking.
struct kcgi_buf buf; memset(&buf, 0, sizeof(struct kcgi_buf)); kcgi_buf_write("xyzzy", 5, &buf); puts(buf.buf); /* Emits "xyzzy" */ free(buf.buf);
Written by Kristaps Dzonsons <email@example.com>.
|March 22, 2020||OpenBSD 6.7|