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: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2013-05-10 18:09:44 +01:00
parent a2214c5257
commit 69c6a58a1d
3 changed files with 28 additions and 0 deletions

View File

@ -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);

View File

@ -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 ....

View File

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