[libvirt] [PATCH 2/5] virterror: Add virSetError

Cole Robinson crobinso at redhat.com
Mon Jan 11 20:34:45 UTC 2010


Can be used to re-set an old error, which may have been squashed by
other functions (like cleanup routines). Will be used in subsequent patches

Signed-off-by: Cole Robinson <crobinso at redhat.com>
---
 src/libvirt_private.syms      |    1 +
 src/util/virterror.c          |   22 ++++++++++++++++++++++
 src/util/virterror_internal.h |    1 +
 3 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 10940eb..a894775 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -593,6 +593,7 @@ virRaiseErrorFull;
 virReportSystemErrorFull;
 virReportOOMErrorFull;
 virStrerror;
+virSetError;
 
 
 # xml.h
diff --git a/src/util/virterror.c b/src/util/virterror.c
index bee1242..e2128b9 100644
--- a/src/util/virterror.c
+++ b/src/util/virterror.c
@@ -290,6 +290,28 @@ virGetLastError(void)
 }
 
 /**
+ * virSetError:
+ *
+ * Set the current error from a previously saved error object
+ *
+ * Can be used to re-set an old error, which may have been squashed by
+ * other functions (like cleanup routines).
+ *
+ * Returns 0 on success, 1 on failure
+ */
+int
+virSetError(virErrorPtr newerr)
+{
+    virErrorPtr err;
+    err = virGetLastError();
+    if (!err)
+        return -1;
+
+    virResetError(err);
+    return virCopyError(newerr, err);
+}
+
+/**
  * virCopyLastError:
  * @to: target to receive the copy
  *
diff --git a/src/util/virterror_internal.h b/src/util/virterror_internal.h
index c246140..c713497 100644
--- a/src/util/virterror_internal.h
+++ b/src/util/virterror_internal.h
@@ -90,6 +90,7 @@ void virReportOOMErrorFull(virConnectPtr conn,
                      __FILE__, __FUNCTION__, __LINE__)
 
 
+int virSetError(virErrorPtr newerr);
 void virDispatchError(virConnectPtr conn);
 const char *virStrerror(int theerrno, char *errBuf, size_t errBufLen);
 
-- 
1.6.5.2




More information about the libvir-list mailing list