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

FreeBSD Manual Pages

  
 
  

home | help
KXML_PUSH(3)		    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  connec-
	    tions,   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).  In-
	    dicates 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.

       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	Ports 14.quarterly	  $Mdocdate$			  KXML_PUSH(3)

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

home | help