[libvirt] [PATCH] virsh: Show errors reported by nonAPI functions

Cole Robinson crobinso at redhat.com
Wed Feb 24 17:55:17 UTC 2010


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 at 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




More information about the libvir-list mailing list