Re: git: c759aca606ce - main - devinfo: Add support for libxo
- In reply to: Warner Losh : "git: c759aca606ce - main - devinfo: Add support for libxo"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 08 May 2025 14:32:17 UTC
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