On Wed, 2014-09-24 at 13:49 +0200, Fabiano Fidêncio wrote: > Adding a better error message to our default error message, based on the > libvirt error. Also, the libvirt error is shown as debug. > > https://bugzilla.redhat.com/show_bug.cgi?id=1142742 > --- > v2: > - Add a special case with our own error message based on libvirt's error message > - Add a g_debug() output with the libvirt's error message > --- > src/virt-viewer.c | 37 +++++++++++++++++++++++++++++++++++-- > 1 file changed, 35 insertions(+), 2 deletions(-) > > diff --git a/src/virt-viewer.c b/src/virt-viewer.c > index 3d5a363..c6066c5 100644 > --- a/src/virt-viewer.c > +++ b/src/virt-viewer.c > @@ -669,6 +669,36 @@ virt_viewer_auth_libvirt_credentials(virConnectCredentialPtr cred, > return ret; > } > > +static gchar * > +virt_viewer_get_error_message_from_vir_error(VirtViewer *self, > + virErrorPtr error) > +{ > + VirtViewerPrivate *priv = self->priv; > + const gchar *error_details = NULL; > + gchar *detailed_error_message = NULL; > + gchar *error_message = g_strdup_printf(_("Unable to connect to libvirt with URI: %s."), > + priv->uri ? priv->uri : _("[none]")); > + > + g_debug("Error: %s", error->message); I'm not so sure whether simply *getting* the error message should have a side-effect of printing a debug message, but I guess it's OK. ACK > + > + /* For now we are only treating authentication errors. */ > + switch (error->code) { > + case VIR_ERR_AUTH_FAILED: > + error_details = _("Authentication failed."); > + break; > + default: > + break; > + } > + > + if (error_details != NULL) { > + detailed_error_message = g_strdup_printf("%s\n%s", error_message, error_details); > + g_free(error_message); > + return detailed_error_message; > + } > + > + return error_message; > +} > + > static int > virt_viewer_connect(VirtViewerApp *app) > { > @@ -698,8 +728,11 @@ virt_viewer_connect(VirtViewerApp *app) > oflags); > if (!priv->conn) { > if (!priv->auth_cancelled) { > - virt_viewer_app_simple_message_dialog(app, _("Unable to connect to libvirt with URI %s"), > - priv->uri ? priv->uri : _("[none]")); > + gchar *error_message = virt_viewer_get_error_message_from_vir_error(self, virGetLastError()); > + > + virt_viewer_app_simple_message_dialog(app, error_message); > + > + g_free(error_message); > } > > return -1; _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list