aboutsummaryrefslogtreecommitdiff
path: root/qemu-error.c
AgeCommit message (Collapse)Author
2010-03-27error: Move qerror_report() from qemu-error.[ch] to qerror.[ch]Markus Armbruster
Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2010-03-27error: Make use of error_set_progname() optionalMarkus Armbruster
Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2010-03-23qemu-error: Avoid build warning.Edgar E. Iglesias
CC qemu-error.o cc1: warnings being treated as errors /home/edgar/src/c/qemu/git/qemu/qemu-error.c: In function 'error_print_loc': /home/edgar/src/c/qemu/git/qemu/qemu-error.c:191: error: format not a string literal and no format arguments make: *** [qemu-error.o] Error 1 Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
2010-03-16error: New error_printf_unless_qmp()Markus Armbruster
2010-03-16error: Let converted handlers print in human monitorMarkus Armbruster
While fully converted handlers are not supposed to print anything when running in a QMP monitor, they are free to print in a human monitor. For instance, device_add (not yet converted) prints help, and will continue to do so after conversion. Moreover, utility functions converted to QError should remain usable from unconverted handlers. Two problems: * handler_audit() complains when a converted handler prints. Limit that to QMP monitors. * With QMP, handlers need to pass the error object by way of monitor_set_error(). However, we do that both for QMP and for the human monitor. The human monitor prints the error object after the handler returns. If the handler prints anything else, that output "overtakes" the error message. Limit use of monitor_set_error() to QMP monitors. Update handler_audit() accordingly.
2010-03-16error: Track locations on command lineMarkus Armbruster
New LOC_CMDLINE. Use it for tracking option with argument in lookup_opt(). We now report errors like this qemu: -device smbus-eeprom: Did not find I2C bus for smbus-eeprom
2010-03-16error: Track locations in configuration filesMarkus Armbruster
New LOC_FILE. Use it for tracking file name and line number in qemu_config_parse(). We now report errors like qemu:foo.conf:42: Did not find I2C bus for smbus-eeprom In particular, gems like this message: -device: no driver specified become almost nice now: qemu:foo.conf:44: -device: no driver specified (A later commit will get rid of the bogus -device:)
2010-03-16error: Include the program name in error messages to stderrMarkus Armbruster
2010-03-16error: Infrastructure to track locations for error reportingMarkus Armbruster
New struct Location holds a location. So far, the only location is LOC_NONE, so this doesn't do anything useful yet. Passing the current location all over the place would be too cumbersome. Hide it away in static cur_loc instead, and provide accessors. Print it in error_report(). Store it in QError, and print it in qerror_print(). Store it in QemuOpt, for use by qemu_opts_foreach(). This makes error_report() do the right thing when it runs within qemu_opts_foreach(). We may still have to store it in other data structures holding user input for better error messages. Left for another day.
2010-03-16error: Rename qemu_error_new() to qerror_report()Markus Armbruster
2010-03-16error: Replace qemu_error() by error_report()Markus Armbruster
error_report() terminates the message with a newline. Strip it it from its arguments. This fixes a few error messages lacking a newline: net_handle_fd_param()'s "No file descriptor named %s found", and tap_open()'s "vnet_hdr=1 requested, but no kernel support for IFF_VNET_HDR available" (all three versions). There's one place that passes arguments without newlines intentionally: load_vmstate(). Fix it up.
2010-03-16error: New error_printf() and error_vprintf()Markus Armbruster
2010-03-16error: Simplify error sink setupMarkus Armbruster
qemu_error_sink can either point to a monitor or a file. In practice, it always points to the current monitor if we have one, else to stderr. Simply route errors to the current monitor or else to stderr, and remove qemu_error_sink along with the functions to control it. Actually, the old code switches the sink slightly later, in handle_user_command() and handle_qmp_command(), than it gets switched now, implicitly, by setting the current monitor in monitor_read() and monitor_control_read(). Likewise, it switches back slightly earlier (same places). Doesn't make a difference, because there are no calls of qemu_error() in between.
2010-03-16error: Move qemu_error() & friends from monitor.c to own fileMarkus Armbruster
They're about reporting errors, not about the monitor.