From 827b08139c8ba97c18bda19e4893fdf26878b531 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 18 Feb 2010 19:46:49 +0100 Subject: error: Infrastructure to track locations for error reporting 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. --- qerror.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index ee59615bd2..f25be1b2cc 100644 --- a/qerror.h +++ b/qerror.h @@ -14,6 +14,7 @@ #include "qdict.h" #include "qstring.h" +#include "qemu-error.h" #include typedef struct QErrorStringTable { @@ -24,6 +25,7 @@ typedef struct QErrorStringTable { typedef struct QError { QObject_HEAD; QDict *error; + Location loc; int linenr; const char *file; const char *func; @@ -34,7 +36,7 @@ QError *qerror_new(void); QError *qerror_from_info(const char *file, int linenr, const char *func, const char *fmt, va_list *va); QString *qerror_human(const QError *qerror); -void qerror_print(const QError *qerror); +void qerror_print(QError *qerror); QError *qobject_to_qerror(const QObject *obj); /* -- cgit v1.2.1 From fc5469d87b54bfbe06b76a9bb9da6589c326e0b2 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 17:42:46 +0100 Subject: error: Polish human-readable error descriptions Also put error definitions in alphabetical order --- qerror.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index f25be1b2cc..8060fe0495 100644 --- a/qerror.h +++ b/qerror.h @@ -48,7 +48,7 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_DEVICE_ENCRYPTED \ "{ 'class': 'DeviceEncrypted', 'data': { 'device': %s } }" -#define QERR_DEVICE_LOCKED \ +#define QERR_DEVICE_LOCKED \ "{ 'class': 'DeviceLocked', 'data': { 'device': %s } }" #define QERR_DEVICE_NOT_ACTIVE \ @@ -66,9 +66,6 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_FD_NOT_SUPPLIED \ "{ 'class': 'FdNotSupplied', 'data': {} }" -#define QERR_OPEN_FILE_FAILED \ - "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }" - #define QERR_INVALID_BLOCK_FORMAT \ "{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }" @@ -90,18 +87,21 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_MISSING_PARAMETER \ "{ 'class': 'MissingParameter', 'data': { 'name': %s } }" +#define QERR_OPEN_FILE_FAILED \ + "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }" + #define QERR_QMP_BAD_INPUT_OBJECT \ "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }" #define QERR_SET_PASSWD_FAILED \ "{ 'class': 'SetPasswdFailed', 'data': {} }" -#define QERR_UNDEFINED_ERROR \ - "{ 'class': 'UndefinedError', 'data': {} }" - #define QERR_TOO_MANY_FILES \ "{ 'class': 'TooManyFiles', 'data': {} }" +#define QERR_UNDEFINED_ERROR \ + "{ 'class': 'UndefinedError', 'data': {} }" + #define QERR_VNC_SERVER_FAILED \ "{ 'class': 'VNCServerFailed', 'data': { 'target': %s } }" -- cgit v1.2.1 From c58a35f8e32af621fab2b4f9c868f47971f67e59 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 13:11:41 +0100 Subject: error: New QERR_PROPERTY_NOT_FOUND --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 8060fe0495..e36336ec1b 100644 --- a/qerror.h +++ b/qerror.h @@ -90,6 +90,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_OPEN_FILE_FAILED \ "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }" +#define QERR_PROPERTY_NOT_FOUND \ + "{ 'class': 'PropertyNotFound', 'data': { 'device': %s, 'property': %s } }" + #define QERR_QMP_BAD_INPUT_OBJECT \ "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }" -- cgit v1.2.1 From 06b4a703e0e87034a8b122f6ffc50c732e7ceddd Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 13:17:58 +0100 Subject: error: New QERR_PROPERTY_VALUE_BAD --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index e36336ec1b..d5f0e9dc3c 100644 --- a/qerror.h +++ b/qerror.h @@ -93,6 +93,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_PROPERTY_NOT_FOUND \ "{ 'class': 'PropertyNotFound', 'data': { 'device': %s, 'property': %s } }" +#define QERR_PROPERTY_VALUE_BAD \ + "{ 'class': 'PropertyValueBad', 'data': { 'device': %s, 'property': %s, 'value': %s } }" + #define QERR_QMP_BAD_INPUT_OBJECT \ "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }" -- cgit v1.2.1 From 9c5eff958d527d1803114a6f78d086fb313b9bd2 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 16 Mar 2010 17:40:48 +0100 Subject: error: New QERR_PROPERTY_VALUE_IN_USE --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index d5f0e9dc3c..f7a10b7b9a 100644 --- a/qerror.h +++ b/qerror.h @@ -96,6 +96,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_PROPERTY_VALUE_BAD \ "{ 'class': 'PropertyValueBad', 'data': { 'device': %s, 'property': %s, 'value': %s } }" +#define QERR_PROPERTY_VALUE_IN_USE \ + "{ 'class': 'PropertyValueInUse', 'data': { 'device': %s, 'property': %s, 'value': %s } }" + #define QERR_QMP_BAD_INPUT_OBJECT \ "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }" -- cgit v1.2.1 From 84745d68e7338271f0f7ec567ab52abf20a0ce9c Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 16 Mar 2010 17:44:38 +0100 Subject: error: New QERR_PROPERTY_VALUE_NOT_FOUND --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index f7a10b7b9a..a0730edd62 100644 --- a/qerror.h +++ b/qerror.h @@ -99,6 +99,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_PROPERTY_VALUE_IN_USE \ "{ 'class': 'PropertyValueInUse', 'data': { 'device': %s, 'property': %s, 'value': %s } }" +#define QERR_PROPERTY_VALUE_NOT_FOUND \ + "{ 'class': 'PropertyValueNotFound', 'data': { 'device': %s, 'property': %s, 'value': %s } }" + #define QERR_QMP_BAD_INPUT_OBJECT \ "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }" -- cgit v1.2.1 From 7bbd823701cf4447b5c23430f1ad78ce501793b4 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 18:05:39 +0100 Subject: error: New QERR_BUS_NOT_FOUND --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index a0730edd62..84928080fc 100644 --- a/qerror.h +++ b/qerror.h @@ -42,6 +42,9 @@ QError *qobject_to_qerror(const QObject *obj); /* * QError class list */ +#define QERR_BUS_NOT_FOUND \ + "{ 'class': 'BusNotFound', 'data': { 'bus': %s } }" + #define QERR_COMMAND_NOT_FOUND \ "{ 'class': 'CommandNotFound', 'data': { 'name': %s } }" -- cgit v1.2.1 From 1ae787184025b7e890a666e0041024a3d92529ce Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 18:05:59 +0100 Subject: error: New QERR_DEVICE_MULTIPLE_BUSSES --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 84928080fc..27e69b1f31 100644 --- a/qerror.h +++ b/qerror.h @@ -54,6 +54,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_DEVICE_LOCKED \ "{ 'class': 'DeviceLocked', 'data': { 'device': %s } }" +#define QERR_DEVICE_MULTIPLE_BUSSES \ + "{ 'class': 'DeviceMultipleBusses', 'data': { 'device': %s } }" + #define QERR_DEVICE_NOT_ACTIVE \ "{ 'class': 'DeviceNotActive', 'data': { 'device': %s } }" -- cgit v1.2.1 From 07574baf7b714a10e35b716b0eb6ede197adfca7 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 18:06:18 +0100 Subject: error: New QERR_DEVICE_NO_BUS --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 27e69b1f31..baca7ded1a 100644 --- a/qerror.h +++ b/qerror.h @@ -66,6 +66,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_DEVICE_NOT_REMOVABLE \ "{ 'class': 'DeviceNotRemovable', 'data': { 'device': %s } }" +#define QERR_DEVICE_NO_BUS \ + "{ 'class': 'DeviceNoBus', 'data': { 'device': %s } }" + #define QERR_FD_NOT_FOUND \ "{ 'class': 'FdNotFound', 'data': { 'name': %s } }" -- cgit v1.2.1 From 56e9f56309b7c77dfb328dbf450d04fd54ce4542 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 19:52:45 +0100 Subject: error: New QERR_BAD_BUS_FOR_DEVICE --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index baca7ded1a..87fde06f11 100644 --- a/qerror.h +++ b/qerror.h @@ -42,6 +42,9 @@ QError *qobject_to_qerror(const QObject *obj); /* * QError class list */ +#define QERR_BAD_BUS_FOR_DEVICE \ + "{ 'class': 'BadBusForDevice', 'data': { 'device': %s, 'bad_bus_type': %s } }" + #define QERR_BUS_NOT_FOUND \ "{ 'class': 'BusNotFound', 'data': { 'bus': %s } }" -- cgit v1.2.1 From 8eae73b5d7085b0f9b087033c328fdbbbcc6271d Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 19:53:36 +0100 Subject: error: New QERR_BUS_NO_HOTPLUG --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 87fde06f11..6cd2e2de18 100644 --- a/qerror.h +++ b/qerror.h @@ -48,6 +48,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_BUS_NOT_FOUND \ "{ 'class': 'BusNotFound', 'data': { 'bus': %s } }" +#define QERR_BUS_NO_HOTPLUG \ + "{ 'class': 'BusNoHotplug', 'data': { 'bus': %s } }" + #define QERR_COMMAND_NOT_FOUND \ "{ 'class': 'CommandNotFound', 'data': { 'name': %s } }" -- cgit v1.2.1 From 4d9a1a15214c01dcbff2d7c02cef027e80442d79 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 19:53:54 +0100 Subject: error: New QERR_DEVICE_INIT_FAILED --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 6cd2e2de18..10a37f3f9b 100644 --- a/qerror.h +++ b/qerror.h @@ -57,6 +57,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_DEVICE_ENCRYPTED \ "{ 'class': 'DeviceEncrypted', 'data': { 'device': %s } }" +#define QERR_DEVICE_INIT_FAILED \ + "{ 'class': 'DeviceInitFailed', 'data': { 'device': %s } }" + #define QERR_DEVICE_LOCKED \ "{ 'class': 'DeviceLocked', 'data': { 'device': %s } }" -- cgit v1.2.1 From fab5767f90c96194f918d39af683fff3d9ea421a Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 19 Feb 2010 19:54:06 +0100 Subject: error: New QERR_NO_BUS_FOR_DEVICE --- qerror.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'qerror.h') diff --git a/qerror.h b/qerror.h index 10a37f3f9b..88b297a96d 100644 --- a/qerror.h +++ b/qerror.h @@ -105,6 +105,9 @@ QError *qobject_to_qerror(const QObject *obj); #define QERR_MISSING_PARAMETER \ "{ 'class': 'MissingParameter', 'data': { 'name': %s } }" +#define QERR_NO_BUS_FOR_DEVICE \ + "{ 'class': 'NoBusForDevice', 'data': { 'device': %s, 'bus': %s } }" + #define QERR_OPEN_FILE_FAILED \ "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }" -- cgit v1.2.1