NAME
kxml_write
—
put content data for kcgixml
LIBRARY
library “libkcgixml”
SYNOPSIS
#include
<sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>
#include <kcgixml.h>
enum kcgi_err
kxml_write
(const char *buf,
size_t sz, void *arg);
DESCRIPTION
Writes binary data buf of length
sz to a context arg, a
struct kxmlreq initialised with
kxml_open(3) and passed
as an opaque pointer. If buf is
NULL
or sz is zero, does
nothing and returns success. All of the content is XML escaped.
RETURN VALUES
Returns an enum kcgi_err indicating the error state.
KCGI_OK
- Success (not an error).
KCGI_ENOMEM
- Internal memory allocation failure.
KCGI_HUP
- The output connection has been terminated. For FastCGI connections, the current connection should be released with khttp_free(3) and parse loop reentered.
KCGI_FORM
- The connection is still expecting headers with khttp_head(3). Indicates that khttp_body(3) did not return with success or was not invoked. For FastCGI connections, the current connection should be released with khttp_free(3) and parse loop reentered.
KCGI_SYSTEM
- Internal system error writing to the output stream.
EXAMPLES
The following outputs a simple XML page. It assumes r is a struct kreq pointer. For brevity, it does not do any error checking.
const char *const elems[] = { "foo", "bar", "baz" }; khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_XML]); khttp_body(r); kxml_open(&req, r, elems, 3); kxml_push(&req, 0); /* foo */ kxml_puts(&req, "Hello, world"); kxml_close(&req);
SEE ALSO
AUTHORS
Written by Kristaps Dzonsons <kristaps@bsd.lv>.