pidgin/pidgin

Clean up g_log handling

2020-11-01, Gary Kramlich
9616360d5943
Parents b82c365e04e8
Children 953d563429b8
Clean up g_log handling

Clean up the way g_log messages are handled and remove a bunch of unnecessary stuff.

I removed the glibtrace stuff as this should really be done via `G_DEBUG=fatal-warnings` and not be a compile time option.

Testing Done:
Ran locally and verified that additional messages were showing up in the terminal (for domains that weren't previously listed).

Reviewed at https://reviews.imfreedom.org/r/183/
--- a/libpurple/meson.build Sun Nov 01 03:33:09 2020 -0600
+++ b/libpurple/meson.build Sun Nov 01 04:47:52 2020 -0600
@@ -271,7 +271,7 @@
purple_coresources + purple_builtsources +
purple_builtheaders,
'purpleprivate.h',
- c_args : ['-DPURPLE_COMPILATION'],
+ c_args : ['-DPURPLE_COMPILATION', '-DG_LOG_DOMAIN="Purple"'],
include_directories : [toplevel_inc, libpurple_inc],
install : true,
version : PURPLE_LIB_VERSION,
--- a/meson.build Sun Nov 01 03:33:09 2020 -0600
+++ b/meson.build Sun Nov 01 04:47:52 2020 -0600
@@ -545,14 +545,6 @@
pidginpath = find_program('pidgin', required : false)
-if get_option('glib-errors-trace')
- if compiler.get_id() == 'clang'
- error('--enable-glib-errors-trace doesn\'t work with clang')
- endif
- conf.set('ENABLE_GLIBTRACE', true)
- add_project_arguments('-rdynamic', language : 'c')
-endif
-
#######################################################################
# Check for Unity and Messaging Menu
# Remove when Ubuntu 16.04 is EOL
--- a/meson_options.txt Sun Nov 01 03:33:09 2020 -0600
+++ b/meson_options.txt Sun Nov 01 04:47:52 2020 -0600
@@ -7,9 +7,6 @@
option('extraversion', type : 'string',
description : 'extra version number to be displayed in Help->About and --help (for packagers)')
-option('glib-errors-trace', type : 'boolean', value : false,
- description : 'print backtraces for glib errors')
-
option('introspection', type : 'boolean', value : true,
description : 'build introspection data')
--- a/pidgin/meson.build Sun Nov 01 03:33:09 2020 -0600
+++ b/pidgin/meson.build Sun Nov 01 04:47:52 2020 -0600
@@ -211,7 +211,7 @@
libpidgin = shared_library('pidgin3',
libpidgin_SOURCES,
package_revision,
- c_args : ['-DPIDGIN_COMPILATION'],
+ c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_DOMAIN="Pidgin"'],
include_directories : [toplevel_inc],
version : PURPLE_LIB_VERSION,
dependencies : _libpidgin_dependencies,
@@ -223,6 +223,7 @@
pidgin = executable('pidgin3',
pidgin_SOURCES,
+ c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_DOMAIN="Pidgin"'],
include_directories : toplevel_inc,
dependencies : IS_WIN32 ? [] : [libpurple_dep, libpidgin_dep],
gui_app : true,
--- a/pidgin/pidgindebug.c Sun Nov 01 03:33:09 2020 -0600
+++ b/pidgin/pidgindebug.c Sun Nov 01 04:47:52 2020 -0600
@@ -36,10 +36,6 @@
#include "pidgindebug.h"
#include "pidginstock.h"
-#ifdef ENABLE_GLIBTRACE
-#include <execinfo.h>
-#endif
-
#include <gdk/gdkkeysyms.h>
#include "pidginresources.h"
@@ -592,7 +588,7 @@
width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/width");
height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/debug/height");
- purple_debug_info("gtkdebug", "Setting dimensions to %d, %d\n",
+ purple_debug_info("pidgindebug", "Setting dimensions to %d, %d\n",
width, height);
gtk_window_set_default_size(GTK_WINDOW(win), width, height);
@@ -710,68 +706,43 @@
}
static void
-pidgin_glib_log_handler(const gchar *domain, GLogLevelFlags flags,
- const gchar *msg, gpointer user_data)
+pidgin_debug_g_log_handler(const gchar *domain, GLogLevelFlags flags,
+ const gchar *msg, gpointer user_data)
{
PurpleDebugLevel level;
- char *new_msg = NULL;
- char *new_domain = NULL;
+ GString *category = g_string_new("GLog-");
- if ((flags & G_LOG_LEVEL_ERROR) == G_LOG_LEVEL_ERROR)
- level = PURPLE_DEBUG_ERROR;
- else if ((flags & G_LOG_LEVEL_CRITICAL) == G_LOG_LEVEL_CRITICAL)
- level = PURPLE_DEBUG_FATAL;
- else if ((flags & G_LOG_LEVEL_WARNING) == G_LOG_LEVEL_WARNING)
- level = PURPLE_DEBUG_WARNING;
- else if ((flags & G_LOG_LEVEL_MESSAGE) == G_LOG_LEVEL_MESSAGE)
- level = PURPLE_DEBUG_INFO;
- else if ((flags & G_LOG_LEVEL_INFO) == G_LOG_LEVEL_INFO)
- level = PURPLE_DEBUG_INFO;
- else if ((flags & G_LOG_LEVEL_DEBUG) == G_LOG_LEVEL_DEBUG)
- level = PURPLE_DEBUG_MISC;
- else
- {
- purple_debug_warning("gtkdebug",
- "Unknown glib logging level in %d\n", flags);
-
- level = PURPLE_DEBUG_MISC; /* This will never happen. */
+ if(domain != NULL) {
+ g_string_append_printf(category, "%s-", domain);
}
- if (msg != NULL)
- new_msg = purple_utf8_try_convert(msg);
-
- if (domain != NULL)
- new_domain = purple_utf8_try_convert(domain);
-
- if (new_msg != NULL)
- {
-#ifdef ENABLE_GLIBTRACE
- void *bt_buff[20];
- size_t bt_size;
-
- bt_size = backtrace(bt_buff, 20);
- fprintf(stderr, "\nBacktrace for \"%s\" (%s):\n", new_msg,
- new_domain != NULL ? new_domain : "g_log");
- backtrace_symbols_fd(bt_buff, bt_size, STDERR_FILENO);
- fprintf(stderr, "\n");
-#endif
-
- purple_debug(level, (new_domain != NULL ? new_domain : "g_log"),
- "%s\n", new_msg);
-
- g_free(new_msg);
+ if((flags & G_LOG_LEVEL_ERROR) != 0) {
+ g_string_append(category, "Error");
+ level = PURPLE_DEBUG_ERROR;
+ } else if((flags & G_LOG_LEVEL_CRITICAL) != 0) {
+ g_string_append(category, "Fatal");
+ level = PURPLE_DEBUG_FATAL;
+ } else if((flags & G_LOG_LEVEL_WARNING) != 0) {
+ g_string_append(category, "Warning");
+ level = PURPLE_DEBUG_WARNING;
+ } else if((flags & G_LOG_LEVEL_MESSAGE) != 0) {
+ g_string_append(category, "Message");
+ level = PURPLE_DEBUG_INFO;
+ } else if((flags & G_LOG_LEVEL_INFO) != 0) {
+ g_string_append(category, "Info");
+ level = PURPLE_DEBUG_INFO;
+ } else if((flags & G_LOG_LEVEL_DEBUG) != 0) {
+ g_string_append(category, "Debug");
+ level = PURPLE_DEBUG_MISC;
+ } else {
+ g_string_append(category, "Unknown");
+ level = PURPLE_DEBUG_MISC;
}
- g_free(new_domain);
+ purple_debug(level, category->str, "%s\n", msg);
+ g_string_free(category, TRUE);
}
-#ifdef _WIN32
-static void
-pidgin_glib_dummy_print_handler(const gchar *string)
-{
-}
-#endif
-
static void
pidgin_debug_ui_init(PidginDebugUi *self)
{
@@ -803,32 +774,7 @@
purple_prefs_connect_callback(NULL, PIDGIN_PREFS_ROOT "/debug/enabled",
debug_enabled_cb, self);
-#define REGISTER_G_LOG_HANDLER(name) \
- g_log_set_handler((name), G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL \
- | G_LOG_FLAG_RECURSION, \
- pidgin_glib_log_handler, NULL)
-
- /* Register the glib/gtk log handlers. */
- REGISTER_G_LOG_HANDLER(NULL);
- REGISTER_G_LOG_HANDLER("Gdk");
- REGISTER_G_LOG_HANDLER("GdkPixbuf");
- REGISTER_G_LOG_HANDLER("GLib");
- REGISTER_G_LOG_HANDLER("GLib-GObject");
- REGISTER_G_LOG_HANDLER("GModule");
- REGISTER_G_LOG_HANDLER("Gnt"); /* just in case we find a gnt plugin */
- REGISTER_G_LOG_HANDLER("GPlugin");
- REGISTER_G_LOG_HANDLER("GPluginGtk");
- REGISTER_G_LOG_HANDLER("GThread");
- REGISTER_G_LOG_HANDLER("Gtk");
- REGISTER_G_LOG_HANDLER("Json");
- REGISTER_G_LOG_HANDLER("libsoup");
- REGISTER_G_LOG_HANDLER("Talkatu");
- REGISTER_G_LOG_HANDLER("GStreamer");
-
-#ifdef _WIN32
- if (!purple_debug_is_enabled())
- g_set_print_handler(pidgin_glib_dummy_print_handler);
-#endif
+ g_log_set_default_handler(pidgin_debug_g_log_handler, NULL);
}
static void