Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 May 2019 20:15:00 +0000 (UTC)
From:      Phil Shafer <phil@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r347205 - in vendor/Juniper/libxo/dist: . doc libxo tests/core tests/core/saved xo
Message-ID:  <201905062015.x46KF0j8035968@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: phil
Date: Mon May  6 20:15:00 2019
New Revision: 347205
URL: https://svnweb.freebsd.org/changeset/base/347205

Log:
  Import libxo 1.0.4

Modified:
  vendor/Juniper/libxo/dist/configure.ac
  vendor/Juniper/libxo/dist/doc/libxo-manual.html
  vendor/Juniper/libxo/dist/libxo/libxo.c
  vendor/Juniper/libxo/dist/libxo/xo_explicit.h
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.out
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.err
  vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.out
  vendor/Juniper/libxo/dist/tests/core/test_01.c
  vendor/Juniper/libxo/dist/tests/core/test_02.c
  vendor/Juniper/libxo/dist/xo/xo.c

Modified: vendor/Juniper/libxo/dist/configure.ac
==============================================================================
--- vendor/Juniper/libxo/dist/configure.ac	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/configure.ac	Mon May  6 20:15:00 2019	(r347205)
@@ -12,7 +12,7 @@
 #
 
 AC_PREREQ(2.2)
-AC_INIT([libxo], [1.0.2], [phil@juniper.net])
+AC_INIT([libxo], [1.0.4], [phil@juniper.net])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability])
 
 # Support silent build rules.  Requires at least automake-1.11.

