diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h index 3864a31b31..cd7e3b31e0 100644 --- a/include/libvirt/virterror.h +++ b/include/libvirt/virterror.h @@ -313,6 +313,8 @@ void virResetLastError (void); void virResetError (virErrorPtr err); void virFreeError (virErrorPtr err); +const char * virGetLastErrorMessage (void); + virErrorPtr virConnGetLastError (virConnectPtr conn); void virConnResetLastError (virConnectPtr conn); int virCopyLastError (virErrorPtr to); diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index dfbf44ef53..4ee2d27539 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -616,4 +616,9 @@ LIBVIRT_1.0.5 { virNodeDeviceDetachFlags; } LIBVIRT_1.0.3; +LIBVIRT_1.0.6 { + global: + virGetLastErrorMessage; +} LIBVIRT_1.0.5; + # .... define new API here using predicted next version number .... diff --git a/src/util/virerror.c b/src/util/virerror.c index af4da8c8fb..4e1dc9a32b 100644 --- a/src/util/virerror.c +++ b/src/util/virerror.c @@ -234,6 +234,27 @@ virGetLastError(void) return err; } + +/** + * virGetLastErrorMessage: + * + * Get the most recent error message + * + * Returns the most recent error message string in this + * thread, or a generic message if none is set + */ +const char * +virGetLastErrorMessage(void) +{ + virErrorPtr err = virLastErrorObject(); + if (!err || err->code == VIR_ERR_OK) + return _("no error"); + if (err->message == NULL) + return _("unknown error"); + return err->message; +} + + /** * virSetError: * @newerr: previously saved error object