NAME
khtml_closeelem
—
close element contexts of
kcgihtml
LIBRARY
library “libkcgihtml”
SYNOPSIS
#include
<sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>
#include <kcgihtml.h>
enum kcgi_err
khtml_closeelem
(struct khtmlreq
*req, size_t nclose);
DESCRIPTION
Closes nclose element scopes of
req, initialised with
khtml_open(3). Scopes
are opened with khtml_attr(3), khtml_attrx(3), or khtml_elem(3). Scopes for "void" elements (self-closing,
like KELEM_LINK
) or
KELEM_DOCTYPE
close immediately and should not be
explicitly closed.
If nclose is zero or greater than the number of open scopes, all scopes are closed.
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 HTML page. It assumes r is a struct kreq pointer. For brevity, it does not do any error checking.
khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_HTML]); khttp_body(r); khtml_open(&req, r, 0); khtml_elem(&req, KELEM_DOCTYPE); khtml_elem(&req, KELEM_HTML); khtml_elem(&req, KELEM_HEAD); khtml_elem(&req, KELEM_TITLE); khtml_puts(&req, "Hello, world."); khtml_closeelem(&req, 2); /* title, head */ khtml_elem(&req, KELEM_BODY); khtml_elem(&req, KELEM_P); khtml_puts(&req, "Hello, world"); khtml_closeelem(&req, 1); /* p */ khtml_elem(&req, KELEM_P); khtml_puts(&req, "Another hello, world"); khtml_close(&req);
SEE ALSO
STANDARDS
The referenced HTML5 standard is HTML5.2.
AUTHORS
Written by Kristaps Dzonsons <kristaps@bsd.lv>.