Modified: vendor/Juniper/libxo/dist/doc/libxo-manual.html
==============================================================================
--- vendor/Juniper/libxo/dist/doc/libxo-manual.html	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/doc/libxo-manual.html	Mon May  6 20:15:00 2019	(r347205)
@@ -22011,7 +22011,7 @@ jQuery(function ($) {
 </tr>
 <tr>
 <td class="header left"></td>
-<td class="header right">April 2, 2019</td>
+<td class="header right">April 24, 2019</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>

Modified: vendor/Juniper/libxo/dist/libxo/libxo.c
==============================================================================
--- vendor/Juniper/libxo/dist/libxo/libxo.c	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/libxo/libxo.c	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018, Juniper Networks, Inc.
+ * Copyright (c) 2014-2019, Juniper Networks, Inc.
  * All rights reserved.
  * This SOFTWARE is licensed under the LICENSE provided in the
  * ../Copyright file. By downloading, installing, copying, or otherwise
@@ -600,7 +600,7 @@ xo_no_setlocale (void)
 static const char *
 xo_xml_leader_len (xo_handle_t *xop, const char *name, xo_ssize_t nlen)
 {
-    if (isalpha(name[0]) || name[0] == '_')
+    if (name == NULL || isalpha(name[0]) || name[0] == '_')
         return "";
 
     xo_failure(xop, "invalid XML tag name: '%.*s'", nlen, name);

Modified: vendor/Juniper/libxo/dist/libxo/xo_explicit.h
==============================================================================
--- vendor/Juniper/libxo/dist/libxo/xo_explicit.h	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/libxo/xo_explicit.h	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Juniper Networks, Inc.
+ * Copyright (c) 2019, Juniper Networks, Inc.
  * All rights reserved.
  * This SOFTWARE is licensed under the LICENSE provided in the
  * ../Copyright file. By downloading, installing, copying, or otherwise

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.E.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,6 +1,10 @@
 op create: [] [] [0]
 op open_container: [top] [] [0x40010]
 op open_container: [data] [] [0x40010]
+op string: [name] [em0] [0x1080]
+op string: [flags] [0x8843] [0x18]
+op string: [name] [em0] [0x1088]
+op string: [flags] [0x8843] [0x18]
 op string: [what] [braces] [0]
 op string: [length] [abcdef] [0]
 op content: [fd] [-1] [0]

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.H.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,4 +1,4 @@
-<div class="line"><div class="text">We are </div><div class="text">{emit}</div><div class="text">{ting}</div><div class="text"> some </div><div class="data" data-tag="what">braces</div></div><div class="line"><div class="message">abcdef
+<div class="line"><div class="data" data-tag="name">em0  </div><div class="data">em0  </div><div class="text">We are </div><div class="text">{emit}</div><div class="text">{ting}</div><div class="text"> some </div><div class="data" data-tag="what">braces</div></div><div class="line"><div class="message">abcdef
 </div></div><div class="line"><div class="message">abcdef: Bad file descriptor
 </div></div><div class="line"><div class="message">improper use of profanity; ten yard penalty; first down
 </div></div><div class="line"><div class="text">length </div><div class="data" data-tag="length">abcdef</div></div><div class="line"><div class="text">close </div><div class="data" data-tag="fd">-1</div><div class="text"> returned </div><div class="data" data-tag="error">Bad file descriptor</div><div class="text"> </div><div class="data" data-tag="test">good</div></div><div class="line"><div class="text">close </div><div class="data" data-tag="fd">-1</div><div class="text"> returned </div><div class="data" data-tag="error">Bad fi</div><div class="text"> </div><div class="data" data-tag="test">good</div></div><div class="line"><div class="message">improper use of profanity; ten yard penalty; first down

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.HIPx.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,9 +1,11 @@
 <div class="line">
+  <div class="data" data-tag="name" data-xpath="/top/data/name">em0  </div>
+  <div class="data">em0  </div>
   <div class="text">We are </div>
   <div class="text">{emit}</div>
   <div class="text">{ting}</div>
   <div class="text"> some </div>
-  <div class="data" data-tag="what" data-xpath="/top/data/what">braces</div>
+  <div class="data" data-tag="what" data-xpath="/top/data[name = 'em0  '][name = 'em0']/what">braces</div>
 </div>
 <div class="line">
   <div class="message">abcdef
@@ -19,23 +21,23 @@
 </div>
 <div class="line">
   <div class="text">length </div>
-  <div class="data" data-tag="length" data-xpath="/top/data/length">abcdef</div>
+  <div class="data" data-tag="length" data-xpath="/top/data[name = 'em0  '][name = 'em0']/length">abcdef</div>
 </div>
 <div class="line">
   <div class="text">close </div>
-  <div class="data" data-tag="fd" data-xpath="/top/data/fd">-1</div>
+  <div class="data" data-tag="fd" data-xpath="/top/data[name = 'em0  '][name = 'em0']/fd">-1</div>
   <div class="text"> returned </div>
-  <div class="data" data-tag="error" data-xpath="/top/data/error">Bad file descriptor</div>
+  <div class="data" data-tag="error" data-xpath="/top/data[name = 'em0  '][name = 'em0']/error">Bad file descriptor</div>
   <div class="text"> </div>
-  <div class="data" data-tag="test" data-xpath="/top/data/test">good</div>
+  <div class="data" data-tag="test" data-xpath="/top/data[name = 'em0  '][name = 'em0']/test">good</div>
 </div>
 <div class="line">
   <div class="text">close </div>
-  <div class="data" data-tag="fd" data-xpath="/top/data/fd">-1</div>
+  <div class="data" data-tag="fd" data-xpath="/top/data[name = 'em0  '][name = 'em0']/fd">-1</div>
   <div class="text"> returned </div>
-  <div class="data" data-tag="error" data-xpath="/top/data/error">Bad fi</div>
+  <div class="data" data-tag="error" data-xpath="/top/data[name = 'em0  '][name = 'em0']/error">Bad fi</div>
   <div class="text"> </div>
-  <div class="data" data-tag="test" data-xpath="/top/data/test">good</div>
+  <div class="data" data-tag="test" data-xpath="/top/data[name = 'em0  '][name = 'em0']/test">good</div>
 </div>
 <div class="line">
   <div class="message">improper use of profanity; ten yard penalty; first down
@@ -43,155 +45,155 @@
 </div>
 <div class="line">
   <div class="text"> </div>
-  <div class="data" data-tag="lines" data-xpath="/top/data/lines">     20</div>
+  <div class="data" data-tag="lines" data-xpath="/top/data[name = 'em0  '][name = 'em0']/lines">     20</div>
   <div class="text"> </div>
-  <div class="data" data-tag="words" data-xpath="/top/data/words">     30</div>
+  <div class="data" data-tag="words" data-xpath="/top/data[name = 'em0  '][name = 'em0']/words">     30</div>
   <div class="text"> </div>
-  <div class="data" data-tag="characters" data-xpath="/top/data/characters">     40</div>
+  <div class="data" data-tag="characters" data-xpath="/top/data[name = 'em0  '][name = 'em0']/characters">     40</div>
   <div class="text"> </div>
-  <div class="data" data-tag="filename" data-xpath="/top/data/filename">file</div>
+  <div class="data" data-tag="filename" data-xpath="/top/data[name = 'em0  '][name = 'em0']/filename">file</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="bytes" data-xpath="/top/data/bytes">0</div>
+  <div class="data" data-tag="bytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/bytes">0</div>
   <div class="padding"> </div>
   <div class="note">bytes</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="bytes" data-xpath="/top/data/bytes">1</div>
+  <div class="data" data-tag="bytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/bytes">1</div>
   <div class="padding"> </div>
   <div class="note">byte</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="bytes" data-xpath="/top/data/bytes">2</div>
+  <div class="data" data-tag="bytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/bytes">2</div>
   <div class="padding"> </div>
   <div class="note">bytes</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="bytes" data-xpath="/top/data/bytes">3</div>
+  <div class="data" data-tag="bytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/bytes">3</div>
   <div class="padding"> </div>
   <div class="note">bytes</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="bytes" data-xpath="/top/data/bytes">4</div>
+  <div class="data" data-tag="bytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/bytes">4</div>
   <div class="padding"> </div>
   <div class="note">bytes</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="mbuf-current" data-xpath="/top/data/mbuf-current">10</div>
+  <div class="data" data-tag="mbuf-current" data-xpath="/top/data[name = 'em0  '][name = 'em0']/mbuf-current">10</div>
   <div class="text">/</div>
-  <div class="data" data-tag="mbuf-cache" data-xpath="/top/data/mbuf-cache">20</div>
+  <div class="data" data-tag="mbuf-cache" data-xpath="/top/data[name = 'em0  '][name = 'em0']/mbuf-cache">20</div>
   <div class="text">/</div>
-  <div class="data" data-tag="mbuf-total" data-xpath="/top/data/mbuf-total">30</div>
+  <div class="data" data-tag="mbuf-total" data-xpath="/top/data[name = 'em0  '][name = 'em0']/mbuf-total">30</div>
   <div class="text"> </div>
   <div class="note">mbufs &lt;&amp;&gt; in use (current/cache/total)</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="distance" data-units="miles" data-xpath="/top/data/distance">50</div>
+  <div class="data" data-tag="distance" data-units="miles" data-xpath="/top/data[name = 'em0  '][name = 'em0']/distance">50</div>
   <div class="padding"> </div>
   <div class="text"> from </div>
-  <div class="data" data-tag="location" data-xpath="/top/data/location">Boston</div>
+  <div class="data" data-tag="location" data-xpath="/top/data[name = 'em0  '][name = 'em0']/location">Boston</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="memory" data-units="k" data-xpath="/top/data/memory">64</div>
+  <div class="data" data-tag="memory" data-units="k" data-xpath="/top/data[name = 'em0  '][name = 'em0']/memory">64</div>
   <div class="text"> left out of </div>
-  <div class="data" data-tag="total" data-units="kb" data-xpath="/top/data/total">640</div>
+  <div class="data" data-tag="total" data-units="kb" data-xpath="/top/data[name = 'em0  '][name = 'em0']/total">640</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="memory" data-units="k" data-xpath="/top/data/memory">64</div>
+  <div class="data" data-tag="memory" data-units="k" data-xpath="/top/data[name = 'em0  '][name = 'em0']/memory">64</div>
   <div class="text"> left out of </div>
-  <div class="data" data-tag="total" data-units="kilobytes" data-xpath="/top/data/total">640</div>
+  <div class="data" data-tag="total" data-units="kilobytes" data-xpath="/top/data[name = 'em0  '][name = 'em0']/total">640</div>
 </div>
 <div class="line">
   <div class="title">beforeworkingafter:</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="some" data-xpath="/top/data/some">string</div>
+  <div class="data" data-tag="some" data-xpath="/top/data[name = 'em0  '][name = 'em0']/some">string</div>
   <div class="decoration">:</div>
   <div class="padding"> </div>
-  <div class="data" data-tag="ten" data-xpath="/top/data/ten">10</div>
-  <div class="data" data-tag="eleven" data-xpath="/top/data/eleven">11</div>
+  <div class="data" data-tag="ten" data-xpath="/top/data[name = 'em0  '][name = 'em0']/ten">10</div>
+  <div class="data" data-tag="eleven" data-xpath="/top/data[name = 'em0  '][name = 'em0']/eleven">11</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="unknown" data-xpath="/top/data/unknown">1010</div>
+  <div class="data" data-tag="unknown" data-xpath="/top/data[name = 'em0  '][name = 'em0']/unknown">1010</div>
   <div class="text"> </div>
   <div class="note">packets here/there/everywhere</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="unknown" data-xpath="/top/data/unknown">1010</div>
+  <div class="data" data-tag="unknown" data-xpath="/top/data[name = 'em0  '][name = 'em0']/unknown">1010</div>
   <div class="text"> </div>
   <div class="note">packets here/there/everywhere</div>
 </div>
 <div class="line">
   <div class="text">(</div>
   <div class="padding">                     </div>
-  <div class="data" data-tag="min" data-xpath="/top/data/min">15</div>
+  <div class="data" data-tag="min" data-xpath="/top/data[name = 'em0  '][name = 'em0']/min">15</div>
   <div class="text">/</div>
-  <div class="data" data-tag="cur" data-xpath="/top/data/cur">20</div>
+  <div class="data" data-tag="cur" data-xpath="/top/data[name = 'em0  '][name = 'em0']/cur">20</div>
   <div class="text">/</div>
-  <div class="data" data-tag="max" data-xpath="/top/data/max">125</div>
+  <div class="data" data-tag="max" data-xpath="/top/data[name = 'em0  '][name = 'em0']/max">125</div>
   <div class="text">)</div>
 </div>
 <div class="line">
   <div class="text">(</div>
   <div class="padding">                     </div>
-  <div class="data" data-tag="min" data-xpath="/top/data/min">15</div>
+  <div class="data" data-tag="min" data-xpath="/top/data[name = 'em0  '][name = 'em0']/min">15</div>
   <div class="text">/</div>
-  <div class="data" data-tag="cur" data-xpath="/top/data/cur">20</div>
+  <div class="data" data-tag="cur" data-xpath="/top/data[name = 'em0  '][name = 'em0']/cur">20</div>
   <div class="text">/</div>
-  <div class="data" data-tag="max" data-xpath="/top/data/max">125</div>
+  <div class="data" data-tag="max" data-xpath="/top/data[name = 'em0  '][name = 'em0']/max">125</div>
   <div class="text">)</div>
 </div>
 <div class="line">
   <div class="text">(</div>
-  <div class="data" data-tag="min" data-xpath="/top/data/min">15</div>
+  <div class="data" data-tag="min" data-xpath="/top/data[name = 'em0  '][name = 'em0']/min">15</div>
   <div class="text">/</div>
-  <div class="data" data-tag="cur" data-xpath="/top/data/cur">20</div>
+  <div class="data" data-tag="cur" data-xpath="/top/data[name = 'em0  '][name = 'em0']/cur">20</div>
   <div class="text">/</div>
-  <div class="data" data-tag="max" data-xpath="/top/data/max">125</div>
+  <div class="data" data-tag="max" data-xpath="/top/data[name = 'em0  '][name = 'em0']/max">125</div>
   <div class="padding">                     </div>
   <div class="text">)</div>
 </div>
 <div class="line">
   <div class="text">(</div>
-  <div class="data" data-tag="min" data-xpath="/top/data/min">15</div>
+  <div class="data" data-tag="min" data-xpath="/top/data[name = 'em0  '][name = 'em0']/min">15</div>
   <div class="text">/</div>
-  <div class="data" data-tag="cur" data-xpath="/top/data/cur">20</div>
+  <div class="data" data-tag="cur" data-xpath="/top/data[name = 'em0  '][name = 'em0']/cur">20</div>
   <div class="text">/</div>
-  <div class="data" data-tag="max" data-xpath="/top/data/max">125</div>
+  <div class="data" data-tag="max" data-xpath="/top/data[name = 'em0  '][name = 'em0']/max">125</div>
   <div class="padding">                     </div>
   <div class="text">)</div>
 </div>
 <div class="line">
   <div class="text">Humanize: </div>
-  <div class="data" data-tag="val1" data-xpath="/top/data/val1" data-number="21">21</div>
+  <div class="data" data-tag="val1" data-xpath="/top/data[name = 'em0  '][name = 'em0']/val1" data-number="21">21</div>
   <div class="text">, </div>
-  <div class="data" data-tag="val2" data-xpath="/top/data/val2" data-number="58368">57 K</div>
+  <div class="data" data-tag="val2" data-xpath="/top/data[name = 'em0  '][name = 'em0']/val2" data-number="58368">57 K</div>
   <div class="text">, </div>
-  <div class="data" data-tag="val3" data-xpath="/top/data/val3" data-number="100663296">96M</div>
+  <div class="data" data-tag="val3" data-xpath="/top/data[name = 'em0  '][name = 'em0']/val3" data-number="100663296">96M</div>
   <div class="text">, </div>
-  <div class="data" data-tag="val4" data-xpath="/top/data/val4" data-number="44470272">44M</div>
+  <div class="data" data-tag="val4" data-xpath="/top/data[name = 'em0  '][name = 'em0']/val4" data-number="44470272">44M</div>
   <div class="text">, </div>
-  <div class="data" data-tag="val5" data-xpath="/top/data/val5" data-number="1342172800">1.2G</div>
+  <div class="data" data-tag="val5" data-xpath="/top/data[name = 'em0  '][name = 'em0']/val5" data-number="1342172800">1.2G</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="flag" data-xpath="/top/data/flag">one</div>
+  <div class="data" data-tag="flag" data-xpath="/top/data[name = 'em0  '][name = 'em0']/flag">one</div>
   <div class="text"> </div>
-  <div class="data" data-tag="flag" data-xpath="/top/data/flag">two</div>
+  <div class="data" data-tag="flag" data-xpath="/top/data[name = 'em0  '][name = 'em0']/flag">two</div>
   <div class="text"> </div>
-  <div class="data" data-tag="flag" data-xpath="/top/data/flag">three</div>
+  <div class="data" data-tag="flag" data-xpath="/top/data[name = 'em0  '][name = 'em0']/flag">three</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="works" data-xpath="/top/data/works">(null)</div>
+  <div class="data" data-tag="works" data-xpath="/top/data[name = 'em0  '][name = 'em0']/works">(null)</div>
 </div>
 <div class="line">
   <div class="text">1:</div>
-  <div class="data" data-tag="t1" data-xpath="/top/data/t1">  1000</div>
+  <div class="data" data-tag="t1" data-xpath="/top/data[name = 'em0  '][name = 'em0']/t1">  1000</div>
   <div class="text"> 2:</div>
-  <div class="data" data-tag="t2" data-xpath="/top/data/t2">test5000    </div>
+  <div class="data" data-tag="t2" data-xpath="/top/data[name = 'em0  '][name = 'em0']/t2">test5000    </div>
   <div class="text"> 3:</div>
-  <div class="data" data-tag="t3" data-xpath="/top/data/t3">  ten-longx</div>
+  <div class="data" data-tag="t3" data-xpath="/top/data[name = 'em0  '][name = 'em0']/t3">  ten-longx</div>
   <div class="text"> 4:</div>
-  <div class="data" data-tag="t4" data-xpath="/top/data/t4">xtest      </div>
+  <div class="data" data-tag="t4" data-xpath="/top/data[name = 'em0  '][name = 'em0']/t4">xtest      </div>
 </div>
 <div class="line">
   <div class="error">this is an error</div>
@@ -208,10 +210,10 @@
 <div class="line">
   <div class="label">V1/V2 packets</div>
   <div class="text">: </div>
-  <div class="data" data-tag="count" data-xpath="/top/data/count">10</div>
+  <div class="data" data-tag="count" data-xpath="/top/data[name = 'em0  '][name = 'em0']/count">10</div>
 </div>
 <div class="line">
-  <div class="data" data-tag="test" data-xpath="/top/data/test">0004</div>
+  <div class="data" data-tag="test" data-xpath="/top/data[name = 'em0  '][name = 'em0']/test">0004</div>
   <div class="text"> </div>
   <div class="label">tries</div>
 </div>

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.HP.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,4 +1,6 @@
 <div class="line">
+  <div class="data" data-tag="name">em0  </div>
+  <div class="data">em0  </div>
   <div class="text">We are </div>
   <div class="text">{emit}</div>
   <div class="text">{ting}</div>

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.J.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1 +1 @@
-{"top": {"data": {"what":"braces","length":"abcdef","fd":-1,"error":"Bad file descriptor","test":"good","fd":-1,"error":"Bad fi","test":"good","lines":20,"words":30,"characters":40, "bytes": [0,1,2,3,4],"mbuf-current":10,"mbuf-cache":20,"mbuf-total":30,"distance":50,"location":"Boston","memory":64,"total":640,"memory":64,"total":640,"ten":10,"eleven":11,"unknown":1010,"unknown":1010,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"val1":21,"val2":58368,"val3":100663296,"val4":44470272,"val5":1342172800, "flag": ["one","two","three"],"works":null,"empty-tag":true,"t1":"1000","t2":"test5000","t3":"ten-longx","t4":"xtest", "__error": {"message":"this is an error"}, "__error": {"message":"two more errors"}, "__warning": {"message":"this is an warning"}, "__warning": {"message":"two more warnings"},"count":10,"test":4, "error": {"message":"Shut 'er down, Clancey!  She's a-pumpin' mud!  <>!,\"!<>\n"}}}}
+{"top": {"data": {"name":"em0","flags":"0x8843","name":"em0","flags":"0x8843","what":"braces","length":"abcdef","fd":-1,"error":"Bad file descriptor","test":"good","fd":-1,"error":"Bad fi","test":"good","lines":20,"words":30,"characters":40, "bytes": [0,1,2,3,4],"mbuf-current":10,"mbuf-cache":20,"mbuf-total":30,"distance":50,"location":"Boston","memory":64,"total":640,"memory":64,"total":640,"ten":10,"eleven":11,"unknown":1010,"unknown":1010,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"val1":21,"val2":58368,"val3":100663296,"val4":44470272,"val5":1342172800, "flag": ["one","two","three"],"works":null,"empty-tag":true,"t1":"1000","t2":"test5000","t3":"ten-longx","t4":"xtest", "__error": {"message":"this is an error"}, "__error": {"message":"two more errors"}, "__warning": {"message":"this is an warning"}, "__warning": {"message":"two more warnings"},"count":10,"test":4, "error": {"message":"Shut 'er down, Clancey!  S
 he's a-pumpin' mud!  <>!,\"!<>\n"}}}}

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.JP.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,6 +1,10 @@
 {
   "top": {
     "data": {
+      "name": "em0",
+      "flags": "0x8843",
+      "name": "em0",
+      "flags": "0x8843",
       "what": "braces",
       "length": "abcdef",
       "fd": -1,

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.err	Mon May  6 20:15:00 2019	(r347205)
@@ -1 +1,2 @@
+test_02.test: key field emitted after normal value field: 'name'
 Shut 'er down, Clancey!  She's a-pumpin' mud!  <>!,"!<>

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.T.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,4 +1,4 @@
-We are {emit}{ting} some braces
+em0  em0  We are {emit}{ting} some braces
 abcdef
 abcdef: Bad file descriptor
 improper use of profanity; ten yard penalty; first down

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.X.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,4 +1,4 @@
-<top><data><what>braces</what><message>abcdef
+<top><data><name>em0</name><flags>0x8843</flags><name>em0</name><flags>0x8843</flags><what>braces</what><message>abcdef
 </message><message>abcdef: Bad file descriptor
 </message><message>improper use of profanity; ten yard penalty; first down
 </message><length>abcdef</length><fd>-1</fd><error>Bad file descriptor</error><test>good</test><fd>-1</fd><error>Bad fi</error><test>good</test><message>improper use of profanity; ten yard penalty; first down

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.err
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.err	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.err	Mon May  6 20:15:00 2019	(r347205)
@@ -0,0 +1 @@
+test_02.test: key field emitted after normal value field: 'name'

Modified: vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.out
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.out	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/saved/test_02.XP.out	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,9 @@
 <top>
   <data>
+    <name>em0</name>
+    <flags>0x8843</flags>
+    <name>em0</name>
+    <flags>0x8843</flags>
     <what>braces</what>
   <message>abcdef
 </message>

Modified: vendor/Juniper/libxo/dist/tests/core/test_01.c
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/test_01.c	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/test_01.c	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Juniper Networks, Inc.
+ * Copyright (c) 2014-2019, Juniper Networks, Inc.
  * All rights reserved.
  * This SOFTWARE is licensed under the LICENSE provided in the
  * ../Copyright file. By downloading, installing, copying, or otherwise

Modified: vendor/Juniper/libxo/dist/tests/core/test_02.c
==============================================================================
--- vendor/Juniper/libxo/dist/tests/core/test_02.c	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/tests/core/test_02.c	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Juniper Networks, Inc.
+ * Copyright (c) 2014-2019, Juniper Networks, Inc.
  * All rights reserved.
  * This SOFTWARE is licensed under the LICENSE provided in the
  * ../Copyright file. By downloading, installing, copying, or otherwise
@@ -47,6 +47,12 @@ main (int argc, char **argv)
     xo_open_container_h(NULL, "top");
 
     xo_open_container("data");
+
+    xo_emit("{kt:name/%-*.*s}{eq:flags/0x%x}",
+	    5, 5, "em0", 34883);
+
+    xo_emit("{d:/%-*.*s}{etk:name}{eq:flags/0x%x}",
+	    5, 5, "em0", "em0", 34883);
 
     xo_emit("We are {{emit}}{{ting}} some {:what}\n", "braces");
 

Modified: vendor/Juniper/libxo/dist/xo/xo.c
==============================================================================
--- vendor/Juniper/libxo/dist/xo/xo.c	Mon May  6 20:01:13 2019	(r347204)
+++ vendor/Juniper/libxo/dist/xo/xo.c	Mon May  6 20:15:00 2019	(r347205)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018, Juniper Networks, Inc.
+ * Copyright (c) 2014-2019, Juniper Networks, Inc.
  * All rights reserved.
  * This SOFTWARE is licensed under the LICENSE provided in the
  * ../Copyright file. By downloading, installing, copying, or otherwise



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905062015.x46KF0j8035968>