mirror of
https://github.com/bdnugget/kcgi.git
synced 2026-11-07 05:47:27 +00:00
137 lines
3.2 KiB
Plaintext
137 lines
3.2 KiB
Plaintext
.\" $Id$
|
|
.\"
|
|
.\" Copyright (c) 2020 Kristaps Dzonsons <kristaps@bsd.lv>
|
|
.\"
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
.\"
|
|
.Dd $Mdocdate$
|
|
.Dt KJSON_PUTSTRING 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm kjson_putstring ,
|
|
.Nm kjson_putstringp ,
|
|
.Nm kjson_string_puts
|
|
.Nd put string content for kcgijson
|
|
.Sh LIBRARY
|
|
.Lb libkcgijson
|
|
.Sh SYNOPSIS
|
|
.In sys/types.h
|
|
.In stdarg.h
|
|
.In stdint.h
|
|
.In kcgi.h
|
|
.In kcgijson.h
|
|
.Ft enum kcgi_err
|
|
.Fo kjson_putstring
|
|
.Fa "struct kjsonreq *req"
|
|
.Fa "const char *v"
|
|
.Fc
|
|
.Ft enum kcgi_err
|
|
.Fo kjson_putstringp
|
|
.Fa "struct kjsonreq *req"
|
|
.Fa "const char *name"
|
|
.Fa "const char *v"
|
|
.Fc
|
|
.Ft enum kcgi_err
|
|
.Fo kjson_string_puts
|
|
.Fa "struct kjsonreq *req"
|
|
.Fa "const char *v"
|
|
.Fc
|
|
.Sh DESCRIPTION
|
|
Write a string
|
|
.Fa v ,
|
|
to a context
|
|
.Fa req
|
|
initialised with
|
|
.Xr khtml_open 3 .
|
|
If
|
|
.Fa v
|
|
is
|
|
.Dv NULL ,
|
|
do nothing and return
|
|
.Dv KCGI_OK .
|
|
.Pp
|
|
The
|
|
.Fn kjson_putstring
|
|
form is for array scopes,
|
|
.Fn kjson_putstringp
|
|
for objects, and
|
|
.Fn kjson_stri_puts
|
|
for open strings.
|
|
.Pp
|
|
All values are JSON escaped so that content cannot prematurely end its
|
|
context.
|
|
.Pp
|
|
Passing a
|
|
.Dv NULL
|
|
value to
|
|
.Fa name
|
|
for
|
|
.Fn kjson_putstringp ,
|
|
is equivalent to calling
|
|
.Fn kjson_putstring .
|
|
.Sh RETURN VALUES
|
|
Returns an
|
|
.Ft enum kcgi_err
|
|
indicating the error state.
|
|
.Bl -tag -width -Ds
|
|
.It Dv KCGI_OK
|
|
Success (not an error).
|
|
.It Dv KCGI_ENOMEM
|
|
Internal memory allocation failure.
|
|
.It Dv KCGI_HUP
|
|
The output connection has been terminated.
|
|
For FastCGI connections, the current connection should be released with
|
|
.Xr khttp_free 3
|
|
and parse loop reentered.
|
|
.It Dv KCGI_FORM
|
|
The connection is still expecting headers with
|
|
.Xr khttp_head 3 .
|
|
Indicates that
|
|
.Xr khttp_body 3
|
|
did not return with success or was not invoked.
|
|
For FastCGI connections, the current connection should be released with
|
|
.Xr khttp_free 3
|
|
and parse loop reentered.
|
|
.It Dv KCGI_SYSTEM
|
|
Internal system error writing to the output stream.
|
|
.It Dv KCGI_WRITER
|
|
The incorrect form was used for the current scope, for example, an
|
|
array-type write within an object.
|
|
.El
|
|
.Sh EXAMPLES
|
|
The following outputs a simple JSON document.
|
|
It assumes
|
|
.Va r
|
|
is a
|
|
.Vt struct kreq
|
|
pointer.
|
|
For brevity, it does not do any error checking.
|
|
.Bd -literal -offset indent
|
|
khttp_head(r, kresps[KRESP_STATUS],
|
|
"%s", khttps[KHTTP_200]);
|
|
khttp_head(r, kresps[KRESP_CONTENT_TYPE],
|
|
"%s", kmimetypes[KMIME_APP_JSON]);
|
|
khttp_body(r);
|
|
kjson_open(&req, r);
|
|
kjson_obj_open(&req);
|
|
kjson_putstringp(&req, "bar", "shbar");
|
|
kjson_arrayp_open(&req, "baz");
|
|
kjson_putstring(&req, "xyzzy"));
|
|
kjson_close(&req);
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr kcgijson 3
|
|
.Sh AUTHORS
|
|
Written by
|
|
.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv .
|