svn commit: r322172 - in stable/11: contrib/libxo contrib/libxo/doc contrib/libxo/encoder/cbor contrib/libxo/encoder/test contrib/libxo/libxo contrib/libxo/tests/core contrib/libxo/tests/core/saved...

Phil Shafer phil at FreeBSD.org
Mon Aug 7 17:23:46 UTC 2017


Author: phil
Date: Mon Aug  7 17:23:44 2017
New Revision: 322172
URL: https://svnweb.freebsd.org/changeset/base/322172

Log:
  Import libxo-0.8.4 from HEAD into stable/11
  
  Submitted by:	phil

Added:
  stable/11/contrib/libxo/libxo/xo_options.7
     - copied, changed from r318364, head/contrib/libxo/libxo/xo_options.7
Modified:
  stable/11/contrib/libxo/Makefile.am
  stable/11/contrib/libxo/configure.ac
  stable/11/contrib/libxo/doc/Makefile.am
  stable/11/contrib/libxo/doc/libxo-manual.html
  stable/11/contrib/libxo/doc/libxo.txt
  stable/11/contrib/libxo/encoder/cbor/enc_cbor.c
  stable/11/contrib/libxo/encoder/test/enc_test.c
  stable/11/contrib/libxo/libxo/Makefile.am
  stable/11/contrib/libxo/libxo/libxo.3
  stable/11/contrib/libxo/libxo/libxo.c
  stable/11/contrib/libxo/libxo/xo.h
  stable/11/contrib/libxo/libxo/xo_attr.3
  stable/11/contrib/libxo/libxo/xo_buf.h
  stable/11/contrib/libxo/libxo/xo_create.3
  stable/11/contrib/libxo/libxo/xo_emit.3
  stable/11/contrib/libxo/libxo/xo_emit_err.3
  stable/11/contrib/libxo/libxo/xo_emit_f.3
  stable/11/contrib/libxo/libxo/xo_encoder.c
  stable/11/contrib/libxo/libxo/xo_encoder.h
  stable/11/contrib/libxo/libxo/xo_err.3
  stable/11/contrib/libxo/libxo/xo_error.3
  stable/11/contrib/libxo/libxo/xo_finish.3
  stable/11/contrib/libxo/libxo/xo_flush.3
  stable/11/contrib/libxo/libxo/xo_format.5
  stable/11/contrib/libxo/libxo/xo_message.3
  stable/11/contrib/libxo/libxo/xo_no_setlocale.3
  stable/11/contrib/libxo/libxo/xo_open_container.3
  stable/11/contrib/libxo/libxo/xo_open_list.3
  stable/11/contrib/libxo/libxo/xo_open_marker.3
  stable/11/contrib/libxo/libxo/xo_parse_args.3
  stable/11/contrib/libxo/libxo/xo_set_allocator.3
  stable/11/contrib/libxo/libxo/xo_set_flags.3
  stable/11/contrib/libxo/libxo/xo_set_info.3
  stable/11/contrib/libxo/libxo/xo_set_options.3
  stable/11/contrib/libxo/libxo/xo_set_style.3
  stable/11/contrib/libxo/libxo/xo_set_syslog_enterprise_id.3
  stable/11/contrib/libxo/libxo/xo_set_version.3
  stable/11/contrib/libxo/libxo/xo_set_writer.3
  stable/11/contrib/libxo/libxo/xo_syslog.3
  stable/11/contrib/libxo/libxo/xo_syslog.c
  stable/11/contrib/libxo/tests/core/Makefile.am
  stable/11/contrib/libxo/tests/core/saved/test_01.E.out
  stable/11/contrib/libxo/tests/core/saved/test_01.H.out
  stable/11/contrib/libxo/tests/core/saved/test_01.HIPx.out
  stable/11/contrib/libxo/tests/core/saved/test_01.HP.out
  stable/11/contrib/libxo/tests/core/saved/test_01.J.out
  stable/11/contrib/libxo/tests/core/saved/test_01.JP.out
  stable/11/contrib/libxo/tests/core/saved/test_01.T.out
  stable/11/contrib/libxo/tests/core/saved/test_01.X.out
  stable/11/contrib/libxo/tests/core/saved/test_01.XP.out
  stable/11/contrib/libxo/tests/core/saved/test_02.E.out
  stable/11/contrib/libxo/tests/core/saved/test_02.J.out
  stable/11/contrib/libxo/tests/core/saved/test_02.JP.out
  stable/11/contrib/libxo/tests/core/saved/test_02.X.out
  stable/11/contrib/libxo/tests/core/saved/test_02.XP.out
  stable/11/contrib/libxo/tests/core/saved/test_03.E.out
  stable/11/contrib/libxo/tests/core/saved/test_04.E.out
  stable/11/contrib/libxo/tests/core/saved/test_05.E.out
  stable/11/contrib/libxo/tests/core/saved/test_06.E.out
  stable/11/contrib/libxo/tests/core/saved/test_07.E.out
  stable/11/contrib/libxo/tests/core/saved/test_08.E.out
  stable/11/contrib/libxo/tests/core/saved/test_09.E.out
  stable/11/contrib/libxo/tests/core/saved/test_10.E.out
  stable/11/contrib/libxo/tests/core/saved/test_10.X.out
  stable/11/contrib/libxo/tests/core/saved/test_10.XP.out
  stable/11/contrib/libxo/tests/core/saved/test_11.E.out
  stable/11/contrib/libxo/tests/core/saved/test_11.HIPx.out
  stable/11/contrib/libxo/tests/core/saved/test_11.X.out
  stable/11/contrib/libxo/tests/core/saved/test_11.XP.out
  stable/11/contrib/libxo/tests/core/saved/test_12.E.out
  stable/11/contrib/libxo/tests/core/saved/test_12.H.out
  stable/11/contrib/libxo/tests/core/saved/test_12.HIPx.out
  stable/11/contrib/libxo/tests/core/saved/test_12.HP.out
  stable/11/contrib/libxo/tests/core/saved/test_12.J.out
  stable/11/contrib/libxo/tests/core/saved/test_12.JP.out
  stable/11/contrib/libxo/tests/core/saved/test_12.T.out
  stable/11/contrib/libxo/tests/core/saved/test_12.X.out
  stable/11/contrib/libxo/tests/core/saved/test_12.XP.out
  stable/11/contrib/libxo/tests/core/test_01.c
  stable/11/contrib/libxo/tests/core/test_12.c
  stable/11/contrib/libxo/tests/gettext/Makefile.am
  stable/11/contrib/libxo/tests/gettext/saved/gt_01.J.out
  stable/11/contrib/libxo/tests/gettext/saved/gt_01.JP.out
  stable/11/contrib/libxo/tests/xo/Makefile.am
  stable/11/contrib/libxo/tests/xo/saved/xo_01.H.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.HIPx.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.HP.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.J.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.JP.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.T.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.X.out
  stable/11/contrib/libxo/tests/xo/saved/xo_01.XP.out
  stable/11/contrib/libxo/tests/xo/xo_01.sh
  stable/11/contrib/libxo/xo/xo.1
  stable/11/contrib/libxo/xo/xo.c
  stable/11/contrib/libxo/xohtml/xohtml.1
  stable/11/contrib/libxo/xohtml/xohtml.css
  stable/11/contrib/libxo/xohtml/xohtml.sh.in
  stable/11/contrib/libxo/xolint/xolint.1
  stable/11/contrib/libxo/xopo/xopo.1
  stable/11/contrib/libxo/xopo/xopo.c
  stable/11/lib/libxo/Makefile
  stable/11/lib/libxo/add.man
  stable/11/lib/libxo/tests/functional_test.sh
  stable/11/lib/libxo/xo_config.h
  stable/11/usr.bin/xo/Makefile
  stable/11/usr.bin/xo/tests/functional_test.sh
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/contrib/libxo/Makefile.am
==============================================================================
--- stable/11/contrib/libxo/Makefile.am	Mon Aug  7 17:23:10 2017	(r322171)
+++ stable/11/contrib/libxo/Makefile.am	Mon Aug  7 17:23:44 2017	(r322172)
@@ -38,7 +38,14 @@ GH_PAGES_DIR = gh-pages/
 GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION}
 PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz
 
