Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 May 2025 10:32:17 -0400
From:      Phil Shafer <phil@juniper.net>
To:        Warner Losh <imp@freebsd.org>
Cc:        <src-committers@freebsd.org>, <dev-commits-src-all@freebsd.org>, <dev-commits-src-main@freebsd.org>
Subject:   Re: git: c759aca606ce - main - devinfo: Add support for libxo
Message-ID:  <0F9E0431-84E0-46E2-B28F-99F5A7DB70C5@juniper.net>
In-Reply-To: <202505062202.546M2O1b042545@gitrepo.freebsd.org>
References:  <202505062202.546M2O1b042545@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 6 May 2025, at 18:02, Warner Losh wrote:
> xo_emit(" <{d:%s}>", dev->dd_desc);

Missing the field name and the "/".

With "--libxo:W", you should see "foo: invalid XML tag name: '%s'".

Annoying, 'xolint' does not catch this.

+                       xo_emit(" <{d:%s}>", dev->dd_desc);
+                       xo_emit("{e:description/%s}", dev->dd_desc);


I'm not sure why you need both lines here, given that:

                       xo_emit("<{:description/%s}>", dev->dd_desc);

should suffice, since the "encoding" styles will not emit the surrounding text:

	% cat /tmp/foo.c
	#include <libxo/xo.h>

	int
	main (int argc, char **argv)
	{
	    xo_parse_args(argc, argv);

	    xo_open_container("data");
	    xo_emit(" <{:description/%s}>\n", argv[0]);
	    xo_close_container(NULL);
	    xo_finish();
	    return 0;
	}
	% /tmp/foo
	 </tmp/foo>
	% /tmp/foo --libxo:XPW
	<data>
	  <description>/tmp/foo</description>
	</data>
	% /tmp/foo --libxo:JPW
	{
	  "data": {
	    "description": "/tmp/foo"
	  }
	}
	%

The same issue ("{d:%s}") is repeated in print_rman, etc.

+       if (xo_finish() < 0) {
+               exit(1);
        }
        return(0);

Should I make a more convenient form, so one can just:

     return xo_finish_rc(); /* xo_finish_exit_code()? */

Thanks,
 Phil




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0F9E0431-84E0-46E2-B28F-99F5A7DB70C5>