]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: Show errors reported by nonAPI functions
authorCole Robinson <crobinso@redhat.com>
Wed, 24 Feb 2010 16:13:00 +0000 (11:13 -0500)
committerCole Robinson <crobinso@redhat.com>
Thu, 25 Feb 2010 16:43:56 +0000 (11:43 -0500)
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'

tools/virsh.c

index 89eefcfdf3ace697f80c78261f6dc74635b41f1c..f7fd7d494124872351db08b322b3f8fb77808c51 100644 (file)
@@ -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"));