提交 69c6a58a 编写于 作者: D Daniel P. Berrange

Add a virGetLastErrorMessage() function

Apps using libvirt will often have code like

   if (virXXXX() < 0) {
      virErrorPtr err = virGetLastError();
      fprintf(stderr, "Something failed: %s\n",
              err && err->message ? err->message :
              "unknown error");
      return -1;
   }

Checking for a NULL error object or message leads to very
verbose code. A virGetLastErrorMessage() helper from libvirt
can simplify this to

   if (virXXXX() < 0) {
      fprintf(stderr, "Something failed: %s\n",
              virGetLastErrorMessage());
      return -1;
   }
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
上级 a2214c52
......@@ -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);
......
......@@ -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 ....
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册