Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KXML_PUSH(3)	       FreeBSD Library Functions Manual		  KXML_PUSH(3)

NAME
     kxml_push,	kxml_pushattrs -- open an element scope	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_push(struct kxmlreq *req, size_t elem);

     enum kcgi_err
     kxml_pushattrs(struct kxmlreq *req, size_t	elem, ...);

DESCRIPTION
     Open a new	scope of element index 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).  Scopes are closed with kxml_popall(3),
     kxml_pop(3).  or kxml_close(3).

     The kxml_pushattrs() 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.

RETURN VALUES
     Returns an	enum kcgi_err indicating the error state.

     KCGI_OK
	  Success (not an error).

     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 with khttp_free(3) and
	  parse	loop reentered.

     KCGI_FORM
	  The connection is still expecting headers with khttp_head(3).	 Indi-
	  cates	that khttp_body(3) did not return with success or was not in-
	  voked.  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.

     KCGI_WRITER
	  The elem is 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_push(&req, 0); /* foo */
	   kxml_puts(&req, "Hello, world");
	   kxml_pop(&req);
	   kxml_pushattrs(&req,	1, "baz", "xyzzy", NULL); /* bar */
	   kxml_puts(&req, "Hello, world");
	   kxml_pop(&req);
	   kxml_close(&req);

SEE ALSO
     kcgixml(3)

AUTHORS
     Written by	Kristaps Dzonsons <kristaps@bsd.lv>.

FreeBSD	13.0			March 27, 2020			  FreeBSD 13.0

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=kxml_push&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help