log: Fix qemu_set_dfilter_ranges() error reporting
commitbd6fee9f1263dc5ba487c7ac57d33a727af63c00
authorMarkus Armbruster <armbru@redhat.com>
Wed, 15 Jun 2016 17:27:15 +0000 (15 19:27 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Mon, 20 Jun 2016 14:38:31 +0000 (20 16:38 +0200)
treed4bfe62cf9142dd4868e66fd04399198da54966a
parent2ec62faea274aabb2feaad2b8f85961161b5e1e4
log: Fix qemu_set_dfilter_ranges() error reporting

g_error() is not an acceptable way to report errors to the user:

    $ qemu-system-x86_64 -dfilter 1000+0

    ** (process:17187): ERROR **: Failed to parse range in: 1000+0
    Trace/breakpoint trap (core dumped)

g_assert() isn't, either:

    $ qemu-system-x86_64 -dfilter 1000x+64
    **
    ERROR:/work/armbru/qemu/util/log.c:180:qemu_set_dfilter_ranges: assertion failed: (e == range_op)
    Aborted (core dumped)

Convert qemu_set_dfilter_ranges() to Error.  Rework its deeply nested
control flow.  Touch up the error messages.  Call it with
&error_fatal.

This also permits testing without a subprocess, so do that.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1466011636-6112-3-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
include/qemu/log.h
tests/test-logging.c
util/log.c
vl.c