LIBXO(3)

NAME
xo_emit, xo_emit_h, xo_emit_hv - emit formatted output based on format string and arguments

LIBRARY
libxo

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