xo_emit - Man Page
emit formatted output based on format string and arguments
Library
Text, XML, JSON, and HTML Output Emission Library (libxo, -lxo)
Synopsis
#include <libxo/xo.h
>
xo_ssize_t
xo_emit
(const char *fmt, ...);
xo_ssize_t
xo_emit_h
(xo_handle_t *xop, const char *fmt, ...);
xo_ssize_t
xo_emit_hv
(xo_handle_t *xop, const char *fmt, va_list vap);
Description
The 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 printf(3) but using a more complex format description string, as described in xo_format(5).
xo_emit
() uses the default output handle, as described in libxo(3), where xo_emit_h
() uses an explicit handle. xo_emit_hv
() accepts a va_list for additional flexibility.
Examples
In this example, a set of four values is emitted using the following source code:
xo_emit(" {:lines/%7ju} {:words/%7ju} " "{:characters/%7ju} {d:filename/%s}\n", linect, wordct, charct, file);
Output can then be generated in various style, using the "--libxo" option:
% wc /etc/motd 25 165 1140 /etc/motd % wc --libxo xml,pretty,warn /etc/motd <wc> <file> <lines>25</lines> <words>165</words> <characters>1140</characters> <filename>/etc/motd</filename> </file> </wc> % wc --libxo json,pretty,warn /etc/motd { "wc": { "file": [ { "lines": 25, "words": 165, "characters": 1140, "filename": "/etc/motd" } ] } } % wc --libxo html,pretty,warn /etc/motd <div class="line"> <div class="text"> </div> <div class="data" data-tag="lines"> 25</div> <div class="text"> </div> <div class="data" data-tag="words"> 165</div> <div class="text"> </div> <div class="data" data-tag="characters"> 1140</div> <div class="text"> </div> <div class="data" data-tag="filename">/etc/motd</div> </div>
Return Code
xo_emit returns a negative value on error. If the XOF_COLUMNS flag has been turned on for the specific handle using xo_set_flags(3), then the number of display columns consumed by the output will be returned.
See Also
xo_open_container(3), xo_open_list(3), xo_emit_f(3), xo_emit_field 3, xo_format(5), libxo(3)
History
The libxo library first appeared in FreeBSD 11.0.
Authors
libxo was written by Phil Shafer <phil@freebsd.org>.
Additional Documentation
FreeBSD uses libxo version 1.6.0. Complete documentation can be found on github:
https://juniper.github.io/libxo/1.6.0/html/index.html
libxo lives on github as:
https://github.com/Juniper/libxo
The latest release of libxo is available at:
https://github.com/Juniper/libxo/releases
History
The libxo library was added in FreeBSD 11.0.
Author
Phil Shafer
Referenced By
libxo(3), xo(1), xo_attr(3), xo_create(3), xo_emit_err(3), xo_err(3), xo_error(3), xo_finish(3), xo_flush(3), xo_format(5), xohtml(1), xolint(1), xo_message(3), xo_no_setlocale(3), xo_open_container(3), xo_open_list(3), xo_open_marker(3), xo_parse_args(3), xo_set_allocator(3), xo_set_flags(3), xo_set_info(3), xo_set_options(3), xo_set_style(3), xo_set_version(3), xo_set_writer(3).