diff options
Diffstat (limited to 'qerror.c')
-rw-r--r-- | qerror.c | 83 |
1 files changed, 65 insertions, 18 deletions
@@ -12,8 +12,8 @@ #include "qjson.h" #include "qerror.h" #include "qstring.h" -#include "sysemu.h" #include "qemu-common.h" +#include "qemu-error.h" static void qerror_destroy_obj(QObject *obj); @@ -41,48 +41,68 @@ static const QType qerror_type = { */ static const QErrorStringTable qerror_table[] = { { + .error_fmt = QERR_BAD_BUS_FOR_DEVICE, + .desc = "Device '%(device)' can't go on a %(bad_bus_type) bus", + }, + { + .error_fmt = QERR_BUS_NOT_FOUND, + .desc = "Bus '%(bus)' not found", + }, + { + .error_fmt = QERR_BUS_NO_HOTPLUG, + .desc = "Bus '%(bus)' does not support hotplugging", + }, + { .error_fmt = QERR_COMMAND_NOT_FOUND, .desc = "The command %(name) has not been found", }, { .error_fmt = QERR_DEVICE_ENCRYPTED, - .desc = "The %(device) is encrypted", + .desc = "Device '%(device)' is encrypted", + }, + { + .error_fmt = QERR_DEVICE_INIT_FAILED, + .desc = "Device '%(device)' could not be initialized", }, { .error_fmt = QERR_DEVICE_LOCKED, - .desc = "Device %(device) is locked", + .desc = "Device '%(device)' is locked", + }, + { + .error_fmt = QERR_DEVICE_MULTIPLE_BUSSES, + .desc = "Device '%(device)' has multiple child busses", }, { .error_fmt = QERR_DEVICE_NOT_ACTIVE, - .desc = "The %(device) device has not been activated by the guest", + .desc = "Device '%(device)' has not been activated by the guest", }, { .error_fmt = QERR_DEVICE_NOT_FOUND, - .desc = "The %(device) device has not been found", + .desc = "Device '%(device)' not found", }, { .error_fmt = QERR_DEVICE_NOT_REMOVABLE, - .desc = "Device %(device) is not removable", + .desc = "Device '%(device)' is not removable", + }, + { + .error_fmt = QERR_DEVICE_NO_BUS, + .desc = "Device '%(device)' has no child bus", }, { .error_fmt = QERR_FD_NOT_FOUND, - .desc = "Failed to find file descriptor named %(name)", + .desc = "File descriptor named '%(name)' not found", }, { .error_fmt = QERR_FD_NOT_SUPPLIED, .desc = "No file descriptor supplied via SCM_RIGHTS", }, { - .error_fmt = QERR_OPEN_FILE_FAILED, - .desc = "Could not open '%(filename)'", - }, - { .error_fmt = QERR_INVALID_BLOCK_FORMAT, - .desc = "Invalid block format %(name)", + .desc = "Invalid block format '%(name)'", }, { .error_fmt = QERR_INVALID_PARAMETER, - .desc = "Invalid parameter %(name)", + .desc = "Invalid parameter '%(name)'", }, { .error_fmt = QERR_INVALID_PARAMETER_TYPE, @@ -90,7 +110,7 @@ static const QErrorStringTable qerror_table[] = { }, { .error_fmt = QERR_INVALID_PASSWORD, - .desc = "The entered password is invalid", + .desc = "Password incorrect", }, { .error_fmt = QERR_JSON_PARSING, @@ -102,7 +122,31 @@ static const QErrorStringTable qerror_table[] = { }, { .error_fmt = QERR_MISSING_PARAMETER, - .desc = "Parameter %(name) is missing", + .desc = "Parameter '%(name)' is missing", + }, + { + .error_fmt = QERR_NO_BUS_FOR_DEVICE, + .desc = "No '%(bus)' bus found for device '%(device)'", + }, + { + .error_fmt = QERR_OPEN_FILE_FAILED, + .desc = "Could not open '%(filename)'", + }, + { + .error_fmt = QERR_PROPERTY_NOT_FOUND, + .desc = "Property '%(device).%(property)' not found", + }, + { + .error_fmt = QERR_PROPERTY_VALUE_BAD, + .desc = "Property '%(device).%(property)' doesn't take value '%(value)'", + }, + { + .error_fmt = QERR_PROPERTY_VALUE_IN_USE, + .desc = "Property '%(device).%(property)' can't take value '%(value)', it's in use", + }, + { + .error_fmt = QERR_PROPERTY_VALUE_NOT_FOUND, + .desc = "Property '%(device).%(property)' can't find value '%(value)'", }, { .error_fmt = QERR_QMP_BAD_INPUT_OBJECT, @@ -224,6 +268,7 @@ QError *qerror_from_info(const char *file, int linenr, const char *func, QError *qerr; qerr = qerror_new(); + loc_save(&qerr->loc); qerr->linenr = linenr; qerr->file = file; qerr->func = func; @@ -318,13 +363,15 @@ QString *qerror_human(const QError *qerror) * qerror_print(): Print QError data * * This function will print the member 'desc' of the specified QError object, - * it uses qemu_error() for this, so that the output is routed to the right + * it uses error_report() for this, so that the output is routed to the right * place (ie. stderr or Monitor's device). */ -void qerror_print(const QError *qerror) +void qerror_print(QError *qerror) { QString *qstring = qerror_human(qerror); - qemu_error("%s\n", qstring_get_str(qstring)); + loc_push_restore(&qerror->loc); + error_report("%s", qstring_get_str(qstring)); + loc_pop(&qerror->loc); QDECREF(qstring); } |