GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
KXML_PUSHNULL(3) FreeBSD Library Functions Manual KXML_PUSHNULL(3)

kxml_pushnull, kxml_pushnullattrs
write a null element for kcgixml

library “libkcgixml”

#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, ...);

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).

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.

Returns an enum kcgi_err indicating the error state.
Success (not an error).
Internal memory allocation failure, including reaching the maximum number of possible JSON scopes.
The output connection has been terminated. For FastCGI connections, the current connection should be released with khttp_free(3) and parse loop reentered.
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.
Internal system error writing to the output stream.
The elem is not a valid element index.

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);

kcgixml(3)

Written by Kristaps Dzonsons <kristaps@bsd.lv>.
June 12, 2022 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.