-upload: dist upload-docs
+XOHTML_FILES = \
+    ${top_srcdir}/xohtml/xohtml.css \
+    ${top_srcdir}/xohtml/xohtml.js \
+    ${top_srcdir}/xohtml/external/jquery.js \
+    ${top_srcdir}/xohtml/external/jquery.qtip.css \
+    ${top_srcdir}/xohtml/external/jquery.qtip.js
+
+upload: dist upload-docs upload-xohtml-files
 	@echo "Remember to run:"
 	@echo "        gt tag ${PACKAGE_VERSION}"
 
@@ -56,6 +63,18 @@ upload-docs: docs
                                libxo-manual.html ${PACKAGE_VERSION} \
 			&& git push origin gh-pages ) ; true
 
+upload-xohtml-files:
+	@echo "Uploading xohtml files ... "
+	@-[ -d ${GH_PAGES_DIR} ] \
+		&& echo "Updating xohtml files on gh-pages ..." \
+		&& mkdir -p ${GH_PAGES_DIR_VER}/xohtml \
+		&& cp ${XOHTML_FILES} ${GH_PAGES_DIR_VER}/xohtml \
+		&& (cd ${GH_PAGES_DIR} \
+			&& git add ${PACKAGE_VERSION}/xohtml \
+			&& git commit -m 'new xohtml files' \
+                               ${PACKAGE_VERSION}/xohtml \
+			&& git push origin gh-pages ) ; true
+
 pkgconfigdir=$(libdir)/pkgconfig
 pkgconfig_DATA = packaging/${PACKAGE_NAME}.pc
 
@@ -100,4 +119,25 @@ ANALYZE_DIR = ~/trash/libxo
 ANALYZE_CMD = scan-build-mp-3.6
 
 analyze:
+	${MAKE} clean
 	${ANALYZE_CMD} -o ${ANALYZE_DIR} ${MAKE}
+
+SANIFLAGS=-fno-omit-frame-pointer -g -O2
+
+sanitize-address:
+	${MAKE} clean
+	${MAKE} CFLAGS="-fsanitize=address ${SANIFLAGS}"
+	${MAKE} install
+	${MAKE} test
+
+sanitize-undefined:
+	${MAKE} clean
+	${MAKE} CFLAGS="-fsanitize=undefined ${SANIFLAGS}"
+	${MAKE} install
+	${MAKE} test
+
+sanitize-memory:
+	${MAKE} clean
+	${MAKE} CFLAGS="-fsanitize=memory ${SANIFLAGS}"
+	${MAKE} install
+	${MAKE} test

Modified: stable/11/contrib/libxo/configure.ac
==============================================================================
--- stable/11/contrib/libxo/configure.ac	Mon Aug  7 17:23:10 2017	(r322171)
+++ stable/11/contrib/libxo/configure.ac	Mon Aug  7 17:23:44 2017	(r322172)
@@ -12,7 +12,7 @@
 #
 
 AC_PREREQ(2.2)
-AC_INIT([libxo], [0.6.3], [phil at juniper.net])
+AC_INIT([libxo], [0.8.4], [phil at juniper.net])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability])
 
 # Support silent build rules.  Requires at least automake-1.11.
@@ -20,7 +20,6 @@ AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portabili
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
 AC_PROG_CC
-AM_PROG_AR
 AC_PROG_INSTALL
 AC_CONFIG_MACRO_DIR([m4])
 AC_PROG_LN_S
@@ -135,6 +134,21 @@ if test "$GETTEXT_ENABLE" != "no"; then
 
       AC_MSG_RESULT([$HAVE_GETTEXT])
   fi
+
+  if test "$HAVE_GETTEXT" != "yes"; then
+      GETTEXT_PREFIX=/usr/local
+      AC_MSG_CHECKING([gettext in ${GETTEXT_PREFIX}])
+
+      _save_cflags="$CFLAGS"
+      CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror -lintl"
+      AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <libintl.h>]
+                 [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])],
+                 [HAVE_GETTEXT=yes],
+                 [HAVE_GETTEXT=no])
+      CFLAGS="$_save_cflags"
+
+      AC_MSG_RESULT([$HAVE_GETTEXT])
+  fi
 fi
 
 if test "$HAVE_GETTEXT" = "yes"; then
