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

FreeBSD Manual Pages

  
 
  

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

NAME
     kxml_pushnull, kxml_pushnullattrs -- write	a null element 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_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).

     The kxml_pushnullattrs() form accepts pairs of character string argu-
     ments, 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_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	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_pushnull&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help