diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-11-08 17:15:00 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-11-08 17:15:00 +0000 |
commit | cc28763013d1dcf116d1fffa2b699a758626af33 (patch) | |
tree | 30fa14cb12fe2b5ea0faea5d17e49451f9d19a92 | |
parent | 4a735f03e62904de95f28c689585fefffa9466df (diff) |
Add tp_debug_set_flags(), which doesn't accept the "persist" flag. Deprecate the related functions that did include the "persist" flag, and make the implementations more orthogonal.
-rw-r--r-- | docs/reference/telepathy-glib-sections.txt | 4 | ||||
-rw-r--r-- | telepathy-glib/debug.c | 77 | ||||
-rw-r--r-- | telepathy-glib/debug.h | 11 | ||||
-rw-r--r-- | telepathy-glib/internal-debug.h | 11 | ||||
-rw-r--r-- | telepathy-glib/run.c | 8 | ||||
-rw-r--r-- | tests/test-internal-debug.c | 2 |
6 files changed, 74 insertions, 39 deletions
diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt index 520159805..106413909 100644 --- a/docs/reference/telepathy-glib-sections.txt +++ b/docs/reference/telepathy-glib-sections.txt @@ -1098,10 +1098,12 @@ TP_PRESENCE_MIXIN <FILE>debug</FILE> <TITLE>debug</TITLE> <INCLUDE>telepathy-glib/debug.h</INCLUDE> +tp_debug_set_flags +tp_debug_set_persistent +<SUBSECTION> tp_debug_set_flags_from_string tp_debug_set_flags_from_env tp_debug_set_all_flags -tp_debug_set_persistent </SECTION> <SECTION> diff --git a/telepathy-glib/debug.c b/telepathy-glib/debug.c index bbde77f97..168044a8c 100644 --- a/telepathy-glib/debug.c +++ b/telepathy-glib/debug.c @@ -29,25 +29,10 @@ * is activated, it should call tp_debug_set_flags_from_string(), * tp_debug_set_flags_from_env() or tp_debug_set_all_flags(). * - * For example, at the time of writing Gabble has the following behaviour: - * - * <itemizedlist> - * <listitem>The environment variable $GABBLE_DEBUG contains a comma-separated - * list of debug modes to activate. In addition to parsing this variable - * itself, Gabble calls - * <literal>tp_debug_set_flags_from_env ("GABBLE_DEBUG")</literal>.</listitem> - * <listitem>The environment variable $GABBLE_PERSIST activates all possible - * debug modes. If this variable is set, in addition to activating all of - * its own debug modes, Gabble calls tp_debug_set_all_flags() to activate - * all possible debug output in telepathy-glib.</listitem> - * </itemizedlist> - * * The supported debug-mode keywords are subject to change, but currently * include: * * <itemizedlist> - * <listitem><literal>persist</literal> - keep running even if there are no - * connections for a while</listitem> * <listitem><literal>connection</literal> - output debug messages regarding * #TpBaseConnection</listitem> * <listitem><literal>im</literal> - output debug messages regarding @@ -78,27 +63,36 @@ static gboolean tp_debug_persistent = FALSE; /** * tp_debug_set_all_flags: * - * Activate all possible debug modes. + * Activate all possible debug modes. This also activates persistent mode, + * which should have been orthogonal. + * + * @deprecated since 0.6.1. Use tp_debug_set_flags ("all") and + * tp_debug_set_persistent() instead. */ void tp_debug_set_all_flags (void) { flags = 0xffff; + tp_debug_persistent = TRUE; } static GDebugKey keys[] = { { "groups", TP_DEBUG_GROUPS }, { "properties", TP_DEBUG_PROPERTIES }, { "connection", TP_DEBUG_CONNECTION }, - { "persist", TP_DEBUG_PERSIST }, { "im", TP_DEBUG_IM }, { "params", TP_DEBUG_PARAMS }, { "presence", TP_DEBUG_PRESENCE }, { 0, }, }; +static GDebugKey persist_keys[] = { + { "persist", 1 }, + { 0, }, +}; + /** - * tp_debug_set_flags_from_string: + * tp_debug_set_flags: * @flags_string: The flags to set, comma-separated. If %NULL or empty, * no additional flags are set. * @@ -106,30 +100,65 @@ static GDebugKey keys[] = { * set. * * The parsing matches that of g_parse_debug_string(). + * + * @since 0.6.1 */ void -tp_debug_set_flags_from_string (const gchar *flags_string) +tp_debug_set_flags (const gchar *flags_string) { guint nkeys; for (nkeys = 0; keys[nkeys].value; nkeys++); - if (flags_string) + if (flags_string != NULL) _tp_debug_set_flags (g_parse_debug_string (flags_string, keys, nkeys)); } /** + * tp_debug_set_flags_from_string: + * @flags_string: The flags to set, comma-separated. If %NULL or empty, + * no additional flags are set. + * + * Set the debug flags indicated by @flags_string, in addition to any already + * set. Unlike tp_debug_set_flags(), this enables persistence like + * tp_debug_set_persistent() if the "persist" flag is present or the string + * is "all" - this turns out to be unhelpful, as persistence should be + * orthogonal. + * + * The parsing matches that of g_parse_debug_string(). + * + * @deprecated since 0.6.1. Use tp_debug_set_flags() and + * tp_debug_set_persistent() instead + */ +void +tp_debug_set_flags_from_string (const gchar *flags_string) +{ + tp_debug_set_flags (flags_string); + + if (flags_string != NULL && + g_parse_debug_string (flags_string, persist_keys, 1) != 0) + tp_debug_set_persistent (TRUE); +} + +/** * tp_debug_set_flags_from_env: * @var: The name of the environment variable to parse * - * Set the debug flags indicated by the given environment variable, in - * addition to any already set. Equivalent to - * <literal>tp_debug_set_flags_from_string (g_getenv (var))</literal>. + * Equivalent to + * <literal>tp_debug_set_flags_from_string (g_getenv (var))</literal>, + * and has the same problem with persistence being included in "all". + * + * @deprecated since 0.6.1. Use tp_debug_set_flags(g_getenv(...)) and + * tp_debug_set_persistent() instead */ void tp_debug_set_flags_from_env (const gchar *var) { - tp_debug_set_flags_from_string (g_getenv (var)); + const gchar *val = g_getenv (var); + + tp_debug_set_flags (val); + if (val != NULL && g_parse_debug_string (val, persist_keys, 1) != 0) + tp_debug_set_persistent (TRUE); } /** diff --git a/telepathy-glib/debug.h b/telepathy-glib/debug.h index aaac79a32..d251c4b25 100644 --- a/telepathy-glib/debug.h +++ b/telepathy-glib/debug.h @@ -5,11 +5,16 @@ G_BEGIN_DECLS -void tp_debug_set_flags_from_string (const gchar *flags_string); -void tp_debug_set_flags_from_env (const gchar *var); -void tp_debug_set_all_flags (void); +void tp_debug_set_flags (const gchar *flags_string); + void tp_debug_set_persistent (gboolean persistent); +void tp_debug_set_flags_from_string (const gchar *flags_string) + G_GNUC_DEPRECATED; +void tp_debug_set_flags_from_env (const gchar *var) + G_GNUC_DEPRECATED; +void tp_debug_set_all_flags (void) G_GNUC_DEPRECATED; + G_END_DECLS #endif diff --git a/telepathy-glib/internal-debug.h b/telepathy-glib/internal-debug.h index 0d4e28d3f..2bffe51e5 100644 --- a/telepathy-glib/internal-debug.h +++ b/telepathy-glib/internal-debug.h @@ -19,9 +19,8 @@ typedef enum TP_DEBUG_PROPERTIES = 1 << 2, TP_DEBUG_IM = 1 << 3, TP_DEBUG_CONNECTION = 1 << 4, - TP_DEBUG_PERSIST = 1 << 5, - TP_DEBUG_PARAMS = 1 << 6, - TP_DEBUG_PRESENCE = 1 << 7 + TP_DEBUG_PARAMS = 1 << 5, + TP_DEBUG_PRESENCE = 1 << 6 } TpDebugFlags; gboolean _tp_debug_flag_is_set (TpDebugFlags flag); @@ -30,8 +29,14 @@ void _tp_debug (TpDebugFlags flag, const gchar *format, ...) G_GNUC_PRINTF (2, 3); gboolean _tp_debug_is_persistent (void); +#define _TP_DEBUG_IS_PERSISTENT (_tp_debug_is_persistent ()) + G_END_DECLS +#else + +#define _TP_DEBUG_IS_PERSISTENT (0) + #endif /* ENABLE_DEBUG */ #endif /* __DEBUG_H__ */ diff --git a/telepathy-glib/run.c b/telepathy-glib/run.c index d74f3d0fb..e5233900b 100644 --- a/telepathy-glib/run.c +++ b/telepathy-glib/run.c @@ -62,13 +62,7 @@ static guint timeout_id = 0; static gboolean kill_connection_manager (gpointer data) { -#ifdef ENABLE_DEBUG - if (!_tp_debug_is_persistent () - && !_tp_debug_flag_is_set (TP_DEBUG_PERSIST) - && !connections_exist) -#else - if (!connections_exist) -#endif + if (!_TP_DEBUG_IS_PERSISTENT && !connections_exist) { g_debug ("no connections, and timed out"); g_object_unref (manager); diff --git a/tests/test-internal-debug.c b/tests/test-internal-debug.c index 62163a217..e99688a79 100644 --- a/tests/test-internal-debug.c +++ b/tests/test-internal-debug.c @@ -71,7 +71,7 @@ int main (int argc, char **argv) { /* We enable debugging for IM, but not for the connection. */ - tp_debug_set_flags_from_string ("im"); + tp_debug_set_flags ("im"); test_debugging (); test_not_debugging (); test_debugging_again (); |