Index: head/contrib/libxo/libxo/xo_create.3 =================================================================== --- head/contrib/libxo/libxo/xo_create.3 (revision 276252) +++ head/contrib/libxo/libxo/xo_create.3 (revision 276253) @@ -1,85 +1,85 @@ .\" # .\" # Copyright (c) 2014, Juniper Networks, Inc. .\" # All rights reserved. .\" # This SOFTWARE is licensed under the LICENSE provided in the .\" # ../Copyright file. By downloading, installing, copying, or .\" # using the SOFTWARE, you agree to be bound by the terms of that .\" # LICENSE. .\" # Phil Shafer, July 2014 .\" .Dd July, 2014 .Dt LIBXO 3 .Os .Sh NAME .Nm xo_emit .Nd emit formatted output based on format string and arguments .Sh LIBRARY .Lb libxo .Sh SYNOPSIS .In libxo/xo.h .Ft xo_handle_t * .Fn xo_create "unsigned style" "unsigned flags" .Ft xo_handle_t * .Fn xo_create_to_file "FILE *fp" "unsigned style" "unsigned flags" .Ft void .Fn xo_destroy "xo_handle_t *handle" .Sh DESCRIPTION A .Em libxo handle can be allocated using the .Fn xo_create function. .Bd -literal -offset indent Example: xo_handle_t *xop = xo_create(XO_STYLE_JSON, XOF_WARN); .... xo_emit_h(xop, "testing\n"); .Ed .Pp By default, .Em libxo writes output to standard output. A convenience function is provided for situations when output should be written to different file. .Pp Use the .Em XOF_CLOSE_FP flag to trigger a call to .Em fclose 3 for the FILE pointer when the handle is destroyed. .Pp The .Fn xo_destroy function releases a handle and any resources it is using. Calling .Fn xo_destroy with a .Em NULL handle will release any resources associated with the default handle. .Sh ADDITIONAL DOCUMENTATION .Pp Complete documentation can be found on github: .Bd -literal -offset indent http://juniper.github.io/libxo/libxo-manual.html .Ed .Pp libxo lives on github as: .Bd -literal -offset indent https://github.com/Juniper/libxo .Ed .Pp The latest release of libxo is available at: .Bd -literal -offset indent https://github.com/Juniper/libxo/releases .Ed .Sh SEE ALSO .Xr xo_emit 3 and -.Xf xo_set_options 3 . +.Xr xo_set_options 3 . .Sh HISTORY The .Fa libxo library was added in FreeBSD 11.0. .Sh AUTHOR Phil Shafer Index: head/contrib/libxo/libxo/xo_emit.3 =================================================================== --- head/contrib/libxo/libxo/xo_emit.3 (revision 276252) +++ head/contrib/libxo/libxo/xo_emit.3 (revision 276253) @@ -1,71 +1,71 @@ .\" # .\" # Copyright (c) 2014, Juniper Networks, Inc. .\" # All rights reserved. .\" # This SOFTWARE is licensed under the LICENSE provided in the .\" # ../Copyright file. By downloading, installing, copying, or .\" # using the SOFTWARE, you agree to be bound by the terms of that .\" # LICENSE. .\" # Phil Shafer, July 2014 .\" .Dd July, 2014 .Dt LIBXO 3 .Os .Sh NAME .Nm xo_emit .Nd emit formatted output based on format string and arguments .Sh LIBRARY .Lb libxo .Sh SYNOPSIS .In libxo/xo.h .Ft int .Fn xo_emit "const char *fmt" "..." .Ft int .Fn xo_emit_h "xo_handle_t *xop" "const char *fmt" "..." .Ft int .Fn xo_emit_hv "xo_handle_t *xop" "const char *fmt" "va_list vap" .Sh DESCRIPTION The .Fn xo_emit function emits formatted output using the description in a format string along with a set of zero or more arguments, in a style similar to .Xr printf 3 but using a more complex format description string, as described in .Xr xo_format 5 . .Pp .Fn xo_emit uses the default output handle, as described in -.Xf libxo 3 , +.Xr libxo 3 , where .Fn xo_emit_h uses an explicit handle. .Fn xo_emit_hv accepts a .Fa va_list for additional flexibility. .Sh ADDITIONAL DOCUMENTATION .Pp Complete documentation can be found on github: .Bd -literal -offset indent http://juniper.github.io/libxo/libxo-manual.html .Ed .Pp libxo lives on github as: .Bd -literal -offset indent https://github.com/Juniper/libxo .Ed .Pp The latest release of libxo is available at: .Bd -literal -offset indent https://github.com/Juniper/libxo/releases .Ed .Sh SEE ALSO .Xr xo_open_container 3 , .Xr xo_open_list 3 , and .Xr xo_format 5 . .Sh HISTORY The .Fa libxo library was added in FreeBSD 11.0. .Sh AUTHOR Phil Shafer Index: head/contrib/libxo/libxo/xo_open_container.3 =================================================================== --- head/contrib/libxo/libxo/xo_open_container.3 (revision 276252) +++ head/contrib/libxo/libxo/xo_open_container.3 (revision 276253) @@ -1,216 +1,216 @@ .\" # .\" # Copyright (c) 2014, Juniper Networks, Inc. .\" # All rights reserved. .\" # This SOFTWARE is licensed under the LICENSE provided in the .\" # ../Copyright file. By downloading, installing, copying, or .\" # using the SOFTWARE, you agree to be bound by the terms of that .\" # LICENSE. .\" # Phil Shafer, July 2014 .\" .Dd July, 2014 .Dt LIBXO 3 .Os .Sh NAME .Nm xo_emit .Nd emit formatted output based on format string and arguments .Sh LIBRARY .Lb libxo .Sh SYNOPSIS .In libxo/xo.h .Sh NAME .Nm xo_open_container .Nm xo_open_container_h .Nm xo_open_container_hd .Nm xo_open_container_d .Nm xo_close_container .Nm xo_close_container_h .Nm xo_close_container_hd .Nm xo_close_container_d .Nd open and close containers .Sh LIBRARY .Lb libxo .Sh SYNOPSIS .Ft int .Fn xo_open_container "const char *name" .Ft int .Fn xo_open_container_h "xo_handle_t *handle" "const char *name" .Ft int .Fn xo_open_container_hd "xo_handle_t *handle" "const char *name" .Ft int .Fn xo_open_container_d "const char *name" .Ft int .Fn xo_close_container "const char *name" .Ft int .Fn xo_close_container_h "xo_handle_t *handle" "const char *name" .Ft int .Fn xo_close_container_hd "xo_handle_t *handle" .Ft int .Fn xo_close_container_d "void" .Sh DESCRIPTION .Fa libxo represents to types of hierarchy: .Dq containers and .Dq lists . A container appears once under a given parent where a list contains instances that can appear multiple times. A container is used to hold related fields and to give the data organization and scope. The container has no value, but serves to contain other nodes. .Pp To open a container, call .Fn xo_open_container or .Fn xo_open_container_h . The former uses the default handle and the latter accepts a specific handle. .Pp To close a level, use the .Fn xo_close_container or .Fn xo_close_container_h functions. .Pp Each open call must have a matching close call. If the .Fa XOF_WARN flag is set and the name given does not match the name of the currently open container, a warning will be generated. .Bd -literal -offset indent -compact Example: xo_open_container("top"); xo_open_container("system"); xo_emit("{:host-name/%s%s%s", hostname, domainname ? "." : "", domainname ?: ""); xo_close_container("system"); xo_close_container("top"); Sample Output: Text: my-host.example.org XML: my-host.example.org JSON: "top" : { "system" : { "host-name": "my-host.example.org" } } HTML:
my-host.example.org
.Ed -.SH EMITTING HIERARCHY +.Sh EMITTING HIERARCHY To create a container, use the .Fn xo_open_container and .Fn xo_close_container set of functions. The .Fa handle parameter contains a handle such as returned by .Xr xo_create 3 or a .Em NULL to use the default handle. The .Fa name parameter gives the name of the container, encoded in .Em UTF-8 . Since .Em ASCII is a proper subset of .Em UTF-8 , traditional C strings can be used directly. .Pp The close functions with the .Dq _d suffix are used in -.Dq Do The Right Thing +.Dq The Right Thing mode, where the name of the open containers, lists, and instances are maintained internally by .Em libxo to allow the caller to avoid keeping track of the open container name. .Pp Use the .Em XOF_WARN flag to generate a warning if the name given on the close does not match the current open container. .Pp For TEXT and HTML output, containers are not rendered into output text, though for HTML they are used when the .Em XOF_XPATH flag is set. .Pp .Bd -literal -offset indent -compact EXAMPLE: xo_open_container("system"); xo_emit("The host name is {:host-name}\n", hn); xo_close_container("system"); XML: foo .Ed .Sh DTRT MODE Some user may find tracking the names of open containers, lists, and instances inconvenient. .Em libxo offers -.Dq Do The Right Thing +.Dq The Right Thing mode, where .Em libxo will track the names of open containers, lists, and instances so the close function can be called without a name. To enable .Em DTRT mode, turn on the .Em XOF_DTRT flag prior to making any other .Em libxo output. .Bd -literal -offset indent -compact xo_set_flags(NULL, XOF_DTRT); .Ed Each open and close function has a version with the suffix .Dq _d , which will close the open container, list, or instance: .Bd -literal -offset indent -compact xo_open_container("top"); ... xo_close_container_d(); .Ed Note that the .Em XOF_WARN flag will also cause libxo to track open containers, lists, and instances. A warning is generated with the name given to the close function and the name recorded do not match. .Sh ADDITIONAL DOCUMENTATION .Pp Complete documentation can be found on github: .Bd -literal -offset indent http://juniper.github.io/libxo/libxo-manual.html .Ed .Pp libxo lives on github as: .Bd -literal -offset indent https://github.com/Juniper/libxo .Ed .Pp The latest release of libxo is available at: .Bd -literal -offset indent https://github.com/Juniper/libxo/releases .Ed .Sh SEE ALSO .Xr xo_emit 3 .Sh HISTORY The .Fa libxo library was added in FreeBSD 11.0. .Sh AUTHOR Phil Shafer