[Libosinfo] [libosinfo 3/6] loader: Introduce OSINFO_ERROR
Christophe Fergeau
cfergeau at redhat.com
Thu Sep 20 13:59:19 UTC 2018
Since glib commit 2.31.10~16 [1], g_set_error() will issue a warning if
it's passed a NULL domain. libosinfo is doing this in a few places (try
for example 'osinfo-query os winxp'). This commit adds a generic OSINFO_ERROR
domain which will be used instead of NULL. It's a bit inconsistent with
OSINFO_MEDIA_ERROR and OSINFO_TREE_ERROR in that they both start with
"osinfo-*" while OSINFO_ERROR uses "libosinfo". However, since
OsinfoLoader already makes use of that quark, changing that would
arguably be an (very small) ABI break.
[1] https://gitlab.gnome.org/GNOME/glib/commit/6d9f874330
---
osinfo/libosinfo.syms | 5 +++++
osinfo/osinfo_loader.c | 24 +++++++++++++++++++++---
osinfo/osinfo_loader.h | 8 ++++++++
3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index 6bd08a10..db9b8b20 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -529,6 +529,11 @@ LIBOSINFO_0.2.13 {
osinfo_media_get_eject_after_install;
} LIBOSINFO_0.2.12;
+LIBOSINFO_1.3.0 {
+ global:
+ osinfo_error_quark;
+} LIBOSINFO_0.2.13;
+
/* Symbols in next release...
LIBOSINFO_0.0.2 {
diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
index 3accb29e..d1bf61d9 100644
--- a/osinfo/osinfo_loader.c
+++ b/osinfo/osinfo_loader.c
@@ -144,8 +144,26 @@ OsinfoLoader *osinfo_loader_new(void)
return g_object_new(OSINFO_TYPE_LOADER, NULL);
}
-#define OSINFO_LOADER_SET_ERROR(err, msg) \
- g_set_error_literal((err), g_quark_from_static_string("libosinfo"), 0, (msg));
+/**
+ * osinfo_error_quark:
+ *
+ * Gets a #GQuark representing the string "libosinfo"
+ *
+ * Returns: the #GQuark representing the string.
+ **/
+GQuark
+osinfo_error_quark(void)
+{
+ static GQuark quark = 0;
+
+ if (!quark)
+ quark = g_quark_from_static_string("libosinfo");
+
+ return quark;
+}
+
+#define OSINFO_LOADER_SET_ERROR(err, msg) \
+ g_set_error_literal((err), OSINFO_ERROR, 0, (msg));
static gboolean error_is_set(GError **error)
{
@@ -191,7 +209,7 @@ osinfo_loader_nodeset(const char *xpath,
if (obj == NULL)
return 0;
if (obj->type != XPATH_NODESET) {
- g_set_error(err, g_quark_from_static_string("libosinfo"), 0,
+ g_set_error(err, OSINFO_ERROR, 0,
_("Expected a nodeset in XPath query %s"), xpath);
xmlXPathFreeObject(obj);
return -1;
diff --git a/osinfo/osinfo_loader.h b/osinfo/osinfo_loader.h
index 41bfb146..76beb7ce 100644
--- a/osinfo/osinfo_loader.h
+++ b/osinfo/osinfo_loader.h
@@ -66,6 +66,14 @@ struct _OsinfoLoaderClass
GType osinfo_loader_get_type(void);
+/**
+ * OSINFO_ERROR:
+ *
+ * Error domain for generic libosinfo errors
+ */
+#define OSINFO_ERROR osinfo_error_quark()
+GQuark osinfo_error_quark(void);
+
OsinfoLoader *osinfo_loader_new(void);
OsinfoDb *osinfo_loader_get_db(OsinfoLoader *loader);
--
2.19.0
More information about the Libosinfo
mailing list