@@ -277,6 +291,13 @@ AC_ARG_ENABLE([debug],
     [LIBXO_DEBUG=no])
 AC_MSG_RESULT([$LIBXO_DEBUG])
 AM_CONDITIONAL([LIBXO_DEBUG], [test "$LIBXO_DEBUG" != "no"])
+
+AC_MSG_CHECKING([whether to use int return codes])
+AC_ARG_ENABLE([int-return-codes],
+    [  --enable-int-return-codes    Use int return codes (instead of ssize_t)],
+    [USE_INT_RETURN_CODES=yes; AC_DEFINE([USE_INT_RETURN_CODES], [1], [Use int return codes])],
+    [USE_INT_RETURN_CODES=no])
+AC_MSG_RESULT([$USE_INT_RETURN_CODES])
 
 AC_MSG_CHECKING([whether to build with text-only rendering])
 AC_ARG_ENABLE([text-only],

Modified: stable/11/contrib/libxo/doc/Makefile.am
==============================================================================
--- stable/11/contrib/libxo/doc/Makefile.am	Mon Aug  7 17:23:10 2017	(r322171)
+++ stable/11/contrib/libxo/doc/Makefile.am	Mon Aug  7 17:23:44 2017	(r322172)
@@ -61,9 +61,9 @@ xolint.txt: ${top_srcdir}/xolint/xolint.pl
 CLEANFILES = \
 xolint.txt \
 ${INPUT}.xml \
-${INPUT}.txt \
 ${INPUT}.fxml \
-${INPUT}.html
+${OUTPUT}.txt \
+${OUTPUT}.html
 else
 doc docs:
 	@${ECHO} "The 'oxtradoc' tool is not installed; see libslax.org"

Modified: stable/11/contrib/libxo/doc/libxo-manual.html
==============================================================================
--- stable/11/contrib/libxo/doc/libxo-manual.html	Mon Aug  7 17:23:10 2017	(r322171)
+++ stable/11/contrib/libxo/doc/libxo-manual.html	Mon Aug  7 17:23:44 2017	(r322172)
@@ -515,7 +515,7 @@ li.indline1 {
  
   } 
   @top-right {
-       content: "May 2016";
+       content: "August 2017";
  
   } 
   @top-center {
@@ -21983,15 +21983,17 @@ jQuery(function ($) {
 </script><link rel="Contents" href="#doc.toc">
 <link rel="Author" href="#doc.authors">
 <link rel="Chapter" title="1 Overview" href="#doc_section_1">
-<link rel="Chapter" title="2 Formatting with libxo" href="#doc_section_2">
-<link rel="Chapter" title="3 The libxo API" href="#doc_section_3">
-<link rel="Chapter" title='4 The "xo" Utility' href="#doc_section_4">
-<link rel="Chapter" title="5 xolint" href="#doc_section_5">
-<link rel="Chapter" title="6 xohtml" href="#doc_section_6">
-<link rel="Chapter" title="7 xopo" href="#doc_section_7">
-<link rel="Chapter" title="8 FAQs" href="#doc_section_8">
-<link rel="Chapter" title="9 Howtos: Focused Directions" href="#doc_section_9">
-<link rel="Chapter" title="10 Examples" href="#doc_section_10">
+<link rel="Chapter" title="2 Getting libxo" href="#doc_section_2">
+<link rel="Chapter" title="3 Formatting with libxo" href="#doc_section_3">
+<link rel="Chapter" title="4 Command-line Arguments" href="#doc_section_4">
+<link rel="Chapter" title="5 The libxo API" href="#doc_section_5">
+<link rel="Chapter" title='6 The "xo" Utility' href="#doc_section_6">
+<link rel="Chapter" title="7 xolint" href="#doc_section_7">
+<link rel="Chapter" title="8 xohtml" href="#doc_section_8">
+<link rel="Chapter" title="9 xopo" href="#doc_section_9">
+<link rel="Chapter" title="10 FAQs" href="#doc_section_10">
+<link rel="Chapter" title="11 Howtos: Focused Directions" href="#doc_section_11">
+<link rel="Chapter" title="12 Examples" href="#doc_section_12">
 <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.389, 2008-08-20 14:21:35, XSLT vendor: libxslt http://xmlsoft.org/XSLT/">
 <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/">
 <meta name="DC.Creator" content="Shafer, P.">
@@ -22009,7 +22011,7 @@ jQuery(function ($) {
 </tr>
 <tr>
 <td class="header left"></td>
-<td class="header right">May 28, 2016</td>
+<td class="header right">August 3, 2017</td>
 </tr>
 </table></div>
 <p id="title" class="title">libxo: The Easy Way to Generate text, XML, JSON, and HTML output<br><span class="filename">libxo-manual</span></p>
@@ -22018,394 +22020,413 @@ jQuery(function ($) {
 <ul class="toc">
 <li class="tocline0">
 <div class="section-number" id="toc_doc_section_1">1   </div>
-<a href="#overview">Overview</a><ul class="toc top-toc"><li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1">1.1   </div>
-<a href="#getting-libxo">Getting libxo</a><ul class="toc">
+<a href="#overview">Overview</a>
+</li>
+<li class="tocline0">
+<div class="section-number" id="toc_doc_section_2">2   </div>
+<a href="#getting-libxo">Getting libxo</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_1">1.1.1   </div>
+<div class="section-number" id="toc_doc_section_2_1">2.1   </div>
 <a href="#downloading-libxo-source-code">Downloading libxo Source Code</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2">1.1.2   </div>
+<div class="section-number" id="toc_doc_section_2_2">2.2   </div>
 <a href="#building-libxo">Building libxo</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2_1">1.1.2.1   </div>
+<div class="section-number" id="toc_doc_section_2_2_1">2.2.1   </div>
 <a href="#setting-up-the-build">Setting up the build</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2_2">1.1.2.2   </div>
-<a href="#running-the-configure-script">Running the "configure" Script</a>
-</li>
+<div class="section-number" id="toc_doc_section_2_2_2">2.2.2   </div>
+<a href="#running-the-configure-script">Running the "configure" Script</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2_3">1.1.2.3   </div>
+<div class="section-number" id="toc_doc_section_2_2_2_1">2.2.2.1   </div>
 <a href="#running-the-make-command">Running the "make" command</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2_4">1.1.2.4   </div>
+<div class="section-number" id="toc_doc_section_2_2_2_2">2.2.2.2   </div>
 <a href="#running-the-regression-tests">Running the Regression Tests</a>
 </li>
+</ul>
+</li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_1_1_2_5">1.1.2.5   </div>
+<div class="section-number" id="toc_doc_section_2_2_3">2.2.3   </div>
 <a href="#installing-libxo">Installing libxo</a>
 </li>
 </ul>
 </li>
 </ul>
-</li></ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_2">2   </div>
+<div class="section-number" id="toc_doc_section_3">3   </div>
 <a href="#formatting-with-libxo">Formatting with libxo</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_1">2.1   </div>
+<div class="section-number" id="toc_doc_section_3_1">3.1   </div>
 <a href="#encoding-styles">Encoding Styles</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_1_1">2.1.1   </div>
+<div class="section-number" id="toc_doc_section_3_1_1">3.1.1   </div>
 <a href="#text-output">Text Output</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_1_2">2.1.2   </div>
+<div class="section-number" id="toc_doc_section_3_1_2">3.1.2   </div>
 <a href="#xml-output">XML Output</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_1_3">2.1.3   </div>
+<div class="section-number" id="toc_doc_section_3_1_3">3.1.3   </div>
 <a href="#json-output">JSON Output</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_1_4">2.1.4   </div>
+<div class="section-number" id="toc_doc_section_3_1_4">3.1.4   </div>
 <a href="#html-output">HTML Output</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2">2.2   </div>
+<div class="section-number" id="toc_doc_section_3_2">3.2   </div>
 <a href="#format-strings">Format Strings</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1">2.2.1   </div>
+<div class="section-number" id="toc_doc_section_3_2_1">3.2.1   </div>
 <a href="#field-roles">Field Roles</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_1">2.2.1.1   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_1">3.2.1.1   </div>
 <a href="#color-role">The Color Role ({C:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_2">2.2.1.2   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_2">3.2.1.2   </div>
 <a href="#the-decoration-role-d">The Decoration Role ({D:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_3">2.2.1.3   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_3">3.2.1.3   </div>
 <a href="#gettext-role">The Gettext Role ({G:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_4">2.2.1.4   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_4">3.2.1.4   </div>
 <a href="#the-label-role-l">The Label Role ({L:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_5">2.2.1.5   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_5">3.2.1.5   </div>
 <a href="#the-note-role-n">The Note Role ({N:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_6">2.2.1.6   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_6">3.2.1.6   </div>
 <a href="#padding-role">The Padding Role ({P:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_7">2.2.1.7   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_7">3.2.1.7   </div>
 <a href="#the-title-role-t">The Title Role ({T:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_8">2.2.1.8   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_8">3.2.1.8   </div>
 <a href="#the-units-role-u">The Units Role ({U:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_9">2.2.1.9   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_9">3.2.1.9   </div>
 <a href="#the-value-role-v-and-">The Value Role ({V:} and {:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_1_10">2.2.1.10   </div>
+<div class="section-number" id="toc_doc_section_3_2_1_10">3.2.1.10   </div>
 <a href="#anchor-role">The Anchor Roles ({[:} and {]:})</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2">2.2.2   </div>
+<div class="section-number" id="toc_doc_section_3_2_2">3.2.2   </div>
 <a href="#field-modifiers">Field Modifiers</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_1">2.2.2.1   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_1">3.2.2.1   </div>
 <a href="#the-argument-modifier-a">The Argument Modifier ({a:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_2">2.2.2.2   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_2">3.2.2.2   </div>
 <a href="#the-colon-modifier-c">The Colon Modifier ({c:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_3">2.2.2.3   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_3">3.2.2.3   </div>
 <a href="#the-display-modifier-d">The Display Modifier ({d:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_4">2.2.2.4   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_4">3.2.2.4   </div>
 <a href="#e-modifier">The Encoding Modifier ({e:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_5">2.2.2.5   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_5">3.2.2.5   </div>
 <a href="#gettext-modifier">The Gettext Modifier ({g:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_6">2.2.2.6   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_6">3.2.2.6   </div>
 <a href="#the-humanize-modifier-h">The Humanize Modifier ({h:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_7">2.2.2.7   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_7">3.2.2.7   </div>
 <a href="#the-key-modifier-k">The Key Modifier ({k:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_8">2.2.2.8   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_8">3.2.2.8   </div>
 <a href="#the-leaf-list-modifier-l">The Leaf-List Modifier ({l:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_9">2.2.2.9   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_9">3.2.2.9   </div>
 <a href="#the-no-quotes-modifier-n">The No-Quotes Modifier ({n:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_10">2.2.2.10   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_10">3.2.2.10   </div>
 <a href="#plural-modifier">The Plural Modifier ({p:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_11">2.2.2.11   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_11">3.2.2.11   </div>
 <a href="#the-quotes-modifier-q">The Quotes Modifier ({q:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_12">2.2.2.12   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_12">3.2.2.12   </div>
 <a href="#the-trim-modifier-t">The Trim Modifier ({t:})</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_2_13">2.2.2.13   </div>
+<div class="section-number" id="toc_doc_section_3_2_2_13">3.2.2.13   </div>
 <a href="#the-white-space-modifier-w">The White Space Modifier ({w:})</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_3">2.2.3   </div>
+<div class="section-number" id="toc_doc_section_3_2_3">3.2.3   </div>
 <a href="#field-formatting">Field Formatting</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_4">2.2.4   </div>
+<div class="section-number" id="toc_doc_section_3_2_4">3.2.4   </div>
 <a href="#utf-8-and-locale-strings">UTF-8 and Locale Strings</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_5">2.2.5   </div>
+<div class="section-number" id="toc_doc_section_3_2_5">3.2.5   </div>
 <a href="#characters-outside-of-field-definitions">Characters Outside of Field Definitions</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_6">2.2.6   </div>
+<div class="section-number" id="toc_doc_section_3_2_6">3.2.6   </div>
 <a href="#m-is-supported">"%m" Is Supported</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_7">2.2.7   </div>
+<div class="section-number" id="toc_doc_section_3_2_7">3.2.7   </div>
 <a href="#n-is-not-supported">"%n" Is Not Supported</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_8">2.2.8   </div>
+<div class="section-number" id="toc_doc_section_3_2_8">3.2.8   </div>
 <a href="#the-encoding-format-eformat">The Encoding Format (eformat)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_9">2.2.9   </div>
+<div class="section-number" id="toc_doc_section_3_2_9">3.2.9   </div>
 <a href="#content-strings">Content Strings</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_10">2.2.10   </div>
+<div class="section-number" id="toc_doc_section_3_2_10">3.2.10   </div>
 <a href="#printf-like">Argument Validation</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_11">2.2.11   </div>
+<div class="section-number" id="toc_doc_section_3_2_11">3.2.11   </div>
 <a href="#retain">Retaining Parsed Format Information</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_2_12">2.2.12   </div>
+<div class="section-number" id="toc_doc_section_3_2_12">3.2.12   </div>
 <a href="#example">Example</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_3">2.3   </div>
+<div class="section-number" id="toc_doc_section_3_3">3.3   </div>
 <a href="#representing-hierarchy">Representing Hierarchy</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_3_1">2.3.1   </div>
+<div class="section-number" id="toc_doc_section_3_3_1">3.3.1   </div>
 <a href="#containers">Containers</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_3_2">2.3.2   </div>
+<div class="section-number" id="toc_doc_section_3_3_2">3.3.2   </div>
 <a href="#lists-and-instances">Lists and Instances</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_3_3">2.3.3   </div>
+<div class="section-number" id="toc_doc_section_3_3_3">3.3.3   </div>
 <a href="#dtrt-mode">DTRT Mode</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_3_4">2.3.4   </div>
+<div class="section-number" id="toc_doc_section_3_3_4">3.3.4   </div>
 <a href="#markers">Markers</a>
 </li>
 </ul>
 </li>
+</ul>
+</li>
+<li class="tocline0">
+<div class="section-number" id="toc_doc_section_4">4   </div>
+<a href="#options">Command-line Arguments</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_2_4">2.4   </div>
-<a href="#command-line-arguments">Command-line Arguments</a>
+<div class="section-number" id="toc_doc_section_4_1">4.1   </div>
+<a href="#option-keywords">Option keywords</a>
 </li>
+<li class="tocline1">
+<div class="section-number" id="toc_doc_section_4_2">4.2   </div>
+<a href="#brief-options">Brief Options</a>
+</li>
+<li class="tocline1">
+<div class="section-number" id="toc_doc_section_4_3">4.3   </div>
+<a href="#color-mapping">Color Mapping</a>
+</li>
 </ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_3">3   </div>
+<div class="section-number" id="toc_doc_section_5">5   </div>
 <a href="#the-libxo-api">The libxo API</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1">3.1   </div>
+<div class="section-number" id="toc_doc_section_5_1">5.1   </div>
 <a href="#handles">Handles</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_1">3.1.1   </div>
+<div class="section-number" id="toc_doc_section_5_1_1">5.1.1   </div>
 <a href="#xo_create">xo_create</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_2">3.1.2   </div>
+<div class="section-number" id="toc_doc_section_5_1_2">5.1.2   </div>
 <a href="#xo_create_to_file">xo_create_to_file</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_3">3.1.3   </div>
+<div class="section-number" id="toc_doc_section_5_1_3">5.1.3   </div>
 <a href="#xo_set_writer">xo_set_writer</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_4">3.1.4   </div>
-<a href="#xo_set_style">xo_set_style</a><ul class="toc">
+<div class="section-number" id="toc_doc_section_5_1_4">5.1.4   </div>
+<a href="#xo_set_style">xo_set_style</a>
+</li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_4_1">3.1.4.1   </div>
+<div class="section-number" id="toc_doc_section_5_1_5">5.1.5   </div>
+<a href="#xo_get_style">xo_get_style</a><ul class="toc">
+<li class="tocline1">
+<div class="section-number" id="toc_doc_section_5_1_5_1">5.1.5.1   </div>
 <a href="#styles">Output Styles (XO_STYLE_*)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_4_2">3.1.4.2   </div>
+<div class="section-number" id="toc_doc_section_5_1_5_2">5.1.5.2   </div>
 <a href="#xo_set_style_name">xo_set_style_name</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_5">3.1.5   </div>
+<div class="section-number" id="toc_doc_section_5_1_6">5.1.6   </div>
 <a href="#xo_set_flags">xo_set_flags</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_5_1">3.1.5.1   </div>
+<div class="section-number" id="toc_doc_section_5_1_6_1">5.1.6.1   </div>
 <a href="#flags">Flags (XOF_*)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_5_2">3.1.5.2   </div>
+<div class="section-number" id="toc_doc_section_5_1_6_2">5.1.6.2   </div>
 <a href="#xo_clear_flags">xo_clear_flags</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_5_3">3.1.5.3   </div>
+<div class="section-number" id="toc_doc_section_5_1_6_3">5.1.6.3   </div>
 <a href="#xo_set_options">xo_set_options</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_1_6">3.1.6   </div>
+<div class="section-number" id="toc_doc_section_5_1_7">5.1.7   </div>
 <a href="#xo_destroy">xo_destroy</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_2">3.2   </div>
+<div class="section-number" id="toc_doc_section_5_2">5.2   </div>
 <a href="#emitting-content-xo_emit">Emitting Content (xo_emit)</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_2_1">3.2.1   </div>
+<div class="section-number" id="toc_doc_section_5_2_1">5.2.1   </div>
 <a href="#xo_emit_field">Single Field Emitting Functions (xo_emit_field)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_2_2">3.2.2   </div>
+<div class="section-number" id="toc_doc_section_5_2_2">5.2.2   </div>
 <a href="#xo_attr">Attributes (xo_attr)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_2_3">3.2.3   </div>
+<div class="section-number" id="toc_doc_section_5_2_3">5.2.3   </div>
 <a href="#flushing-output-xo_flush">Flushing Output (xo_flush)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_2_4">3.2.4   </div>
+<div class="section-number" id="toc_doc_section_5_2_4">5.2.4   </div>
 <a href="#finishing-output-xo_finish">Finishing Output (xo_finish)</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_3">3.3   </div>
+<div class="section-number" id="toc_doc_section_5_3">5.3   </div>
 <a href="#emitting-hierarchy">Emitting Hierarchy</a><ul class="toc"><li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_3_1">3.3.1   </div>
+<div class="section-number" id="toc_doc_section_5_3_1">5.3.1   </div>
 <a href="#lists-and-instances-2">Lists and Instances</a>
 </li></ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4">3.4   </div>
+<div class="section-number" id="toc_doc_section_5_4">5.4   </div>
 <a href="#support-functions">Support Functions</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_1">3.4.1   </div>
+<div class="section-number" id="toc_doc_section_5_4_1">5.4.1   </div>
 <a href="#xo_parse_args">Parsing Command-line Arguments (xo_parse_args)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_2">3.4.2   </div>
+<div class="section-number" id="toc_doc_section_5_4_2">5.4.2   </div>
 <a href="#xo_set_program">xo_set_program</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_3">3.4.3   </div>
+<div class="section-number" id="toc_doc_section_5_4_3">5.4.3   </div>
 <a href="#xo_set_version">xo_set_version</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_4">3.4.4   </div>
+<div class="section-number" id="toc_doc_section_5_4_4">5.4.4   </div>
 <a href="#info">Field Information (xo_info_t)</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_5">3.4.5   </div>
+<div class="section-number" id="toc_doc_section_5_4_5">5.4.5   </div>
 <a href="#memory-allocation">Memory Allocation</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_6">3.4.6   </div>
+<div class="section-number" id="toc_doc_section_5_4_6">5.4.6   </div>
 <a href="#LIBXO_OPTIONS">LIBXO_OPTIONS</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_7">3.4.7   </div>
+<div class="section-number" id="toc_doc_section_5_4_7">5.4.7   </div>
 <a href="#errors-warnings-and-messages">Errors, Warnings, and Messages</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_8">3.4.8   </div>
+<div class="section-number" id="toc_doc_section_5_4_8">5.4.8   </div>
 <a href="#xo_error">xo_error</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_4_9">3.4.9   </div>
+<div class="section-number" id="toc_doc_section_5_4_9">5.4.9   </div>
 <a href="#xo_no_setlocale">xo_no_setlocale</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5">3.5   </div>
+<div class="section-number" id="toc_doc_section_5_5">5.5   </div>
 <a href="#emitting-syslog-messages">Emitting syslog Messages</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_1">3.5.1   </div>
+<div class="section-number" id="toc_doc_section_5_5_1">5.5.1   </div>
 <a href="#priority">Priority, Facility, and Flags</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_2">3.5.2   </div>
+<div class="section-number" id="toc_doc_section_5_5_2">5.5.2   </div>
 <a href="#xo_syslog">xo_syslog</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3">3.5.3   </div>
+<div class="section-number" id="toc_doc_section_5_5_3">5.5.3   </div>
 <a href="#support-functions-2">Support functions</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3_1">3.5.3.1   </div>
+<div class="section-number" id="toc_doc_section_5_5_3_1">5.5.3.1   </div>
 <a href="#xo_vsyslog">xo_vsyslog</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3_2">3.5.3.2   </div>
+<div class="section-number" id="toc_doc_section_5_5_3_2">5.5.3.2   </div>
 <a href="#xo_open_log">xo_open_log</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3_3">3.5.3.3   </div>
+<div class="section-number" id="toc_doc_section_5_5_3_3">5.5.3.3   </div>
 <a href="#xo_close_log">xo_close_log</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3_4">3.5.3.4   </div>
+<div class="section-number" id="toc_doc_section_5_5_3_4">5.5.3.4   </div>
 <a href="#xo_set_logmask">xo_set_logmask</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_5_3_5">3.5.3.5   </div>
+<div class="section-number" id="toc_doc_section_5_5_3_5">5.5.3.5   </div>
 <a href="#xo_set_syslog_enterprise_id">xo_set_syslog_enterprise_id</a>
 </li>
 </ul>
@@ -22413,18 +22434,18 @@ jQuery(function ($) {
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_6">3.6   </div>
+<div class="section-number" id="toc_doc_section_5_6">5.6   </div>
 <a href="#creating-custom-encoders">Creating Custom Encoders</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_6_1">3.6.1   </div>
+<div class="section-number" id="toc_doc_section_5_6_1">5.6.1   </div>
 <a href="#loading-encoders">Loading Encoders</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_6_2">3.6.2   </div>
+<div class="section-number" id="toc_doc_section_5_6_2">5.6.2   </div>
 <a href="#encoder-initialization">Encoder Initialization</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_3_6_3">3.6.3   </div>
+<div class="section-number" id="toc_doc_section_5_6_3">5.6.3   </div>
 <a href="#operations">Operations</a>
 </li>
 </ul>
@@ -22432,143 +22453,143 @@ jQuery(function ($) {
 </ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_4">4   </div>
+<div class="section-number" id="toc_doc_section_6">6   </div>
 <a href="#the-xo-utility">The "xo" Utility</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_4_1">4.1   </div>
+<div class="section-number" id="toc_doc_section_6_1">6.1   </div>
 <a href="#command-line-options">Command Line Options</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_4_2">4.2   </div>
+<div class="section-number" id="toc_doc_section_6_2">6.2   </div>
 <a href="#example-2">Example</a>
 </li>
 </ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_5">5   </div>
+<div class="section-number" id="toc_doc_section_7">7   </div>
 <a href="#xolint">xolint</a>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_6">6   </div>
+<div class="section-number" id="toc_doc_section_8">8   </div>
 <a href="#xohtml">xohtml</a>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_7">7   </div>
+<div class="section-number" id="toc_doc_section_9">9   </div>
 <a href="#xopo">xopo</a>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_8">8   </div>
+<div class="section-number" id="toc_doc_section_10">10   </div>
 <a href="#faqs">FAQs</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_1">8.1   </div>
+<div class="section-number" id="toc_doc_section_10_1">10.1   </div>
 <a href="#general">General</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_1_1">8.1.1   </div>
+<div class="section-number" id="toc_doc_section_10_1_1">10.1.1   </div>
 <a href="#can-you-share-the-history-of-libxo">Can you share the history of libxo?</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_1_2">8.1.2   </div>
+<div class="section-number" id="toc_doc_section_10_1_2">10.1.2   </div>
 <a href="#did-the-complex-semantics-of-format-strings-evolve-over-time">Did the complex semantics of format strings evolve over time?</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_1_3">8.1.3   </div>
+<div class="section-number" id="toc_doc_section_10_1_3">10.1.3   </div>
 <a href="#good-field-names">What makes a good field name?</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2">8.2   </div>
+<div class="section-number" id="toc_doc_section_10_2">10.2   </div>
 <a href="#what-does-this-message-mean">What does this message mean?</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_1">8.2.1   </div>
+<div class="section-number" id="toc_doc_section_10_2_1">10.2.1   </div>
 <a href="#a-percent-sign-appearing-in-text-is-a-literal">'A percent sign appearing in text is a literal'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_2">8.2.2   </div>
+<div class="section-number" id="toc_doc_section_10_2_2">10.2.2   </div>
 <a href="#unknown-long-name-for-rolemodifier">'Unknown long name for role/modifier'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_3">8.2.3   </div>
+<div class="section-number" id="toc_doc_section_10_2_3">10.2.3   </div>
 <a href="#last-character-before-field-definition-is-a-field-type">'Last character before field definition is a field type'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_4">8.2.4   </div>
+<div class="section-number" id="toc_doc_section_10_2_4">10.2.4   </div>
 <a href="#encoding-format-uses-different-number-of-arguments">'Encoding format uses different number of arguments'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_5">8.2.5   </div>
+<div class="section-number" id="toc_doc_section_10_2_5">10.2.5   </div>
 <a href="#only-one-field-role-can-be-used">'Only one field role can be used'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_6">8.2.6   </div>
+<div class="section-number" id="toc_doc_section_10_2_6">10.2.6   </div>
 <a href="#potential-missing-slash-after-c-d-n-l-or-t-with-format">'Potential missing slash after C, D, N, L, or T with format'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_7">8.2.7   </div>
+<div class="section-number" id="toc_doc_section_10_2_7">10.2.7   </div>
 <a href="#an-encoding-format-cannot-be-given-roles-dnlt">'An encoding format cannot be given (roles: DNLT)'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_8">8.2.8   </div>
+<div class="section-number" id="toc_doc_section_10_2_8">10.2.8   </div>
 <a href="#format-cannot-be-given-when-content-is-present-roles-cdln">'Format cannot be given when content is present (roles: CDLN)'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_9">8.2.9   </div>
+<div class="section-number" id="toc_doc_section_10_2_9">10.2.9   </div>
 <a href="#field-has-color-without-fg--or-bg--role-c">'Field has color without fg- or bg- (role: C)'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_10">8.2.10   </div>
+<div class="section-number" id="toc_doc_section_10_2_10">10.2.10   </div>
 <a href="#field-has-invalid-color-or-effect-role-c">'Field has invalid color or effect (role: C)'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_11">8.2.11   </div>
+<div class="section-number" id="toc_doc_section_10_2_11">10.2.11   </div>
 <a href="#field-has-humanize-modifier-but-no-format-string">'Field has humanize modifier but no format string'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_12">8.2.12   </div>
+<div class="section-number" id="toc_doc_section_10_2_12">10.2.12   </div>
 <a href="#field-has-hn--modifier-but-not-h-modifier">'Field has hn-* modifier but not 'h' modifier'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_13">8.2.13   </div>
+<div class="section-number" id="toc_doc_section_10_2_13">10.2.13   </div>
 <a href="#value-field-must-have-a-name-as-content">'Value field must have a name (as content)")'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_14">8.2.14   </div>
+<div class="section-number" id="toc_doc_section_10_2_14">10.2.14   </div>
 <a href="#use-hyphens-not-underscores-for-value-field-name">'Use hyphens, not underscores, for value field name'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_15">8.2.15   </div>
+<div class="section-number" id="toc_doc_section_10_2_15">10.2.15   </div>
 <a href="#value-field-name-cannot-start-with-digit">'Value field name cannot start with digit'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_16">8.2.16   </div>
+<div class="section-number" id="toc_doc_section_10_2_16">10.2.16   </div>
 <a href="#value-field-name-should-be-lower-case">'Value field name should be lower case'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_17">8.2.17   </div>
+<div class="section-number" id="toc_doc_section_10_2_17">10.2.17   </div>
 <a href="#value-field-name-should-be-longer-than-two-characters">'Value field name should be longer than two characters'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_18">8.2.18   </div>
+<div class="section-number" id="toc_doc_section_10_2_18">10.2.18   </div>
 <a href="#value-field-name-contains-invalid-character">'Value field name contains invalid character'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_19">8.2.19   </div>
+<div class="section-number" id="toc_doc_section_10_2_19">10.2.19   </div>
 <a href="#decoration-field-contains-invalid-character">'decoration field contains invalid character'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_20">8.2.20   </div>
+<div class="section-number" id="toc_doc_section_10_2_20">10.2.20   </div>
 <a href="#anchor-content-should-be-decimal-width">'Anchor content should be decimal width'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_21">8.2.21   </div>
+<div class="section-number" id="toc_doc_section_10_2_21">10.2.21   </div>
 <a href="#anchor-format-should-be-d">'Anchor format should be "%d"'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_22">8.2.22   </div>
+<div class="section-number" id="toc_doc_section_10_2_22">10.2.22   </div>
 <a href="#anchor-cannot-have-both-format-and-encoding-format">'Anchor cannot have both format and encoding format")'</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_8_2_23">8.2.23   </div>
+<div class="section-number" id="toc_doc_section_10_2_23">10.2.23   </div>
 <a href="#max-width-only-valid-for-strings">'Max width only valid for strings'</a>
 </li>
 </ul>
@@ -22576,54 +22597,54 @@ jQuery(function ($) {
 </ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_9">9   </div>
+<div class="section-number" id="toc_doc_section_11">11   </div>
 <a href="#howtos-focused-directions">Howtos: Focused Directions</a><ul class="toc top-toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_1">9.1   </div>
+<div class="section-number" id="toc_doc_section_11_1">11.1   </div>
 <a href="#howto-report-bugs">Howto: Report bugs</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_2">9.2   </div>
+<div class="section-number" id="toc_doc_section_11_2">11.2   </div>
 <a href="#howto-install-libxo">Howto: Install libxo</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_3">9.3   </div>
+<div class="section-number" id="toc_doc_section_11_3">11.3   </div>
 <a href="#howto-convert-command-line-applications">Howto: Convert command line applications</a><ul class="toc">
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_3_1">9.3.1   </div>
+<div class="section-number" id="toc_doc_section_11_3_1">11.3.1   </div>
 <a href="#setting-up-the-context">Setting up the context</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_3_2">9.3.2   </div>
+<div class="section-number" id="toc_doc_section_11_3_2">11.3.2   </div>
 <a href="#converting-printf-calls">Converting printf Calls</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_3_3">9.3.3   </div>
+<div class="section-number" id="toc_doc_section_11_3_3">11.3.3   </div>
 <a href="#creating-hierarchy">Creating Hierarchy</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_3_4">9.3.4   </div>
+<div class="section-number" id="toc_doc_section_11_3_4">11.3.4   </div>
 <a href="#converting-error-functions">Converting Error Functions</a>
 </li>
 </ul>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_4">9.4   </div>
+<div class="section-number" id="toc_doc_section_11_4">11.4   </div>
 <a href="#howto-use-xo-in-shell-scripts">Howto: Use "xo" in Shell Scripts</a>
 </li>
 <li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_5">9.5   </div>
+<div class="section-number" id="toc_doc_section_11_5">11.5   </div>
 <a href="#howto-i18n">Howto: Internationalization (i18n)</a><ul class="toc"><li class="tocline1">
-<div class="section-number" id="toc_doc_section_9_5_1">9.5.1   </div>
+<div class="section-number" id="toc_doc_section_11_5_1">11.5.1   </div>
 <a href="#i18n-and-xo_emit">i18n and xo_emit</a>
 </li></ul>
 </li>
 </ul>
 </li>
 <li class="tocline0">
-<div class="section-number" id="toc_doc_section_10">10   </div>
+<div class="section-number" id="toc_doc_section_12">12   </div>
 <a href="#examples">Examples</a><ul class="toc top-toc"><li class="tocline1">
-<div class="section-number" id="toc_doc_section_10_1">10.1   </div>
+<div class="section-number" id="toc_doc_section_12_1">12.1   </div>
 <a href="#unit-test">Unit Test</a>
 </li></ul>
 </li>
@@ -22638,14 +22659,31 @@ jQuery(function ($) {
 <a id="overview" href="#overview">Overview</a>
 </h1>
 <p id="doc_section_1_p_1">libxo - A Library for Generating Text, XML, JSON, and HTML Output</p>
-<p id="doc_section_1_p_2">You want to prepare for the future, but you need to live in the present. You'd love a flying car, but need to get to work today. You want to support features like XML, JSON, and HTML rendering to allow integration with NETCONF, REST, and web browsers, but you need to make text output for command line users. And you don't want multiple code paths that can't help but get out of sync. None of this "if (xml) {... } else {...}" logic. And ifdefs are right out. But you'd really, really like all the fancy features that modern encoding formats can provide. libxo can help.</p>
-<p id="doc_section_1_p_3">The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced. The application calls a function "xo_emit" to product output that is described in a format string. A "field descriptor" tells libxo what the field is and what it means. Each field descriptor is placed in braces with a printf-like format string (<a href="#format-strings" title="Format Strings">Section 2.2</a>):</p>
+<p id="doc_section_1_p_2">You want to prepare for the future, but you need to live in the present. You'd love a flying car, but need to get to work today. You want to support features like XML, JSON, and HTML rendering to allow integration with NETCONF, REST, and web browsers, but you need to make text output for command line users.</p>
+<p id="doc_section_1_p_3">And you don't want multiple code paths that can't help but get out of sync:</p>
 <div id="doc_figure_u.1"></div> <pre>
+    /* None of this "if (xml) {... } else {...}"  logic */
+    if (xml) {
+        /* some code to make xml*/
+    } else {
+        /* other code to make text */
+        /* oops forgot to add something on both clauses! */
+    }
+
+    /* And ifdefs are right out. */
+    #ifdef MAKE_XML
+        /* icky */
+    #else
+        /* pooh */
+    #endif
+	    </pre> <p id="doc_section_1_p_5">But you'd really, really like all the fancy features that modern encoding formats can provide. libxo can help.</p>
+<p id="doc_section_1_p_6">The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced. The application calls a function "xo_emit" to product output that is described in a format string. A "field descriptor" tells libxo what the field is and what it means. Each field descriptor is placed in braces with a printf-like format string (<a href="#format-strings" title="Format Strings">Section 3.2</a>):</p>
+<div id="doc_figure_u.2"></div> <pre>
     xo_emit(" {:lines/%7ju} {:words/%7ju} "
             "{:characters/%7ju} {d:filename/%s}\n",
             linect, wordct, charct, file);
-	    </pre> <p id="doc_section_1_p_5">Each field can have a role, with the 'value' role being the default, and the role tells libxo how and when to render that field. Output can then be generated in various style, using the "‑‑libxo" option:</p>
-<div id="doc_figure_u.2"></div> <pre>
+	    </pre> <p id="doc_section_1_p_8">Each field can have a role, with the 'value' role being the default, and the role tells libxo how and when to render that field (see <a href="#field-roles" title="Field Roles">Section 3.2.1</a> for details). Modifiers change how the field is rendered in different output styles (see <a href="#field-modifiers" title="Field Modifiers">Section 3.2.2</a> for details. Output can then be generated in various style, using the "‑‑libxo" option:</p>
+<div id="doc_figure_u.3"></div> <pre>
     % wc /etc/motd
           25     165    1140 /etc/motd

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list