From: Nick Bowler Date: Sun, 20 May 2012 19:54:24 +0000 (-0400) Subject: uobject: Make logging more generic. X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/commitdiff_plain/687c74b6b8cc9eb6015c279a0c757ca3c0047697 uobject: Make logging more generic. The logging functions can now be used on any GObject, not just UObject subclasses. In particular, it should be possible to call it on UPkg instances which do not derive from UObject. --- diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index 331b8ae..360dd31 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -612,18 +612,20 @@ static char *prepend_fmt(const char *prefix, const char *fmt) /* Logging helpers that automatically prepend the UObject class information. */ void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap) { - g_return_if_fail(IS_U_OBJECT(o)); - UObject *uo = U_OBJECT(o); - char *new_fmt = NULL; - - if (uo->pkg_name) { - new_fmt = prepend_fmt(uo->pkg_name, fmt); - if (!new_fmt) { - g_log(G_OBJECT_TYPE_NAME(o), level, "%s", - uo->pkg_file->name); - } else { + char *new_fmt = NULL, *obj_prefix = NULL; + + if (IS_U_OBJECT(o)) { + obj_prefix = U_OBJECT(o)->pkg_name; + } else if (G_IS_TYPE_MODULE(o)) { + obj_prefix = G_TYPE_MODULE(o)->name; + } + + if (obj_prefix) { + new_fmt = prepend_fmt(obj_prefix, fmt); + if (!new_fmt) + g_log(G_OBJECT_TYPE_NAME(o), level, "%s", obj_prefix); + else fmt = new_fmt; - } } g_logv(G_OBJECT_TYPE_NAME(o), level, fmt, ap);