[Libosinfo] [libosinfo 6/6] install-script: Add propagate_libxml_error() helper
Christophe Fergeau
cfergeau at redhat.com
Thu Sep 20 13:59:22 UTC 2018
This simplifies the code a bit.
---
osinfo/osinfo_install_script.c | 57 +++++++++++++++++-----------------
1 file changed, 29 insertions(+), 28 deletions(-)
diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
index 0ae17c70..016f8505 100644
--- a/osinfo/osinfo_install_script.c
+++ b/osinfo/osinfo_install_script.c
@@ -656,6 +656,25 @@ osinfo_install_script_get_param_value_list(OsinfoInstallScript *script,
return values;
}
+static void propagate_libxml_error(GError **error, const char *format, ...) G_GNUC_PRINTF(2, 3);
+
+static void propagate_libxml_error(GError **error, const char *format, ...)
+{
+ xmlErrorPtr err = xmlGetLastError();
+ char *prefix;
+ va_list ap;
+
+ va_start(ap, format);
+ prefix = g_strdup_vprintf(format, ap);
+ va_end(ap);
+
+ if (err == NULL) {
+ g_set_error_literal(error, OSINFO_ERROR, 0, prefix);
+ } else {
+ g_set_error(error, OSINFO_ERROR, 0, "%s: %s", prefix, err->message);
+ }
+ g_free(prefix);
+}
static xmlNodePtr osinfo_install_script_generate_entity_xml(OsinfoInstallScript *script,
OsinfoEntity *entity,
@@ -668,26 +687,17 @@ static xmlNodePtr osinfo_install_script_generate_entity_xml(OsinfoInstallScript
GList *tmp1;
if (!(node = xmlNewDocNode(NULL, NULL, (xmlChar*)name, NULL))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0,
- _("Unable to create XML node '%s': '%s'"),
- name, err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to create XML node '%s'"), name);
goto error;
}
if (!(data = xmlNewDocRawNode(NULL, NULL, (const xmlChar*)"id",
(const xmlChar*)osinfo_entity_get_id(entity)))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0,
- _("Unable to create XML node 'id': '%s'"),
- err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to create XML node 'id'"));
goto error;
}
if (!(xmlAddChild(node, data))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0,
- _("Unable to add XML child '%s'"),
- err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to add XML child"));
goto error;
}
data = NULL;
@@ -708,17 +718,12 @@ static xmlNodePtr osinfo_install_script_generate_entity_xml(OsinfoInstallScript
while (tmp2) {
if (!(data = xmlNewDocRawNode(NULL, NULL, (const xmlChar*)tmp1->data,
(const xmlChar*)tmp2->data))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0,
- _("Unable to create XML node '%s': '%s'"),
- (const gchar *)tmp1->data, err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to create XML node '%s'"),
+ (const gchar *)tmp1->data);
goto error;
}
if (!(xmlAddChild(node, data))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0,
- _("Unable to add XML child '%s'"),
- err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to add XML child"));
goto error;
}
data = NULL;
@@ -764,8 +769,7 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
error)))
goto error;
if (!(xmlAddChild(root, node))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0, _("Unable to set XML root '%s'"), err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to set XML root"));
goto error;
}
@@ -775,8 +779,7 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
error)))
goto error;
if (!(xmlAddChild(root, node))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0, _("Unable to set XML root '%s'"), err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to set XML root"));
goto error;
}
@@ -787,8 +790,7 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
error)))
goto error;
if (!(xmlAddChild(root, node))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0, _("Unable to set 'media' node: '%s'"), err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to set 'media' node"));
goto error;
}
}
@@ -799,8 +801,7 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
error)))
goto error;
if (!(xmlAddChild(root, node))) {
- xmlErrorPtr err = xmlGetLastError();
- g_set_error(error, OSINFO_ERROR, 0, _("Unable to set XML root '%s'"), err ? err->message : "");
+ propagate_libxml_error(error, _("Unable to set XML root"));
goto error;
}
--
2.19.0
More information about the Libosinfo
mailing list