All uses of virLibNetworkError passed __FUNCTION__ as the info string;
avoid the duplication by factoring it into a macro which can contain
additional information (namely, the line number).
* src/util/virterror.c (virErrorMsg): Unify semantics.
* src/libvirt.c (virLibNetworkError): Convert to macro, and drop
extra parameter. All callers simplified.
(virLibNetworkErrorHelper): Refactor function to take new parameters.
(virStoragePoolBuild, virStoragePoolUndefine): Use correct error
type.
---
This was 3/3 in v1. Changes since then:
incorporate virErrorMsg change at the same time, which has the
nice effect of avoiding duplicate use of __FUNCTION__ in the
resulting output message.
src/libvirt.c | 58 ++++++++++++++++++++++++++-----------------------
src/util/virterror.c | 7 +-----
2 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c
index eb05337..54b9fb9 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -503,9 +503,11 @@ virLibDomainError(virDomainPtr domain, virErrorNumber error,
*
* Handle an error at the connection level
*/
+#define virLibNetworkError(net, error) \
+ virLibNetworkErrorHelper(net, error, __FILE__, __FUNCTION__, __LINE__)
static void
-virLibNetworkError(virNetworkPtr network, virErrorNumber error,
- const char *info)
+virLibNetworkErrorHelper(virNetworkPtr network, virErrorNumber error,
+ const char *file, const char *func, size_t line)
{
virConnectPtr conn = NULL;
const char *errmsg;
@@ -513,12 +515,12 @@ virLibNetworkError(virNetworkPtr network, virErrorNumber error,
if (error == VIR_ERR_OK)
return;
- errmsg = virErrorMsg(error, info);
+ errmsg = virErrorMsg(error, NULL);
if (error != VIR_ERR_INVALID_NETWORK) {
conn = network->conn;
}
- virRaiseError(conn, NULL, network, VIR_FROM_NET, error, VIR_ERR_ERROR,
- errmsg, info, NULL, 0, 0, errmsg, info);
+ virRaiseErrorFull(conn, file, func, line, VIR_FROM_NET, error,
+ VIR_ERR_ERROR, errmsg, NULL, NULL, 0, 0, errmsg, NULL);
}
/**
@@ -5630,7 +5632,7 @@ virNetworkGetConnect (virNetworkPtr net)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK (net)) {
- virLibNetworkError (NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError (NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return NULL;
}
@@ -6028,13 +6030,13 @@ virNetworkUndefine(virNetworkPtr network) {
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
conn = network->conn;
if (conn->flags & VIR_CONNECT_RO) {
- virLibNetworkError(network, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_OPERATION_DENIED);
goto error;
}
@@ -6071,13 +6073,13 @@ virNetworkCreate(virNetworkPtr network)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
conn = network->conn;
if (conn->flags & VIR_CONNECT_RO) {
- virLibNetworkError(network, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_OPERATION_DENIED);
goto error;
}
@@ -6116,14 +6118,14 @@ virNetworkDestroy(virNetworkPtr network)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
conn = network->conn;
if (conn->flags & VIR_CONNECT_RO) {
- virLibNetworkError(network, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_OPERATION_DENIED);
goto error;
}
@@ -6159,7 +6161,7 @@ virNetworkFree(virNetworkPtr network)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
@@ -6219,7 +6221,7 @@ virNetworkGetName(virNetworkPtr network)
virResetLastError();
if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (NULL);
}
@@ -6243,12 +6245,12 @@ virNetworkGetUUID(virNetworkPtr network, unsigned char *uuid)
virResetLastError();
if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
if (uuid == NULL) {
- virLibNetworkError(network, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_INVALID_ARG);
goto error;
}
@@ -6280,12 +6282,12 @@ virNetworkGetUUIDString(virNetworkPtr network, char *buf)
virResetLastError();
if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
if (buf == NULL) {
- virLibNetworkError(network, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_INVALID_ARG);
goto error;
}
@@ -6320,12 +6322,12 @@ virNetworkGetXMLDesc(virNetworkPtr network, int flags)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (NULL);
}
if (flags != 0) {
- virLibNetworkError(network, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_INVALID_ARG);
goto error;
}
@@ -6365,7 +6367,7 @@ virNetworkGetBridgeName(virNetworkPtr network)
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (NULL);
}
@@ -6408,12 +6410,12 @@ virNetworkGetAutostart(virNetworkPtr network,
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
if (!autostart) {
- virLibNetworkError(network, VIR_ERR_INVALID_ARG, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_INVALID_ARG);
goto error;
}
@@ -6454,13 +6456,13 @@ virNetworkSetAutostart(virNetworkPtr network,
virResetLastError();
if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK);
virDispatchError(NULL);
return (-1);
}
if (network->conn->flags & VIR_CONNECT_RO) {
- virLibNetworkError(network, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+ virLibNetworkError(network, VIR_ERR_OPERATION_DENIED);
goto error;
}
@@ -7638,7 +7640,8 @@ virStoragePoolBuild(virStoragePoolPtr pool,
virResetLastError();
if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) {
- virLibStoragePoolError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL,
+ __FUNCTION__);
virDispatchError(NULL);
return (-1);
}
@@ -7681,7 +7684,8 @@ virStoragePoolUndefine(virStoragePoolPtr pool)
virResetLastError();
if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) {
- virLibStoragePoolError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+ virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL,
+ __FUNCTION__);
virDispatchError(NULL);
return (-1);
}
diff --git a/src/util/virterror.c b/src/util/virterror.c
index af865e0..a16b9f6 100644
--- a/src/util/virterror.c
+++ b/src/util/virterror.c
@@ -877,12 +877,7 @@ virErrorMsg(virErrorNumber error, const char *info)
errmsg = _("parser error");
break;
case VIR_ERR_INVALID_NETWORK:
- /* FIXME: Adjust all callers before unifying semantics. */
- if (info == NULL)
- errmsg = _("invalid network pointer in");
- else
- errmsg = _("invalid network pointer in %s");
- info = NULL;
+ errmsg = _("invalid network pointer");
break;
case VIR_ERR_NETWORK_EXIST:
errmsg = _("network already exists");
--
1.7.0.1