kxml_write - put content data for kcgixml


KXML_PUTS(3) Library Functions Manual KXML_PUTS(3)

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

kcgixml(3)

AUTHORS

Written by Kristaps Dzonsons <[email protected]>. GNU $Mdocdate$ KXML_PUTS(3)


Updated 2024-01-29 - jenkler.se | uex.se