[libvirt] [PATCH 3/3] all: replacing virGetLastError with virGetLastErrorCode where we can

ramyelkest ramyelkest at gmail.com
Sat May 5 12:04:21 UTC 2018


Replaced instances where we called virGetLastError just to
either get the code or to check if an error exists with
virGetLastErrorCode to avoid a validity pre-check.

Signed-off-by: Ramy Elkest <ramyelkest at gmail.com>
---
 src/locking/lock_driver_lockd.c |  3 +--
 src/lxc/lxc_controller.c        |  4 +---
 src/qemu/qemu_agent.c           |  3 +--
 src/qemu/qemu_conf.c            |  3 +--
 src/qemu/qemu_domain.c          |  2 +-
 src/qemu/qemu_driver.c          | 12 ++++++------
 src/qemu/qemu_hotplug.c         |  2 +-
 src/qemu/qemu_migration.c       |  4 ++--
 src/qemu/qemu_monitor.c         |  5 ++---
 src/qemu/qemu_monitor_json.c    |  2 +-
 src/qemu/qemu_process.c         |  4 ++--
 src/remote/remote_driver.c      |  3 +--
 src/rpc/virnetclient.c          |  2 +-
 src/rpc/virnetlibsshsession.c   |  4 +---
 src/util/virmodule.c            |  3 +--
 src/util/virxml.c               |  4 ++--
 tests/commandtest.c             |  2 +-
 tests/testutils.c               |  6 ++----
 tests/virhostcputest.c          |  2 +-
 tests/virstoragetest.c          |  8 ++++----
 tools/virsh-domain-monitor.c    |  7 +++----
 tools/virsh-domain.c            |  4 +---
 tools/virsh-util.c              |  3 +--
 tools/vsh.c                     |  2 +-
 24 files changed, 39 insertions(+), 55 deletions(-)

diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
index c3fc18a..957a963 100644
--- a/src/locking/lock_driver_lockd.c
+++ b/src/locking/lock_driver_lockd.c
@@ -302,8 +302,7 @@ static int virLockManagerLockDaemonSetupLockspace(const char *path)
                                 0, NULL, NULL, NULL,
                                 (xdrproc_t)xdr_virLockSpaceProtocolCreateLockSpaceArgs, (char*)&args,
                                 (xdrproc_t)xdr_void, NULL) < 0) {
-        virErrorPtr err = virGetLastError();
-        if (err && err->code == VIR_ERR_OPERATION_INVALID) {
+        if (virGetLastErrorCode() == VIR_ERR_OPERATION_INVALID) {
             /* The lockspace already exists */
             virResetLastError();
             rv = 0;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index d5636b8..e1ee864 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -1297,7 +1297,6 @@ static void virLXCControllerConsoleIO(int watch, int fd, int events, void *opaqu
  */
 static int virLXCControllerMain(virLXCControllerPtr ctrl)
 {
-    virErrorPtr err;
     int rc = -1;
     size_t i;
 
@@ -1349,8 +1348,7 @@ static int virLXCControllerMain(virLXCControllerPtr ctrl)
 
     virNetDaemonRun(ctrl->daemon);
 
-    err = virGetLastError();
-    if (!err || err->code == VIR_ERR_OK)
+    if (!virGetLastErrorCode())
         rc = wantReboot ? 1 : 0;
 
  cleanup:
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 4df1bde..1fb31a7 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -686,8 +686,7 @@ qemuAgentIO(int watch, int fd, int events, void *opaque)
             /* Already have an error, so clear any new error */
             virResetLastError();
         } else {
-            virErrorPtr err = virGetLastError();
-            if (!err)
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                _("Error while processing monitor IO"));
             virCopyLastError(&mon->lastError);
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index bfbb572..a09532d 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -297,8 +297,7 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged)
     if (privileged &&
         virFileFindHugeTLBFS(&cfg->hugetlbfs, &cfg->nhugetlbfs) < 0) {
         /* This however is not implemented on all platforms. */
-        virErrorPtr err = virGetLastError();
-        if (err && err->code != VIR_ERR_NO_SUPPORT)
+        if (virGetLastErrorCode() != VIR_ERR_NO_SUPPORT)
             goto error;
     }
 
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 727ea33..128f1a0 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -6063,7 +6063,7 @@ int qemuDomainObjExitMonitor(virQEMUDriverPtr driver,
 {
     qemuDomainObjExitMonitorInternal(driver, obj);
     if (!virDomainObjIsActive(obj)) {
-        if (!virGetLastError())
+        if (!virGetLastErrorCode())
             virReportError(VIR_ERR_OPERATION_FAILED, "%s",
                            _("domain is no longer running"));
         return -1;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 83fc191..bd776e0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1929,7 +1929,7 @@ static int qemuDomainResume(virDomainPtr dom)
         if (qemuProcessStartCPUs(driver, vm,
                                  VIR_DOMAIN_RUNNING_UNPAUSED,
                                  QEMU_ASYNC_JOB_NONE) < 0) {
-            if (virGetLastError() == NULL)
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_OPERATION_FAILED,
                                "%s", _("resume operation failed"));
             goto endjob;
@@ -3209,7 +3209,7 @@ qemuFileWrapperFDClose(virDomainObjPtr vm,
     ret = virFileWrapperFdClose(fd);
     virObjectLock(vm);
     if (!virDomainObjIsActive(vm)) {
-        if (!virGetLastError())
+        if (!virGetLastErrorCode())
             virReportError(VIR_ERR_OPERATION_FAILED, "%s",
                            _("domain is no longer running"));
         ret = -1;
@@ -3991,7 +3991,7 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom,
                 event = virDomainEventLifecycleNewFromObj(vm,
                                                           VIR_DOMAIN_EVENT_SUSPENDED,
                                                           VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
-                if (virGetLastError() == NULL)
+                if (!virGetLastErrorCode())
                     virReportError(VIR_ERR_OPERATION_FAILED,
                                    "%s", _("resuming after dump failed"));
             }
@@ -6638,7 +6638,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
         if (qemuProcessStartCPUs(driver, vm,
                                  VIR_DOMAIN_RUNNING_RESTORED,
                                  asyncJob) < 0) {
-            if (virGetLastError() == NULL)
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_OPERATION_FAILED,
                                "%s", _("failed to resume domain"));
             goto cleanup;
@@ -14084,7 +14084,7 @@ qemuDomainSnapshotCreateActiveInternal(virQEMUDriverPtr driver,
         event = virDomainEventLifecycleNewFromObj(vm,
                                          VIR_DOMAIN_EVENT_SUSPENDED,
                                          VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
-        if (virGetLastError() == NULL) {
+        if (!virGetLastErrorCode()) {
             virReportError(VIR_ERR_OPERATION_FAILED, "%s",
                            _("resuming after snapshot failed"));
         }
@@ -15048,7 +15048,7 @@ qemuDomainSnapshotCreateActiveExternal(virQEMUDriverPtr driver,
                                          VIR_DOMAIN_EVENT_SUSPENDED,
                                          VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
         qemuDomainEventQueue(driver, event);
-        if (virGetLastError() == NULL) {
+        if (!virGetLastErrorCode()) {
             virReportError(VIR_ERR_OPERATION_FAILED, "%s",
                            _("resuming after snapshot failed"));
         }
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 9ca8e66..c755aab 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -212,7 +212,7 @@ qemuHotplugWaitForTrayEject(virQEMUDriverPtr driver,
         if (rc > 0) {
             /* the caller called qemuMonitorEjectMedia which usually reports an
              * error. Report the failure in an off-chance that it didn't. */
-            if (!virGetLastError()) {
+            if (!virGetLastErrorCode()) {
                 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                _("timed out waiting for disk tray status update"));
             }
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 7602a30..bf4a144 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -4944,7 +4944,7 @@ qemuMigrationDstFinish(virQEMUDriverPtr driver,
                                  inPostCopy ? VIR_DOMAIN_RUNNING_POSTCOPY
                                             : VIR_DOMAIN_RUNNING_MIGRATED,
                                  QEMU_ASYNC_JOB_MIGRATION_IN) < 0) {
-            if (virGetLastError() == NULL)
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_INTERNAL_ERROR,
                                "%s", _("resume operation failed"));
             /* Need to save the current error, in case shutting
@@ -5082,7 +5082,7 @@ qemuMigrationDstFinish(virQEMUDriverPtr driver,
     /* Set a special error if Finish is expected to return NULL as a result of
      * successful call with retcode != 0
      */
-    if (retcode != 0 && !dom && !virGetLastError())
+    if (retcode != 0 && !dom && !virGetLastErrorCode())
         virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL);
     return dom;
 }
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 3918791..f68fd47 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -752,8 +752,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque)
             /* Already have an error, so clear any new error */
             virResetLastError();
         } else {
-            virErrorPtr err = virGetLastError();
-            if (!err)
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                _("Error while processing monitor IO"));
             virCopyLastError(&mon->lastError);
@@ -1032,7 +1031,7 @@ qemuMonitorClose(qemuMonitorPtr mon)
     /* Propagate existing monitor error in case the current thread has no
      * error set.
      */
-    if (mon->lastError.code != VIR_ERR_OK && !virGetLastError())
+    if (mon->lastError.code != VIR_ERR_OK && !virGetLastErrorCode())
         virSetError(&mon->lastError);
 
     virObjectUnlock(mon);
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 8176175..306067b 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -4338,7 +4338,7 @@ qemuMonitorJSONDiskNameLookup(qemuMonitorPtr mon,
     }
     /* Guarantee an error when returning NULL, but don't override a
      * more specific error if one was already generated.  */
-    if (!ret && !virGetLastError())
+    if (!ret && !virGetLastErrorCode())
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unable to find backing name for device %s"),
                        device);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 37876b8..b8f195c 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -558,7 +558,7 @@ qemuProcessFakeReboot(void *opaque)
     if (qemuProcessStartCPUs(driver, vm,
                              reason,
                              QEMU_ASYNC_JOB_NONE) < 0) {
-        if (virGetLastError() == NULL)
+        if (!virGetLastErrorCode())
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            "%s", _("resume operation failed"));
         goto endjob;
@@ -6259,7 +6259,7 @@ qemuProcessFinishStartup(virQEMUDriverPtr driver,
         if (qemuProcessStartCPUs(driver, vm,
                                  VIR_DOMAIN_RUNNING_BOOTED,
                                  asyncJob) < 0) {
-            if (!virGetLastError())
+            if (!virGetLastErrorCode())
                 virReportError(VIR_ERR_OPERATION_FAILED, "%s",
                                _("resume operation failed"));
             goto cleanup;
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 95437b4..e670e16 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -3672,8 +3672,7 @@ remoteAuthenticate(virConnectPtr conn, struct private_data *priv,
                (xdrproc_t) xdr_void, (char *) NULL,
                (xdrproc_t) xdr_remote_auth_list_ret, (char *) &ret);
     if (err < 0) {
-        virErrorPtr verr = virGetLastError();
-        if (verr && verr->code == VIR_ERR_NO_SUPPORT) {
+        if (virGetLastErrorCode() == VIR_ERR_NO_SUPPORT) {
             /* Missing RPC - old server - ignore */
             virResetLastError();
             return 0;
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index 6bbc984..b4d8fb2 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -1958,7 +1958,7 @@ static int virNetClientIO(virNetClientPtr client,
         virNetClientIOUpdateCallback(client, true);
 
     if (rv == 0 &&
-        virGetLastError())
+        virGetLastErrorCode())
         rv = -1;
 
  cleanup:
diff --git a/src/rpc/virnetlibsshsession.c b/src/rpc/virnetlibsshsession.c
index 309e8a9..b2cb5c1 100644
--- a/src/rpc/virnetlibsshsession.c
+++ b/src/rpc/virnetlibsshsession.c
@@ -499,9 +499,7 @@ virNetLibsshImportPrivkey(virNetLibsshSessionPtr sess,
         err = SSH_AUTH_ERROR;
         goto error;
     } else if (ret == SSH_ERROR) {
-        virErrorPtr vir_err = virGetLastError();
-
-        if (!vir_err || !vir_err->code) {
+        if (!virGetLastErrorCode()) {
             virReportError(VIR_ERR_AUTH_FAILED,
                            _("error while opening private key '%s', wrong "
                              "passphrase?"),
diff --git a/src/util/virmodule.c b/src/util/virmodule.c
index ff8c227..9d7d249 100644
--- a/src/util/virmodule.c
+++ b/src/util/virmodule.c
@@ -123,8 +123,7 @@ virModuleLoad(const char *path,
     if ((*regsym)() < 0) {
         /* regsym() should report an error itself, but lets
          * just make sure */
-        virErrorPtr err = virGetLastError();
-        if (err == NULL) {
+        if (!virGetLastErrorCode()) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("Failed to execute symbol '%s' in module '%s'"),
                            regfunc, path);
diff --git a/src/util/virxml.c b/src/util/virxml.c
index 6e87605..b5caee7 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -708,7 +708,7 @@ catchXMLError(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
 
     /* conditions for error printing */
     if (!ctxt ||
-        (virGetLastError() != NULL) ||
+        (virGetLastErrorCode()) ||
         ctxt->input == NULL ||
         ctxt->lastError.level != XML_ERR_FATAL ||
         ctxt->lastError.message == NULL)
@@ -845,7 +845,7 @@ virXMLParseHelper(int domcode,
     xmlFreeDoc(xml);
     xml = NULL;
 
-    if (virGetLastError() == NULL) {
+    if (!virGetLastErrorCode()) {
         virGenericReportError(domcode, VIR_ERR_XML_ERROR,
                               "%s", _("failed to parse xml document"));
     }
diff --git a/tests/commandtest.c b/tests/commandtest.c
index ad81c2a..3bb7220 100644
--- a/tests/commandtest.c
+++ b/tests/commandtest.c
@@ -127,7 +127,7 @@ static int test0(const void *unused ATTRIBUTE_UNUSED)
     if (virCommandRun(cmd, NULL) == 0)
         goto cleanup;
 
-    if (virGetLastError() == NULL)
+    if (!virGetLastErrorCode())
         goto cleanup;
 
     virResetLastError();
diff --git a/tests/testutils.c b/tests/testutils.c
index 4b13d11..f0719c8 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -178,8 +178,7 @@ virTestRun(const char *title,
 
     virResetLastError();
     ret = body(data);
-    virErrorPtr err = virGetLastError();
-    if (err) {
+    if (virGetLastErrorCode()) {
         if (virTestGetVerbose() || virTestGetDebug())
             virDispatchError(NULL);
     }
@@ -258,8 +257,7 @@ virTestRun(const char *title,
                 fprintf(stderr, " alloc %zu failed but no err status\n", i + 1);
 # endif
             } else {
-                virErrorPtr lerr = virGetLastError();
-                if (!lerr) {
+                if (!virGetLastErrorCode()) {
 # if 0
                     fprintf(stderr, " alloc %zu failed but no error report\n", i + 1);
 # endif
diff --git a/tests/virhostcputest.c b/tests/virhostcputest.c
index cb318df..091dd59 100644
--- a/tests/virhostcputest.c
+++ b/tests/virhostcputest.c
@@ -49,7 +49,7 @@ linuxTestCompareFiles(const char *cpuinfofile,
                                        &nodeinfo.nodes, &nodeinfo.sockets,
                                        &nodeinfo.cores, &nodeinfo.threads) < 0) {
         if (virTestGetDebug()) {
-            if (virGetLastError())
+            if (virGetLastErrorCode())
                 VIR_TEST_DEBUG("\n%s\n", virGetLastErrorMessage());
         }
         VIR_FORCE_FCLOSE(cpuinfo);
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index 0e11602..de68ea0 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -333,7 +333,7 @@ testStorageChain(const void *args)
         goto cleanup;
     }
     if (data->flags & EXP_WARN) {
-        if (!virGetLastError()) {
+        if (!virGetLastErrorCode()) {
             fprintf(stderr, "call should have warned\n");
             goto cleanup;
         }
@@ -343,7 +343,7 @@ testStorageChain(const void *args)
             goto cleanup;
         }
     } else {
-        if (virGetLastError()) {
+        if (virGetLastErrorCode()) {
             fprintf(stderr, "call should not have warned\n");
             goto cleanup;
         }
@@ -449,13 +449,13 @@ testStorageLookup(const void *args)
                                        idx, NULL);
 
     if (!data->expResult) {
-        if (!virGetLastError()) {
+        if (!virGetLastErrorCode()) {
             fprintf(stderr, "call should have failed\n");
             ret = -1;
         }
         virResetLastError();
     } else {
-        if (virGetLastError()) {
+        if (virGetLastErrorCode()) {
             fprintf(stderr, "call should not have warned\n");
             ret = -1;
         }
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 8e07177..32099cb 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -63,7 +63,6 @@ virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
                           unsigned int flags)
 {
     char *desc = NULL;
-    virErrorPtr err = NULL;
     xmlDocPtr doc = NULL;
     xmlXPathContextPtr ctxt = NULL;
     int type;
@@ -76,15 +75,15 @@ virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
     if ((desc = virDomainGetMetadata(dom, type, NULL, flags))) {
         return desc;
     } else {
-        err = virGetLastError();
+        int errCode = virGetLastErrorCode();
 
-        if (err && err->code == VIR_ERR_NO_DOMAIN_METADATA) {
+        if (errCode == VIR_ERR_NO_DOMAIN_METADATA) {
             desc = vshStrdup(ctl, "");
             vshResetLibvirtError();
             return desc;
         }
 
-        if (err && err->code != VIR_ERR_NO_SUPPORT)
+        if (errCode != VIR_ERR_NO_SUPPORT)
             return desc;
     }
 
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 598d2fa..e9972b9 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -94,9 +94,7 @@ virshDomainDefine(virConnectPtr conn, const char *xml, unsigned int flags)
          * try again.
          */
         if (!dom) {
-            virErrorPtr err = virGetLastError();
-            if (err &&
-                (err->code == VIR_ERR_NO_SUPPORT) &&
+            if ((virGetLastErrorCode() == VIR_ERR_NO_SUPPORT) &&
                 (flags == VIR_DOMAIN_DEFINE_VALIDATE))
                 dom = virDomainDefineXML(conn, xml);
         }
diff --git a/tools/virsh-util.c b/tools/virsh-util.c
index 44be3ad..aa88397 100644
--- a/tools/virsh-util.c
+++ b/tools/virsh-util.c
@@ -123,8 +123,7 @@ virshDomainState(vshControl *ctl,
     if (!priv->useGetInfo) {
         int state;
         if (virDomainGetState(dom, &state, reason, 0) < 0) {
-            virErrorPtr err = virGetLastError();
-            if (err && err->code == VIR_ERR_NO_SUPPORT)
+            if (virGetLastErrorCode() == VIR_ERR_NO_SUPPORT)
                 priv->useGetInfo = true;
             else
                 return -1;
diff --git a/tools/vsh.c b/tools/vsh.c
index 73ec007..8f8ffb0 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -266,7 +266,7 @@ vshSaveLibvirtHelperError(void)
     if (last_error)
         return;
 
-    if (!virGetLastError())
+    if (!virGetLastErrorCode())
         return;
 
     vshSaveLibvirtError();
-- 
2.7.4




More information about the libvir-list mailing list