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

FreeBSD Manual Pages

  
 
  

home | help
KXML_PUSHNULL(3)	     Library Functions Manual		KXML_PUSHNULL(3)

NAME
     kxml_pushnull, kxml_pushnullattrs -- write a null element for kcgixml

LIBRARY
     libkcgixml

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 ar-
     ray 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.

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 re-
	  leased 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_pushnull(&req, 0); /* foo */
	   kxml_pushnullattrs(&req, 1, "key", "val", NULL); /* bar */
	   kxml_close(&req);

SEE ALSO
     kcgixml(3)

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

FreeBSD ports 15.quarterly	   $Mdocdate$			KXML_PUSHNULL(3)

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

home | help