xo_message,
    xo_message_c, xo_message_hc,
    xo_message_hcv — emit
    messages in multiple output styles
Text, XML, JSON, and HTML Output Emission Library
    (libxo, -lxo)
#include
    <libxo/xo.h>
void
  
  xo_message(const
    char *fmt,
  ...);
void
  
  xo_message_e(const
    char *fmt,
  ...);
void
  
  xo_message_c(int
    code, const char
    *fmt, ...);
void
  
  xo_message_hc(xo_handle_t
    *xop, int code, const
    char *fmt,
  ...);
void
  
  xo_message_hcv(xo_handle_t
    *xop, int code,
    const char *fmt,
    va_list vap);
xo_message generates text message which
    lack any sort of structure. These functions should not be used under normal
    conditions, since they completely defeat the value of using libxo. They are
    provided for scenarios when the output's content is genuinely unknown and
    unusable. It is used in converting programs where err/warn where not used,
    and error messages went to stdout, not
    stderr. Use of xo_message
    allows backwards compatibility with that output, but does not put the error
    in a useful form.
The xo_message function generates output
    strings using the printf-style format string and arguments provided. If the
    format string does not end in a newline,
    xo_message_e will appear a colon, a space, and the
    error associated with the current errno value.
    xo_message_c behaves similarly for the value passed in
    the code parameter.
    xo_message_hc accepts a handle
    as opened by
    xo_create(3)
    and xo_message_hcv accepts a va_list parameter of
    arguments.
FreeBSD uses libxo
    version 0.6.1. Complete documentation can be found on github:
http://juniper.github.io/libxo/0.6.1/libxo-manual.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
 
The libxo library was added in
    FreeBSD 11.0.