Date: Tue, 03 Sep 2019 14:06:29 -0000 From: Enji Cooper <ngie@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346044 - in projects/runtime-coverage-v2: . contrib/bsnmp/lib contrib/elftoolchain/strings contrib/libxo contrib/libxo/doc contrib/libxo/libxo contrib/libxo/tests/core contrib/libxo/te... Message-ID: <201904082257.x38Mvbem097796@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ngie Date: Mon Apr 8 22:57:36 2019 New Revision: 346044 URL: https://svnweb.freebsd.org/changeset/base/346044 Log: MFhead@r346043 Added: projects/runtime-coverage-v2/contrib/libxo/libxo/xo_explicit.h - copied unchanged from r346043, head/contrib/libxo/libxo/xo_explicit.h projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.H.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.H.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.H.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.H.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HIPx.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HIPx.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.J.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.J.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.J.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.JP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.JP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.JP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.T.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.T.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.T.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.T.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.X.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.X.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.X.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.X.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.XP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.XP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.XP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.XP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/xo_02.sh - copied unchanged from r346043, head/contrib/libxo/tests/xo/xo_02.sh projects/runtime-coverage-v2/lib/libsecureboot/pass_manifest.c - copied unchanged from r346043, head/lib/libsecureboot/pass_manifest.c projects/runtime-coverage-v2/sys/security/mac_veriexec_parser/ - copied from r346043, head/sys/security/mac_veriexec_parser/ projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh - copied unchanged from r346043, head/tests/sys/geom/class/eli/online_resize_test.sh projects/runtime-coverage-v2/tools/build/options/WITHOUT_LLVM_TARGET_RISCV - copied unchanged from r346043, head/tools/build/options/WITHOUT_LLVM_TARGET_RISCV projects/runtime-coverage-v2/tools/build/options/WITH_LLVM_TARGET_RISCV - copied unchanged from r346043, head/tools/build/options/WITH_LLVM_TARGET_RISCV projects/runtime-coverage-v2/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST - copied unchanged from r346043, head/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST Modified: projects/runtime-coverage-v2/UPDATING projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c projects/runtime-coverage-v2/contrib/libxo/configure.ac projects/runtime-coverage-v2/contrib/libxo/doc/api.rst projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst projects/runtime-coverage-v2/contrib/libxo/libxo/Makefile.am projects/runtime-coverage-v2/contrib/libxo/libxo/libxo.c projects/runtime-coverage-v2/contrib/libxo/libxo/xo.h projects/runtime-coverage-v2/contrib/libxo/libxo/xo_attr.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_buf.h projects/runtime-coverage-v2/contrib/libxo/libxo/xo_emit.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_emit_f.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_finish.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_flush.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_container.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_list.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_marker.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_set_writer.3 projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_02.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_03.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_04.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_05.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_05.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_06.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_07.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_08.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_09.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_10.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_11.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.E.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.E.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.H.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.H.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HIPx.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.J.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.JP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.T.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.T.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.X.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.X.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.XP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.XP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/test_12.c projects/runtime-coverage-v2/contrib/libxo/tests/gettext/po/pig_latin/strerror.po projects/runtime-coverage-v2/contrib/libxo/tests/gettext/saved/gt_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/Makefile.am projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.H.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.T.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/xo_01.sh projects/runtime-coverage-v2/contrib/libxo/xo/xo.1 projects/runtime-coverage-v2/contrib/libxo/xo/xo.c projects/runtime-coverage-v2/contrib/sqlite3/Makefile.in projects/runtime-coverage-v2/contrib/sqlite3/Makefile.msc projects/runtime-coverage-v2/contrib/sqlite3/aclocal.m4 projects/runtime-coverage-v2/contrib/sqlite3/config.guess projects/runtime-coverage-v2/contrib/sqlite3/config.sub projects/runtime-coverage-v2/contrib/sqlite3/configure projects/runtime-coverage-v2/contrib/sqlite3/configure.ac projects/runtime-coverage-v2/contrib/sqlite3/depcomp projects/runtime-coverage-v2/contrib/sqlite3/install-sh projects/runtime-coverage-v2/contrib/sqlite3/ltmain.sh projects/runtime-coverage-v2/contrib/sqlite3/shell.c projects/runtime-coverage-v2/contrib/sqlite3/sqlite3.c projects/runtime-coverage-v2/contrib/sqlite3/sqlite3.h projects/runtime-coverage-v2/contrib/sqlite3/tea/configure projects/runtime-coverage-v2/contrib/sqlite3/tea/configure.ac projects/runtime-coverage-v2/contrib/sqlite3/tea/generic/tclsqlite3.c projects/runtime-coverage-v2/include/unistd.h projects/runtime-coverage-v2/lib/atf/libatf-c++/tests/Makefile projects/runtime-coverage-v2/lib/atf/libatf-c/tests/Makefile projects/runtime-coverage-v2/lib/clang/include/llvm/Config/AsmParsers.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/AsmPrinters.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/Disassemblers.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/Targets.def projects/runtime-coverage-v2/lib/clang/libllvm/Makefile projects/runtime-coverage-v2/lib/clang/llvm.build.mk projects/runtime-coverage-v2/lib/geom/eli/geli.8 projects/runtime-coverage-v2/lib/geom/eli/geom_eli.c projects/runtime-coverage-v2/lib/libbe/be.c projects/runtime-coverage-v2/lib/libc/net/getnameinfo.c projects/runtime-coverage-v2/lib/libc/sys/Makefile.inc projects/runtime-coverage-v2/lib/libc/sys/Symbol.map projects/runtime-coverage-v2/lib/libc/sys/unlink.2 projects/runtime-coverage-v2/lib/libdevctl/devctl.3 projects/runtime-coverage-v2/lib/libdevctl/devctl.c projects/runtime-coverage-v2/lib/libdevctl/devctl.h projects/runtime-coverage-v2/lib/libsecureboot/Makefile.libsa.inc projects/runtime-coverage-v2/lib/libsecureboot/h/verify_file.h projects/runtime-coverage-v2/lib/libsecureboot/libsecureboot-priv.h projects/runtime-coverage-v2/lib/libsecureboot/verify_file.c projects/runtime-coverage-v2/lib/libutil/pidfile.c projects/runtime-coverage-v2/lib/libvgl/bitmap.c projects/runtime-coverage-v2/lib/libxo/xo_config.h projects/runtime-coverage-v2/libexec/rc/network.subr projects/runtime-coverage-v2/libexec/rc/rc.conf projects/runtime-coverage-v2/libexec/rc/rc.d/abi projects/runtime-coverage-v2/libexec/rc/rc.d/bthidd projects/runtime-coverage-v2/libexec/rc/rc.d/cfumass projects/runtime-coverage-v2/libexec/rc/rc.d/kld projects/runtime-coverage-v2/libexec/rc/rc.d/mdconfig projects/runtime-coverage-v2/libexec/rc/rc.d/mdconfig2 projects/runtime-coverage-v2/libexec/rc/rc.d/mountcritremote projects/runtime-coverage-v2/libexec/rc/rc.d/syscons projects/runtime-coverage-v2/libexec/rc/rc.subr projects/runtime-coverage-v2/release/Makefile.vm projects/runtime-coverage-v2/release/tools/ec2.conf projects/runtime-coverage-v2/release/tools/vmimage.subr projects/runtime-coverage-v2/sbin/bectl/bectl.8 projects/runtime-coverage-v2/sbin/fsck_msdosfs/dir.c projects/runtime-coverage-v2/sbin/fsck_msdosfs/fat.c projects/runtime-coverage-v2/sbin/mount/mount.c projects/runtime-coverage-v2/share/man/man4/intro.4 projects/runtime-coverage-v2/share/man/man5/rc.conf.5 projects/runtime-coverage-v2/share/man/man5/src.conf.5 projects/runtime-coverage-v2/share/mk/src.opts.mk projects/runtime-coverage-v2/stand/common/boot.c projects/runtime-coverage-v2/stand/common/module.c projects/runtime-coverage-v2/stand/efi/loader/main.c projects/runtime-coverage-v2/stand/loader.mk projects/runtime-coverage-v2/sys/amd64/conf/NOTES projects/runtime-coverage-v2/sys/amd64/vmm/io/ppt.c projects/runtime-coverage-v2/sys/arm/ti/cpsw/if_cpsw.c projects/runtime-coverage-v2/sys/cam/ata/ata_all.c projects/runtime-coverage-v2/sys/cddl/compat/opensolaris/sys/vnode.h projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/runtime-coverage-v2/sys/compat/cloudabi/cloudabi_file.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_syscall.h projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_syscalls.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_sysent.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c projects/runtime-coverage-v2/sys/compat/freebsd32/syscalls.master projects/runtime-coverage-v2/sys/compat/linux/linux_file.c projects/runtime-coverage-v2/sys/compat/linuxkpi/common/include/linux/etherdevice.h projects/runtime-coverage-v2/sys/compat/linuxkpi/common/include/linux/random.h projects/runtime-coverage-v2/sys/conf/files projects/runtime-coverage-v2/sys/conf/newvers.sh projects/runtime-coverage-v2/sys/contrib/dev/acpica/changes.txt projects/runtime-coverage-v2/sys/contrib/dev/acpica/common/adisasm.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcompile.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asldefine.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslerror.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslfileio.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslfiles.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslglobal.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asllisting.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslload.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmain.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmessages.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmessages.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asloperands.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asloptions.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslstartup.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslsupport.l projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asltree.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asltypes.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslutils.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslxref.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/dtcompile.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/prutils.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/components/events/evgpe.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/components/namespace/nsalloc.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/include/acpixf.h projects/runtime-coverage-v2/sys/dev/fdt/fdt_common.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/a10_twsi.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/twsi.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/twsi.h projects/runtime-coverage-v2/sys/dev/pci/pci.c projects/runtime-coverage-v2/sys/dev/pci/pci_pci.c projects/runtime-coverage-v2/sys/dev/pci/pcivar.h projects/runtime-coverage-v2/sys/dev/smartpqi/smartpqi_cam.c projects/runtime-coverage-v2/sys/dev/smartpqi/smartpqi_defines.h projects/runtime-coverage-v2/sys/dev/tpm/tpm20.c projects/runtime-coverage-v2/sys/dev/usb/net/if_muge.c projects/runtime-coverage-v2/sys/dev/usb/net/if_urereg.h projects/runtime-coverage-v2/sys/fs/fuse/fuse_vfsops.c projects/runtime-coverage-v2/sys/fs/msdosfs/msdosfs_denode.c projects/runtime-coverage-v2/sys/fs/nfs/nfs.h projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonkrpc.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonport.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonsubs.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_var.h projects/runtime-coverage-v2/sys/fs/nfsclient/nfs_clport.c projects/runtime-coverage-v2/sys/geom/eli/g_eli.c projects/runtime-coverage-v2/sys/geom/eli/g_eli.h projects/runtime-coverage-v2/sys/geom/eli/g_eli_ctl.c projects/runtime-coverage-v2/sys/geom/eli/g_eli_key_cache.c projects/runtime-coverage-v2/sys/i386/conf/NOTES projects/runtime-coverage-v2/sys/kern/bus_if.m projects/runtime-coverage-v2/sys/kern/capabilities.conf projects/runtime-coverage-v2/sys/kern/imgact_elf.c projects/runtime-coverage-v2/sys/kern/init_sysent.c projects/runtime-coverage-v2/sys/kern/kern_exit.c projects/runtime-coverage-v2/sys/kern/subr_bus.c projects/runtime-coverage-v2/sys/kern/subr_pctrie.c projects/runtime-coverage-v2/sys/kern/syscalls.c projects/runtime-coverage-v2/sys/kern/syscalls.master projects/runtime-coverage-v2/sys/kern/systrace_args.c projects/runtime-coverage-v2/sys/kern/vfs_mountroot.c projects/runtime-coverage-v2/sys/kern/vfs_syscalls.c projects/runtime-coverage-v2/sys/kern/vfs_vnops.c projects/runtime-coverage-v2/sys/modules/geom/geom_label/Makefile projects/runtime-coverage-v2/sys/net/if_spppsubr.c projects/runtime-coverage-v2/sys/netinet/in.c projects/runtime-coverage-v2/sys/netinet/ip_input.c projects/runtime-coverage-v2/sys/netinet/ip_output.c projects/runtime-coverage-v2/sys/netinet/netdump/netdump_client.c projects/runtime-coverage-v2/sys/netinet/tcp_output.c projects/runtime-coverage-v2/sys/netipsec/key.c projects/runtime-coverage-v2/sys/netipsec/key.h projects/runtime-coverage-v2/sys/netipsec/xform_esp.c projects/runtime-coverage-v2/sys/netpfil/ipfw/nat64/nat64_translate.h projects/runtime-coverage-v2/sys/netpfil/pf/pf.c projects/runtime-coverage-v2/sys/powerpc/fpu/fpu_sqrt.c projects/runtime-coverage-v2/sys/powerpc/include/trap.h projects/runtime-coverage-v2/sys/powerpc/powernv/opal.h projects/runtime-coverage-v2/sys/powerpc/powernv/opal_async.c projects/runtime-coverage-v2/sys/powerpc/powernv/opal_flash.c projects/runtime-coverage-v2/sys/powerpc/powerpc/exec_machdep.c projects/runtime-coverage-v2/sys/powerpc/powerpc/trap.c projects/runtime-coverage-v2/sys/riscv/include/pcpu.h projects/runtime-coverage-v2/sys/riscv/riscv/machdep.c projects/runtime-coverage-v2/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/runtime-coverage-v2/sys/sparc64/conf/NOTES projects/runtime-coverage-v2/sys/sys/ata.h projects/runtime-coverage-v2/sys/sys/bus.h projects/runtime-coverage-v2/sys/sys/fcntl.h projects/runtime-coverage-v2/sys/sys/param.h projects/runtime-coverage-v2/sys/sys/pctrie.h projects/runtime-coverage-v2/sys/sys/syscall.h projects/runtime-coverage-v2/sys/sys/syscall.mk projects/runtime-coverage-v2/sys/sys/syscallsubr.h projects/runtime-coverage-v2/sys/sys/sysproto.h projects/runtime-coverage-v2/sys/ufs/ffs/ffs_alloc.c projects/runtime-coverage-v2/sys/ufs/ffs/ffs_vfsops.c projects/runtime-coverage-v2/sys/vm/vm_map.c projects/runtime-coverage-v2/tests/sys/geom/class/eli/Makefile projects/runtime-coverage-v2/tests/sys/geom/class/eli/configure_test.sh projects/runtime-coverage-v2/tests/sys/kern/ptrace_test.c projects/runtime-coverage-v2/tools/build/Makefile projects/runtime-coverage-v2/usr.bin/rctl/rctl.c projects/runtime-coverage-v2/usr.bin/sort/coll.c projects/runtime-coverage-v2/usr.bin/strings/Makefile projects/runtime-coverage-v2/usr.bin/xohtml/xohtml.sh projects/runtime-coverage-v2/usr.sbin/bhyve/Makefile projects/runtime-coverage-v2/usr.sbin/bhyve/pci_nvme.c projects/runtime-coverage-v2/usr.sbin/bhyve/uart_emul.c projects/runtime-coverage-v2/usr.sbin/devctl/devctl.8 projects/runtime-coverage-v2/usr.sbin/devctl/devctl.c projects/runtime-coverage-v2/usr.sbin/nfsuserd/Makefile projects/runtime-coverage-v2/usr.sbin/nfsuserd/nfsuserd.8 projects/runtime-coverage-v2/usr.sbin/nfsuserd/nfsuserd.c projects/runtime-coverage-v2/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/runtime-coverage-v2/ (props changed) projects/runtime-coverage-v2/contrib/elftoolchain/ (props changed) projects/runtime-coverage-v2/contrib/libxo/ (props changed) projects/runtime-coverage-v2/contrib/sqlite3/ (props changed) projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/ (props changed) projects/runtime-coverage-v2/sys/contrib/dev/acpica/ (props changed) Modified: projects/runtime-coverage-v2/UPDATING ============================================================================== --- projects/runtime-coverage-v2/UPDATING Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/UPDATING Mon Apr 8 22:57:36 2019 (r346044) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20190404: + r345895 reverts r320698. This implies that an nfsuserd(8) daemon + built from head sources between r320757 (July 6, 2017) and + r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" + is added to the command line. + nfsuserd daemons built from head sources that are post-r338192 are + not affected and should continue to work. + 20190320: The fuse(4) module has been renamed to fusefs(4) for consistency with other filesystems. You should update any kld_load="fuse" entries in Modified: projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c ============================================================================== --- projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c Mon Apr 8 22:57:36 2019 (r346044) @@ -1874,38 +1874,47 @@ snmp_client_set_port(struct snmp_client *cl, const cha return (0); } +static const char *const trans_list[] = { + [SNMP_TRANS_UDP] = "udp::", + [SNMP_TRANS_LOC_DGRAM] = "dgram::", + [SNMP_TRANS_LOC_STREAM] = "stream::", + [SNMP_TRANS_UDP6] = "udp6::", +}; + /** * Try to get a transport identifier which is a leading alphanumeric string - * (starting with '_' or a letter and including also '_') terminated by - * a double colon. The string may not be empty. The transport identifier - * is optional. + * terminated by a double colon. The string may not be empty. The transport + * identifier is optional. * * \param sc client struct to set errors * \param strp possible start of transport; updated to point to * the next character to parse * - * \return end of transport; equals *strp if there is none; NULL if there - * was an error + * \return transport identifier */ -static inline const char * +static inline int get_transp(struct snmp_client *sc, const char **strp) { - const char *p = *strp; + const char *p; + size_t i; - if (isascii(*p) && (isalpha(*p) || *p == '_')) { - p++; - while (isascii(*p) && (isalnum(*p) || *p == '_')) - p++; - if (p[0] == ':' && p[1] == ':') { - *strp = p + 2; - return (p); + for (i = 0; i < nitems(trans_list); i++) { + if (trans_list[i] == NULL || *trans_list[i] == '\0') + continue; + p = strstr(*strp, trans_list[i]); + if (p == *strp) { + *strp += strlen(trans_list[i]); + return ((int)i); } } + + p = *strp; if (p[0] == ':' && p[1] == ':') { seterr(sc, "empty transport specifier"); - return (NULL); + return (-1); } - return (*strp); + /* by default assume UDP */ + return (SNMP_TRANS_UDP); } /** @@ -2143,24 +2152,13 @@ save_str(struct snmp_client *sc, const char *const s[2 int snmp_parse_server(struct snmp_client *sc, const char *str) { -#if DEBUG_PARSE const char *const orig = str; -#endif - - const char *const trans_list[] = { - [SNMP_TRANS_UDP] = "udp", - [SNMP_TRANS_LOC_DGRAM] = "dgram", - [SNMP_TRANS_LOC_STREAM] = "stream", - [SNMP_TRANS_UDP6] = "udp6", - }; - /* parse input */ - const char *const transp[2] = { - str, - get_transp(sc, &str), - }; - if (transp[1] == NULL) + int i, trans = get_transp(sc, &str); + if (trans < 0) return (-1); + /* choose automatically */ + i = orig == str ? -1: trans; const char *const comm[2] = { str, @@ -2206,7 +2204,7 @@ snmp_parse_server(struct snmp_client *sc, const char * } #if DEBUG_PARSE - printf("transp: %zu %zu\n", transp[0] - orig, transp[1] - orig); + printf("transp: %u\n", trans); printf("comm: %zu %zu\n", comm[0] - orig, comm[1] - orig); printf("ipv6: %zu %zu\n", ipv6[0] - orig, ipv6[1] - orig); printf("ipv4: %zu %zu\n", ipv4[0] - orig, ipv4[1] - orig); @@ -2215,69 +2213,73 @@ snmp_parse_server(struct snmp_client *sc, const char * #endif /* analyse and allocate */ - int i = -1; - if (transp[0] != transp[1]) { - for (i = 0; i < (int)nitems(trans_list); i++) { - if (trans_list[i] != NULL && - strlen(trans_list[i]) == (size_t)(transp[1] - - transp[0]) && !strncmp(trans_list[i], transp[0], - transp[1] - transp[0])) - break; - } - - if (i == (int)nitems(trans_list)) { - seterr(sc, "unknown transport specifier '%.*s'", - transp[1] - transp[0], transp[0]); - return (-1); - } - } - char *chost; if (ipv6[0] != ipv6[1]) { if ((chost = save_str(sc, ipv6)) == NULL) return (-1); - if (i == -1) - i = SNMP_TRANS_UDP6; + if (i == -1 || trans == SNMP_TRANS_UDP) + trans = SNMP_TRANS_UDP6; } else if (ipv4[0] != ipv4[1]) { if ((chost = save_str(sc, ipv4)) == NULL) return (-1); if (i == -1) - i = SNMP_TRANS_UDP; + trans = SNMP_TRANS_UDP; } else { if ((chost = save_str(sc, host)) == NULL) return (-1); if (i == -1) { - /* Default transport is UDP unless the host contains - * a slash in which case we default to DGRAM. */ - i = SNMP_TRANS_UDP; + /* + * Default transport is UDP unless the host contains + * a slash in which case we default to DGRAM. + */ for (const char *p = host[0]; p < host[1]; p++) if (*p == '/') { - i = SNMP_TRANS_LOC_DGRAM; + trans = SNMP_TRANS_LOC_DGRAM; break; } } } - char *cport = save_str(sc, port); + char *cport; + + if (port[0] == port[1] && ( + trans == SNMP_TRANS_UDP || trans == SNMP_TRANS_UDP6)) { + /* If port was not specified, use "snmp" name by default */ + cport = strdup("snmp"); + } else + cport = save_str(sc, port); + if (cport == NULL) { free(chost); return (-1); } /* commit */ - sc->trans = i; + sc->trans = trans; + /* + * If community string was specified and it is empty, overwrite it. + * If it was not specified, use default. + */ + if (comm[0] != comm[1] || strrchr(comm[0], '@') != NULL) { + strncpy(sc->read_community, comm[0], comm[1] - comm[0]); + sc->read_community[comm[1] - comm[0]] = '\0'; + strncpy(sc->write_community, comm[0], comm[1] - comm[0]); + sc->write_community[comm[1] - comm[0]] = '\0'; + } - strncpy(sc->read_community, comm[0], comm[1] - comm[0]); - sc->read_community[comm[1] - comm[0]] = '\0'; - strncpy(sc->write_community, comm[0], comm[1] - comm[0]); - sc->write_community[comm[1] - comm[0]] = '\0'; - free(sc->chost); sc->chost = chost; free(sc->cport); sc->cport = cport; +#if DEBUG_PARSE + printf("Committed values:\n"); + printf("trans: %u\n", sc->trans); + printf("comm: '%s'/'%s'\n", sc->read_community, sc->write_community); + printf("host: '%s'\n", sc->chost); + printf("port: '%s'\n", sc->cport); +#endif return (0); } Modified: projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c ============================================================================== --- projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c Mon Apr 8 22:57:36 2019 (r346044) @@ -25,8 +25,10 @@ */ #include <sys/types.h> +#include <sys/capsicum.h> #include <sys/stat.h> +#include <capsicum_helpers.h> #include <ctype.h> #include <err.h> #include <errno.h> @@ -44,6 +46,9 @@ #include <libelftc.h> #include <gelf.h> +#include <libcasper.h> +#include <casper/cap_fileargs.h> + #include "_elftc.h" ELFTC_VCSID("$Id: strings.c 3648 2018-11-22 23:26:43Z emaste $"); @@ -85,7 +90,7 @@ static struct option strings_longopts[] = { }; int getcharacter(FILE *, long *); -int handle_file(const char *); +int handle_file(fileargs_t *fa, const char *); int handle_elf(const char *, FILE *); int handle_binary(const char *, FILE *, size_t); int find_strings(const char *, FILE *, off_t, off_t); @@ -99,6 +104,8 @@ void usage(void); int main(int argc, char **argv) { + fileargs_t *fa; + cap_rights_t rights; int ch, rc; rc = 0; @@ -187,27 +194,41 @@ main(int argc, char **argv) argc -= optind; argv += optind; + cap_rights_init(&rights, CAP_READ, CAP_SEEK, CAP_FSTAT, CAP_FCNTL); + fa = fileargs_init(argc, argv, O_RDONLY, 0, &rights); + if (fa == NULL) + err(1, "Unable to initialize casper fileargs"); + + caph_cache_catpages(); + if (caph_limit_stdio() < 0 && caph_enter_casper() < 0) { + fileargs_free(fa); + err(1, "Unable to enter capability mode"); + } + if (min_len == 0) min_len = 4; if (*argv == NULL) rc = find_strings("{standard input}", stdin, 0, 0); else while (*argv != NULL) { - if (handle_file(*argv) != 0) + if (handle_file(fa, *argv) != 0) rc = 1; argv++; } + + fileargs_free(fa); + return (rc); } int -handle_file(const char *name) +handle_file(fileargs_t *fa, const char *name) { FILE *pfile; int rt; if (name == NULL) return (1); - pfile = fopen(name, "rb"); + pfile = fileargs_fopen(fa, name, "rb"); if (pfile == NULL) { warnx("'%s': %s", name, strerror(errno)); return (1); Modified: projects/runtime-coverage-v2/contrib/libxo/configure.ac ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/configure.ac Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/configure.ac Mon Apr 8 22:57:36 2019 (r346044) @@ -12,7 +12,7 @@ # AC_PREREQ(2.2) -AC_INIT([libxo], [0.9.0], [phil@juniper.net]) +AC_INIT([libxo], [1.0.2], [phil@juniper.net]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) # Support silent build rules. Requires at least automake-1.11. Modified: projects/runtime-coverage-v2/contrib/libxo/doc/api.rst ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/api.rst Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/api.rst Mon Apr 8 22:57:36 2019 (r346044) @@ -400,28 +400,28 @@ string, since an inappropriate cast can ruin your day. argument to `xo_emit_hv` points to a variable argument list that can be used to retrieve arguments via `va_arg`. -.. c:function:: int xo_emit (const char *fmt, ...) +.. c:function:: xo_ssize_t xo_emit (const char *fmt, ...) :param fmt: The format string, followed by zero or more arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_h (xo_handle_t *xop, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_emit_h (xo_handle_t *xop, const char *fmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* :param fmt: The format string, followed by zero or more arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_hv (xo_handle_t *xop, const char *fmt, va_list vap) +.. c:function:: xo_ssize_t xo_emit_hv (xo_handle_t *xop, const char *fmt, va_list vap) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* :param fmt: The format string :param va_list vap: A set of variadic arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t .. index:: xo_emit_field @@ -434,7 +434,7 @@ scenario where one would otherwise need to compose a f descriptors using `snprintf`. The individual parts of the format descriptor are passed in distinctly. -.. c:function:: int xo_emit_field (const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) +.. c:function:: xo_ssize_t xo_emit_field (const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) :param rolmod: A comma-separated list of field roles and field modifiers :type rolmod: const char * @@ -445,7 +445,7 @@ descriptor are passed in distinctly. :param efmt: Encoding format string, followed by additional arguments :type efmt: const char * :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t :: @@ -453,7 +453,7 @@ descriptor are passed in distinctly. xo_emit_field("T", "Host name is ", NULL, NULL); xo_emit_field("V", "host-name", NULL, NULL, host-name); -.. c:function:: int xo_emit_field_h (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) +.. c:function:: xo_ssize_t xo_emit_field_h (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -466,9 +466,9 @@ descriptor are passed in distinctly. :param efmt: Encoding format string, followed by additional arguments :type efmt: const char * :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_field_hv (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, va_list vap) +.. c:function:: xo_ssize_t xo_emit_field_hv (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, va_list vap) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -482,7 +482,7 @@ descriptor are passed in distinctly. :type efmt: const char * :param va_list vap: A set of variadic arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t .. index:: xo_attr .. _xo_attr: @@ -505,14 +505,14 @@ Since attributes are only emitted in XML, their use sh to meta-data and additional or redundant representations of data already emitted in other form. -.. c:function:: int xo_attr (const char *name, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_attr (const char *name, const char *fmt, ...) :param name: Attribute name :type name: const char * :param fmt: Attribute value, as variadic arguments :type fmt: const char * :returns: -1 for error, or the number of bytes in the formatted attribute value - :rtype: int + :rtype: xo_ssize_t :: @@ -525,7 +525,7 @@ already emitted in other form. <login-time seconds="1408336270">00:14</login-time> -.. c:function:: int xo_attr_h (xo_handle_t *xop, const char *name, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_attr_h (xo_handle_t *xop, const char *name, const char *fmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -533,7 +533,7 @@ already emitted in other form. The `xo_attr_h` function follows the conventions of `xo_attr` but adds an explicit libxo handle. -.. c:function:: int xo_attr_hv (xo_handle_t *xop, const char *name, const char *fmt, va_list vap) +.. c:function:: xo_ssize_t xo_attr_hv (xo_handle_t *xop, const char *name, const char *fmt, va_list vap) The `xo_attr_h` function follows the conventions of `xo_attr_h` but replaced the variadic list with a variadic pointer. Modified: projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html Mon Apr 8 22:57:36 2019 (r346044) @@ -515,7 +515,7 @@ li.indline1 { } @top-right { - content: "May 2018"; + content: "April 2019"; } @top-center { @@ -22011,7 +22011,7 @@ jQuery(function ($) { </tr> <tr> <td class="header left"></td> -<td class="header right">May 21, 2018</td> +<td class="header right">April 2, 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: projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst Mon Apr 8 22:57:36 2019 (r346044) @@ -75,7 +75,7 @@ prepend data to the XPath values used for HTML output EXAMPLE; #!/bin/sh xo --open top/data - xo --depth 2 '{tag}' value + xo --depth 2 '{:tag}' value xo --close top/data XML: <top> @@ -90,6 +90,84 @@ prepend data to the XPath values used for HTML output } } +When making partial lines of output (where the format string does not +include a newline), use the `--continuation` option to let secondary +invocations know they are adding data to an existing line. + +When emitting a series of objects, use the `--not-first` option to +ensure that any details from the previous object (e.g. commas in JSON) +are handled correctly. + +Use the `--top-wrap` option to ensure any top-level object details are +handled correctly, e.g. wrap the entire output in a top-level set of +braces for JSON output. + + EXAMPLE; + #!/bin/sh + xo --top-wrap --open top/data + xo --depth 2 'First {:tag} ' value1 + xo --depth 2 --continuation 'and then {:tag}\n' value2 + xo --top-wrap --close top/data + TEXT: + First value1 and then value2 + HTML: + <div class="line"> + <div class="text">First </div> + <div class="data" data-tag="tag">value1</div> + <div class="text"> </div> + <div class="text">and then </div> + <div class="data" data-tag="tag">value2</div> + </div> + XML: + <top> + <data> + <tag>value1</tag> + <tag>value2</tag> + </data> + </top> + JSON: + { + "top": { + "data": { + "tag": "value1", + "tag": "value2" + } + } + } + +Lists and Instances +------------------- + +A "*list*" is set of one or more instances that appear under the same +parent. The instances contain details about a specific object. One +can think of instances as objects or records. A call is needed to +open and close the list, while a distinct call is needed to open and +close each instance of the list. + +Use the `--open-list` and `--open-instances` to open lists and +instances. Use the `--close-list` and `--close-instances` to close +them. Each of these options take a `name` parameter, providing the +name of the list and instance. + +In the following example, a list named "machine" is created with three +instances: + + opts="--json" + xo $opts --open-list machine + NF= + for name in red green blue; do + xo $opts --depth 1 $NF --open-instance machine + xo $opts --depth 2 "Machine {k:name} has {:memory}\n" $name 55 + xo $opts --depth 1 --close-instance machine + NF=--not-first + done + xo $opts $NF --close-list machine + +The normal `libxo` functions use a state machine to help these +transitions, but since each `xo` command is invoked independent of the +previous calls, the state must be passed in explicitly via these +command line options. + Command Line Options -------------------- @@ -97,15 +175,23 @@ Command Line Options Usage: xo [options] format [fields] --close <path> Close tags for the given path + --close-instance <name> Close an open instance name + --close-list <name> Close an open list name + --continuation OR -C Output belongs on same line as previous output --depth <num> Set the depth for pretty printing --help Display this help text --html OR -H Generate HTML output --json OR -J Generate JSON output --leading-xpath <path> Add a prefix to generated XPaths (HTML) + --not-first Indicate this object is not the first (JSON) --open <path> Open tags for the given path + --open-instance <name> Open an instance given by name + --open-list <name> Open a list given by name + --option <opts> -or -O <opts> Give formatting options --pretty OR -p Make 'pretty' output (add indent, newlines) --style <style> Generate given style (xml, json, text, html) --text OR -T Generate text output (the default style) + --top-wrap Generate a top-level object wrapper (JSON) --version Display version information --warn OR -W Display warnings in text on stderr --warn-xml Display warnings in xml on stdout Modified: projects/runtime-coverage-v2/contrib/libxo/libxo/Makefile.am ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/libxo/Makefile.am Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/libxo/Makefile.am Mon Apr 8 22:57:36 2019 (r346044) @@ -35,6 +35,7 @@ libxoinc_HEADERS = \ noinst_HEADERS = \ xo_buf.h \ + xo_explicit.h \ xo_humanize.h \ xo_wcwidth.h Modified: projects/runtime-coverage-v2/contrib/libxo/libxo/libxo.c ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/libxo/libxo.c Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/libxo/libxo.c Mon Apr 8 22:57:36 2019 (r346044) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, Juniper Networks, Inc. + * Copyright (c) 2014-2018, 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,7 @@ #include "xo.h" #include "xo_encoder.h" #include "xo_buf.h" +#include "xo_explicit.h" /* * We ask wcwidth() to do an impossible job, really. It's supposed to @@ -158,40 +159,9 @@ typedef unsigned xo_xsf_flags_t; /* XSF_* flags */ (XSF_NOT_FIRST | XSF_CONTENT | XSF_EMIT | XSF_EMIT_KEY | XSF_EMIT_LEAF_LIST ) /* - * A word about states: We use a finite state machine (FMS) approach - * to help remove fragility from the caller's code. Instead of - * requiring a specific order of calls, we'll allow the caller more - * flexibility and make the library responsible for recovering from - * missed steps. The goal is that the library should not be capable - * of emitting invalid xml or json, but the developer shouldn't need - * to know or understand all the details about these encodings. - * - * You can think of states as either states or events, since they - * function rather like both. None of the XO_CLOSE_* events will - * persist as states, since the matching stack frame will be popped. - * Same is true of XSS_EMIT, which is an event that asks us to - * prep for emitting output fields. + * Turn the transition between two states into a number suitable for + * a "switch" statement. */ - -/* Stack frame states */ -typedef unsigned xo_state_t; -#define XSS_INIT 0 /* Initial stack state */ -#define XSS_OPEN_CONTAINER 1 -#define XSS_CLOSE_CONTAINER 2 -#define XSS_OPEN_LIST 3 -#define XSS_CLOSE_LIST 4 -#define XSS_OPEN_INSTANCE 5 -#define XSS_CLOSE_INSTANCE 6 -#define XSS_OPEN_LEAF_LIST 7 -#define XSS_CLOSE_LEAF_LIST 8 -#define XSS_DISCARDING 9 /* Discarding data until recovered */ -#define XSS_MARKER 10 /* xo_open_marker's marker */ -#define XSS_EMIT 11 /* xo_emit has a leaf field */ -#define XSS_EMIT_LEAF_LIST 12 /* xo_emit has a leaf-list ({l:}) */ -#define XSS_FINISH 13 /* xo_finish was called */ - -#define XSS_MAX 13 - #define XSS_TRANSITION(_old, _new) ((_old) << 8 | (_new)) /* @@ -288,8 +258,8 @@ struct xo_handle_s { ssize_t xo_units_offset; /* Start of units insertion point */ ssize_t xo_columns; /* Columns emitted during this xo_emit call */ #ifndef LIBXO_TEXT_ONLY - uint8_t xo_color_map_fg[XO_NUM_COLORS]; /* Foreground color mappings */ - uint8_t xo_color_map_bg[XO_NUM_COLORS]; /* Background color mappings */ + xo_color_t xo_color_map_fg[XO_NUM_COLORS]; /* Foreground color mappings */ + xo_color_t xo_color_map_bg[XO_NUM_COLORS]; /* Background color mappings */ #endif /* LIBXO_TEXT_ONLY */ xo_colors_t xo_colors; /* Current color and effect values */ xo_buffer_t xo_color_buf; /* HTML: buffer of colors and effects */ @@ -321,6 +291,7 @@ struct xo_handle_s { #define XOIF_UNITS_PENDING XOF_BIT(4) /* We have a units-insertion pending */ #define XOIF_INIT_IN_PROGRESS XOF_BIT(5) /* Init of handle is in progress */ +#define XOIF_MADE_OUTPUT XOF_BIT(6) /* Have already made output */ /* Flags for formatting functions */ typedef unsigned long xo_xff_flags_t; @@ -468,7 +439,7 @@ static void xo_failure (xo_handle_t *xop, const char *fmt, ...); static ssize_t -xo_transition (xo_handle_t *xop, xo_xsf_flags_t flags, const char *name, +xo_transition (xo_handle_t *xop, xo_xof_flags_t flags, const char *name, xo_state_t new_state); static int @@ -506,6 +477,20 @@ xo_style (xo_handle_t *xop UNUSED) } /* + * Allow the compiler to optimize out non-text-only code while + * still compiling it. + */ +static inline int +xo_text_only (void) +{ +#ifdef LIBXO_TEXT_ONLY + return TRUE; +#else /* LIBXO_TEXT_ONLY */ + return FALSE; +#endif /* LIBXO_TEXT_ONLY */ +} + +/* * Callback to write data to a FILE pointer */ static xo_ssize_t @@ -607,6 +592,28 @@ xo_no_setlocale (void) } /* + * For XML, the first character of a tag cannot be numeric, but people + * will likely not notice. So we people-proof them by forcing a leading + * underscore if they use invalid tags. Note that this doesn't cover + * all broken tags, just this fairly specific case. + */ +static const char * +xo_xml_leader_len (xo_handle_t *xop, const char *name, xo_ssize_t nlen) +{ + if (name == NULL || isalpha(name[0]) || name[0] == '_') + return ""; + + xo_failure(xop, "invalid XML tag name: '%.*s'", nlen, name); + return "_"; +} + +static const char * +xo_xml_leader (xo_handle_t *xop, const char *name) +{ + return xo_xml_leader_len(xop, name, strlen(name)); +} + +/* * We need to decide if stdout is line buffered (_IOLBF). Lacking a * standard way to decide this (e.g. getlinebuf()), we have configure * look to find __flbf, which glibc supported. If not, we'll rely on @@ -2194,9 +2201,8 @@ xo_set_style_name (xo_handle_t *xop, const char *name) static void xo_set_color_map (xo_handle_t *xop, char *value) { -#ifdef LIBXO_TEXT_ONLY - return; -#endif /* LIBXO_TEXT_ONLY */ + if (xo_text_only()) + return; char *cp, *ep, *vp, *np; ssize_t len = value ? strlen(value) + 1 : 0; @@ -2214,8 +2220,11 @@ xo_set_color_map (xo_handle_t *xop, char *value) fg = *cp ? xo_color_find(cp) : -1; bg = (vp && *vp) ? xo_color_find(vp) : -1; +#ifndef LIBXO_TEXT_ONLY xop->xo_color_map_fg[num] = (fg < 0) ? num : fg; xop->xo_color_map_bg[num] = (bg < 0) ? num : bg; +#endif /* LIBXO_TEXT_ONLY */ + if (++num > XO_NUM_COLORS) break; } @@ -2226,9 +2235,11 @@ xo_set_color_map (xo_handle_t *xop, char *value) else XOF_CLEAR(xop, XOF_COLOR_MAP); +#ifndef LIBXO_TEXT_ONLY /* Fill in the rest of the colors with the defaults */ for ( ; num < XO_NUM_COLORS; num++) xop->xo_color_map_fg[num] = xop->xo_color_map_bg[num] = num; +#endif /* LIBXO_TEXT_ONLY */ } static int @@ -2600,6 +2611,12 @@ xo_line_ensure_open (xo_handle_t *xop, xo_xff_flags_t static char div_open[] = "<div class=\"line\">"; static char div_open_blank[] = "<div class=\"blank-line\">"; + if (XOF_ISSET(xop, XOF_CONTINUATION)) { + XOF_CLEAR(xop, XOF_CONTINUATION); + XOIF_SET(xop, XOIF_DIV_OPEN); + return; + } + if (XOIF_ISSET(xop, XOIF_DIV_OPEN)) return; @@ -3505,51 +3522,54 @@ xo_do_format_field (xo_handle_t *xop, xo_buffer_t *xbp ssize_t columns = rc = xo_vsnprintf(xop, xbp, newfmt, xop->xo_vap); - /* - * For XML and HTML, we need "&<>" processing; for JSON, - * it's quotes. Text gets nothing. - */ - switch (style) { - case XO_STYLE_XML: - if (flags & XFF_TRIM_WS) - columns = rc = xo_trim_ws(xbp, rc); - /* FALLTHRU */ - case XO_STYLE_HTML: - rc = xo_escape_xml(xbp, rc, (flags & XFF_ATTR)); - break; + if (rc > 0) { + /* + * For XML and HTML, we need "&<>" processing; for JSON, + * it's quotes. Text gets nothing. + */ + switch (style) { + case XO_STYLE_XML: + if (flags & XFF_TRIM_WS) + columns = rc = xo_trim_ws(xbp, rc); + /* FALLTHRU */ + case XO_STYLE_HTML: + rc = xo_escape_xml(xbp, rc, (flags & XFF_ATTR)); + break; - case XO_STYLE_JSON: - if (flags & XFF_TRIM_WS) - columns = rc = xo_trim_ws(xbp, rc); - rc = xo_escape_json(xbp, rc, 0); - break; + case XO_STYLE_JSON: + if (flags & XFF_TRIM_WS) + columns = rc = xo_trim_ws(xbp, rc); + rc = xo_escape_json(xbp, rc, 0); + break; - case XO_STYLE_SDPARAMS: - if (flags & XFF_TRIM_WS) - columns = rc = xo_trim_ws(xbp, rc); - rc = xo_escape_sdparams(xbp, rc, 0); - break; + case XO_STYLE_SDPARAMS: + if (flags & XFF_TRIM_WS) + columns = rc = xo_trim_ws(xbp, rc); + rc = xo_escape_sdparams(xbp, rc, 0); + break; - case XO_STYLE_ENCODER: - if (flags & XFF_TRIM_WS) - columns = rc = xo_trim_ws(xbp, rc); - break; - } + case XO_STYLE_ENCODER: + if (flags & XFF_TRIM_WS) + columns = rc = xo_trim_ws(xbp, rc); + break; + } - /* - * We can assume all the non-%s data we've - * added is ASCII, so the columns and bytes are the - * same. xo_format_string handles all the fancy - * string conversions and updates xo_anchor_columns - * accordingly. - */ - if (XOF_ISSET(xop, XOF_COLUMNS)) - xop->xo_columns += columns; - if (XOIF_ISSET(xop, XOIF_ANCHOR)) - xop->xo_anchor_columns += columns; + /* + * We can assume all the non-%s data we've + * added is ASCII, so the columns and bytes are the + * same. xo_format_string handles all the fancy + * string conversions and updates xo_anchor_columns + * accordingly. + */ + if (XOF_ISSET(xop, XOF_COLUMNS)) + xop->xo_columns += columns; + if (XOIF_ISSET(xop, XOIF_ANCHOR)) + xop->xo_anchor_columns += columns; + } } - xbp->xb_curp += rc; + if (rc > 0) + xbp->xb_curp += rc; } /* @@ -4233,7 +4253,22 @@ xo_format_is_numeric (const char *fmt, ssize_t flen) return (strchr("diouDOUeEfFgG", *fmt) == NULL) ? FALSE : TRUE; } +/* + * Update the stack flags using the object flags, allowing callers + * to monkey with the stack flags without even knowing they exist. + */ static void +xo_stack_set_flags (xo_handle_t *xop) +{ + if (XOF_ISSET(xop, XOF_NOT_FIRST)) { + xo_stack_t *xsp = &xop->xo_stack[xop->xo_depth]; + + xsp->xs_flags |= XSF_NOT_FIRST; + XOF_CLEAR(xop, XOF_NOT_FIRST); + } +} + +static void xo_format_prep (xo_handle_t *xop, xo_xff_flags_t flags) { if (xop->xo_stack[xop->xo_depth].xs_flags & XSF_NOT_FIRST) { @@ -4337,6 +4372,8 @@ xo_format_value (xo_handle_t *xop, const char *name, s xo_buffer_t *xbp = &xop->xo_data; xo_humanize_save_t save; /* Save values for humanizing logic */ + const char *leader = xo_xml_leader_len(xop, name, nlen); + switch (xo_style(xop)) { case XO_STYLE_TEXT: if (flags & XFF_ENCODE_ONLY) @@ -4391,6 +4428,8 @@ xo_format_value (xo_handle_t *xop, const char *name, s if (pretty) xo_buf_indent(xop, -1); xo_data_append(xop, "<", 1); + if (*leader) + xo_data_append(xop, leader, 1); xo_data_escape(xop, name, nlen); if (xop->xo_attrs.xb_curp != xop->xo_attrs.xb_bufp) { @@ -4423,6 +4462,8 @@ xo_format_value (xo_handle_t *xop, const char *name, s xo_simple_field(xop, FALSE, value, vlen, fmt, flen, flags); xo_data_append(xop, "</", 2); + if (*leader) + xo_data_append(xop, leader, 1); xo_data_escape(xop, name, nlen); xo_data_append(xop, ">", 1); if (pretty) @@ -4446,6 +4487,8 @@ xo_format_value (xo_handle_t *xop, const char *name, s flen = strlen(fmt); } + xo_stack_set_flags(xop); + int first = (xop->xo_stack[xop->xo_depth].xs_flags & XSF_NOT_FIRST) ? 0 : 1; @@ -4751,9 +4794,8 @@ xo_effect_find (const char *str) static void xo_colors_parse (xo_handle_t *xop, xo_colors_t *xocp, char *str) { -#ifdef LIBXO_TEXT_ONLY - return; -#endif /* LIBXO_TEXT_ONLY */ + if (xo_text_only()) + return; char *cp, *ep, *np, *xp; ssize_t len = strlen(str); @@ -4837,12 +4879,9 @@ xo_colors_enabled (xo_handle_t *xop UNUSED) * the incoming foreground and background colors from the map. */ static void -xo_colors_update (xo_handle_t *xop, xo_colors_t *newp) +xo_colors_update (xo_handle_t *xop UNUSED, xo_colors_t *newp UNUSED) { -#ifdef LIBXO_TEXT_ONLY - return; -#endif /* LIBXO_TEXT_ONLY */ - +#ifndef LIBXO_TEXT_ONLY xo_color_t fg = newp->xoc_col_fg; if (XOF_ISSET(xop, XOF_COLOR_MAP) && fg < XO_NUM_COLORS) fg = xop->xo_color_map_fg[fg]; /* Fetch from color map */ @@ -4852,6 +4891,7 @@ xo_colors_update (xo_handle_t *xop, xo_colors_t *newp) if (XOF_ISSET(xop, XOF_COLOR_MAP) && bg < XO_NUM_COLORS) bg = xop->xo_color_map_bg[bg]; /* Fetch from color map */ newp->xoc_col_bg = bg; +#endif /* LIBXO_TEXT_ONLY */ } static void @@ -6454,9 +6494,7 @@ xo_do_emit_fields (xo_handle_t *xop, xo_field_info_t * /* If we don't have an anchor, write the text out */ if (flush && !XOIF_ISSET(xop, XOIF_ANCHOR)) { - if (xo_write(xop) < 0) - rc = -1; /* Report failure */ - else if (xo_flush_h(xop) < 0) + if (xo_flush_h(xop) < 0) rc = -1; } @@ -6804,17 +6842,6 @@ xo_attr (const char *name, const char *fmt, ...) } static void -xo_stack_set_flags (xo_handle_t *xop) -{ - if (XOF_ISSET(xop, XOF_NOT_FIRST)) { - xo_stack_t *xsp = &xop->xo_stack[xop->xo_depth]; - - xsp->xs_flags |= XSF_NOT_FIRST; - XOF_CLEAR(xop, XOF_NOT_FIRST); - } -} - -static void xo_depth_change (xo_handle_t *xop, const char *name, int delta, int indent, xo_state_t state, xo_xsf_flags_t flags) { @@ -6889,6 +6916,15 @@ xo_set_depth (xo_handle_t *xop, int depth) xop->xo_depth += depth; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904082257.x38Mvbem097796>