Only API calls trigger the error callback, which is required for
proper virsh error reporting. Since we use non API functions from
util/, make sure we properly report these errors.
Fixes lack of error message from 'virsh create idontexit.xml'
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
tools/virsh.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index 5fdbbe5..74e3fad 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -352,8 +352,16 @@ virshErrorHandler(void *unused ATTRIBUTE_UNUSED, virErrorPtr error)
static void
virshReportError(vshControl *ctl)
{
- if (last_error == NULL)
- return;
+ if (last_error == NULL) {
+ /* Calling directly into libvirt util functions won't trigger the
+ * error callback (which sets last_error), so check it ourselves.
+ *
+ * If the returned error has CODE_OK, this most likely means that
+ * no error was ever raised, so just ignore */
+ last_error = virSaveLastError();
+ if (!last_error || last_error->code == VIR_ERR_OK)
+ return NULL;
+ }
if (last_error->code == VIR_ERR_OK) {
vshError(ctl, "%s", _("unknown error"));
--
1.6.5.2