KXML_PUSHNULL(3)
β¨ KXML_PUSHNULL(3) β¨
okay bestie, this is the Library Functions Manual page for kxml_pushnull and kxml_pushnullattrs, and it's literally about writing null (self-closing) elements for kcgixml. iykyk π
π NAME π
kxml_pushnull,kxml_pushnullattrsβ write a null element forkcgixml
π LIBRARY π
library libkcgixml β that's where these functions live, no cap. π«Ά
π οΈ SYNOPSIS π οΈ
#include <sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>
#include <kcgixml.h>
enum kcgi_err
kxml_pushnull(struct kxmlreq *req, size_t elem);
enum kcgi_err
kxml_pushnullattrs(struct kxmlreq *req, size_t elem, ...);
π« DESCRIPTION π«
Write a null (self-closing) element elem on the current element stack of req, initialised with kxml_open(3). The element must be in the element array passed to kxml_open(3). lowkey important, bestie. β¨
The kxml_pushnullattrs() form accepts pairs of character string arguments, the first being an attribute name, the second its value. This list must be terminated by a NULL pointer. Attribute names are left as-is: the caller must make sure that keys are valid XML. Attribute values are XML escaped to prevent content from breaking out of the attribute string. so yes, the values get escaped β the names do not. π
π― RETURN VALUES π―
Returns an enum kcgi_err indicating the error state. vibe check:
KCGI_OKβ success (not an error). slay. πKCGI_ENOMEMβ internal memory allocation failure, including reaching the maximum number of possible JSON scopes.KCGI_HUPβ the output connection has been terminated. For FastCGI connections, the current connection should be released withkhttp_free(3)and parse loop reentered.KCGI_FORMβ the connection is still expecting headers withkhttp_head(3). Indicates thatkhttp_body(3)did not return with success or was not invoked. For FastCGI connections, the current connection should be released withkhttp_free(3)and parse loop reentered.KCGI_SYSTEMβ internal system error writing to the output stream.KCGI_WRITERβ theelemis not a valid element index.
π 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_pushnull(&req, 0); /* foo */
kxml_pushnullattrs(&req, 1, "key", "val", NULL); /* bar */
kxml_close(&req);
π SEE ALSO π
π AUTHORS π
Written by Kristaps Dzonsons <kristaps@bsd.lv>. iconic. π
mwah π that's the whole page, bestie! source/version: Debian, date: $Mdocdate$, page: KXML_PUSHNULL(3). go write some iconic null elements β¨π¦
π¦ where this page comes from
- alpine 3.24: kcgi-doc 1.0.1-r0 Β· ISC
- Copyright (c) 2020 Kristaps Dzonsons <kristaps@bsd.lv>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms