# HG changeset patch # User John Bailey # Date 1246760763 0 # Node ID 319b0f3dd2d0e0fff8f7057f61430929ca744f60 # Parent 304fef974f284e2e0a7d712646ef33a1c4d876b3# Parent 377e063ecda58ad8cf48855e68c6a60e6878549b merge of '034300b33708a7dbb7856d91c3098493b2dffa34' and 'adf7d277ae63ff767e0db40965e3eee80cec5e46' diff -r 304fef974f28 -r 319b0f3dd2d0 ChangeLog --- a/ChangeLog Sun Jul 05 00:07:03 2009 +0000 +++ b/ChangeLog Sun Jul 05 02:26:03 2009 +0000 @@ -26,6 +26,10 @@ PURPLE_GNUTLS_DEBUG environment variable, which is an integer between 0 and 9 (higher is more verbose). Higher values may reveal sensitive information. + * PURPLE_VERBOSE_DEBUG environment variable. Currently this is an "on" or + "off" variable. Set it to any value to turn it on and unset it to turn + it off. This will optionally be used to only show less useful debug + information on an as-needed basis. Gadu-Gadu: * Accounts can specify a server to which to connect. diff -r 304fef974f28 -r 319b0f3dd2d0 ChangeLog.API --- a/ChangeLog.API Sun Jul 05 00:07:03 2009 +0000 +++ b/ChangeLog.API Sun Jul 05 02:26:03 2009 +0000 @@ -30,6 +30,10 @@ * purple_connection_set_protocol_data * purple_contact_destroy * purple_conv_chat_invite_user + * purple_debug_is_unsafe + * purple_debug_is_verbose + * purple_debug_set_unsafe + * purple_debug_set_verbose * purple_global_proxy_set_info * purple_group_destroy * purple_log_get_activity_score diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/debug.c --- a/libpurple/debug.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/debug.c Sun Jul 05 02:26:03 2009 +0000 @@ -36,12 +36,20 @@ * * It doesn't make sense to make this a normal Purple preference * because it's a command line option. This will always be FALSE, - * unless the user explicitly started Purple with the -d flag. + * unless the user explicitly started the UI with the -d flag. * It doesn't matter what this value was the last time Purple was * started, so it doesn't make sense to save it in prefs. */ static gboolean debug_enabled = FALSE; +/* + * These determine whether verbose or unsafe debugging are desired. I + * don't want to make these purple preferences because their values should + * not be remembered across instances of the UI. + */ +static gboolean debug_verbose = FALSE; +static gboolean debug_unsafe = FALSE; + static void purple_debug_vargs(PurpleDebugLevel level, const char *category, const char *format, va_list args) @@ -175,6 +183,30 @@ debug_ui_ops = ops; } +gboolean +purple_debug_is_verbose() +{ + return debug_verbose; +} + +void +purple_debug_set_verbose(gboolean verbose) +{ + debug_verbose = verbose; +} + +gboolean +purple_debug_is_unsafe() +{ + return debug_unsafe; +} + +void +purple_debug_set_unsafe(gboolean unsafe) +{ + debug_unsafe = unsafe; +} + PurpleDebugUiOps * purple_debug_get_ui_ops(void) { @@ -184,6 +216,13 @@ void purple_debug_init(void) { + /* Read environment variables once per init */ + if(g_getenv("PURPLE_UNSAFE_DEBUG")) + purple_debug_set_unsafe(TRUE); + + if(g_getenv("PURPLE_VERBOSE_DEBUG")) + purple_debug_set_verbose(TRUE); + purple_prefs_add_none("/purple/debug"); /* @@ -193,3 +232,4 @@ */ purple_prefs_add_bool("/purple/debug/timestamps", TRUE); } + diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/debug.h --- a/libpurple/debug.h Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/debug.h Sun Jul 05 02:26:03 2009 +0000 @@ -151,10 +151,50 @@ /** * Check if console debug output is enabled. * - * @return TRUE if debuggin is enabled, FALSE if it is not. + * @return TRUE if debugging is enabled, FALSE if it is not. */ gboolean purple_debug_is_enabled(void); +/** + * Enable or disable verbose debugging. This ordinarily should only be called + * by #purple_debug_init, but there are cases where this can be useful for + * plugins. + * + * @param verbose TRUE to enable verbose debugging or FALSE to disable it. + * + * @since 2.6.0 + */ +void purple_debug_set_verbose(gboolean verbose); + +/** + * Check if verbose logging is enabled. + * + * @return TRUE if verbose debugging is enabled, FALSE if it is not. + * + * @since 2.6.0 + */ +gboolean purple_debug_is_verbose(void); + +/** + * Enable or disable verbose debugging. This ordinarily should only be called + * by #purple_debug_init, but there are cases where this can be useful for + * plugins. + * + * @param unsafe TRUE to enable verbose debugging or FALSE to disable it. + * + * @since 2.6.0 + */ +void purple_debug_set_unsafe(gboolean unsafe); + +/** + * Check if unsafe debugging is enabled. + * + * @return TRUE if verbose debugging is enabled, FALSE if it is not. + * + * @since 2.6.0 + */ +gboolean purple_debug_is_unsafe(void); + /*@}*/ /**************************************************************************/ diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/msn/soap.c --- a/libpurple/protocols/msn/soap.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/msn/soap.c Sun Jul 05 02:26:03 2009 +0000 @@ -80,7 +80,7 @@ conn->session = session; conn->host = g_strdup(host); conn->queue = g_queue_new(); - conn->unsafe_debug = g_getenv("PURPLE_UNSAFE_DEBUG") != NULL; + conn->unsafe_debug = purple_debug_is_unsafe(); return conn; } diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/util.c --- a/libpurple/protocols/yahoo/util.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/util.c Sun Jul 05 02:26:03 2009 +0000 @@ -354,7 +354,7 @@ else if ((match = (char *) g_hash_table_lookup(ht, tmp->str))) g_string_append(s, match); else { - purple_debug(PURPLE_DEBUG_ERROR, "yahoo", + purple_debug_error("yahoo", "Unknown ansi code 'ESC[%sm'.\n", tmp->str); g_string_free(tmp, TRUE); break; @@ -423,7 +423,7 @@ ret = s->str; g_string_free(s, FALSE); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "yahoo_codes_to_html: Returning string: '%s'.\n", ret); + purple_debug_misc("yahoo", "yahoo_codes_to_html: Returning string: '%s'.\n", ret); return ret; } @@ -822,7 +822,7 @@ g_string_free(dest, FALSE); esc = g_strescape(ret, NULL); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "yahoo_html_to_codes: Returning string: '%s'.\n", esc); + purple_debug_misc("yahoo", "yahoo_html_to_codes: Returning string: '%s'.\n", esc); g_free(esc); yahoo_htc_queue_cleanup(colors); diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Sun Jul 05 02:26:03 2009 +0000 @@ -390,7 +390,7 @@ b = i->data; g = purple_buddy_get_group(b); if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", + purple_debug_misc("yahoo", "Oh good, %s is in the right group (%s).\n", name, group); list = g_slist_delete_link(list, i); onlist = 1; @@ -399,7 +399,7 @@ } if (!onlist) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", + purple_debug_misc("yahoo", "Uhoh, %s isn't on the list (or not in this group), adding him to group %s.\n", name, group); if (!(g = purple_find_group(group))) { g = purple_group_new(group); @@ -427,7 +427,7 @@ for (i = list; i; i = i->next) { b = i->data; g = purple_buddy_get_group(b); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, + purple_debug_misc("yahoo", "Deleting Buddy %s from group %s.\n", name, purple_group_get_name(g)); purple_blist_remove_buddy(b); } @@ -801,9 +801,8 @@ PurpleBuddy *bud = purple_find_buddy(account, from); if (!bud) { - purple_debug(PURPLE_DEBUG_WARNING, "yahoo", - "%s is playing a game, and doesn't want " - "you to know.\n", from); + purple_debug_warning("yahoo", + "%s is playing a game, and doesn't want you to know.\n", from); } f = yahoo_friend_find(gc, from); @@ -1943,8 +1942,7 @@ name = g_strdup(purple_buddy_get_name(buddy)); account = purple_buddy_get_account(buddy); - purple_debug(PURPLE_DEBUG_INFO, "blist", - "Removing '%s' from buddy list.\n", name); + purple_debug_info("yahoo", "blist: Removing '%s' from buddy list.\n", name); purple_account_remove_buddy(account, buddy, group); purple_blist_remove_buddy(buddy); @@ -2382,14 +2380,14 @@ pos += 2; pktlen = yahoo_get16(buf + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: %d bytes to read\n", len); + purple_debug_misc("yahoo", "p2p: %d bytes to read\n", len); pkt = yahoo_packet_new(0, 0, 0); pkt->service = yahoo_get16(buf + pos); pos += 2; pkt->status = yahoo_get32(buf + pos); pos += 4; pkt->id = yahoo_get32(buf + pos); pos += 4; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status); + purple_debug_misc("yahoo", "p2p: Yahoo Service: 0x%02x Status: %d\n",pkt->service, pkt->status); yahoo_packet_read(pkt, buf + pos, pktlen); /* packet processing */ @@ -2909,8 +2907,7 @@ break; default: - purple_debug(PURPLE_DEBUG_ERROR, "yahoo", - "Unhandled service 0x%02x\n", pkt->service); + purple_debug_error("yahoo", "Unhandled service 0x%02x\n", pkt->service); break; } } @@ -2979,8 +2976,7 @@ pos += 2; pktlen = yahoo_get16(yd->rxqueue + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen); + purple_debug_misc("yahoo", "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen); if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen)) return; @@ -2991,8 +2987,7 @@ pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2; pkt->status = yahoo_get32(yd->rxqueue + pos); pos += 4; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "Yahoo Service: 0x%02x Status: %d\n", + purple_debug_misc("yahoo", "Yahoo Service: 0x%02x Status: %d\n", pkt->service, pkt->status); pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4; @@ -4882,8 +4877,7 @@ gc = purple_conversation_get_gc(conv); yd = gc->proto_data; id = yd->conf_id; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "Trying to join %s \n", args[0]); + purple_debug_info("yahoo", "Trying to join %s \n", args[0]); comp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); g_hash_table_replace(comp, g_strdup("room"), g_ascii_strdown(args[0], -1)); @@ -4920,8 +4914,8 @@ g_return_val_if_fail(c != NULL, FALSE); - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "Sending on account %s to buddy %s.\n", username, c->name); + purple_debug_info("yahoo", "Sending on account %s to buddy %s.\n", + username, c->name); purple_conv_im_send_with_flags(PURPLE_CONV_IM(c), "", PURPLE_MESSAGE_INVISIBLE); return TRUE; diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/yahoo_filexfer.c --- a/libpurple/protocols/yahoo/yahoo_filexfer.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_filexfer.c Sun Jul 05 02:26:03 2009 +0000 @@ -156,8 +156,8 @@ PurpleXfer *xfer; struct yahoo_xfer_data *xd; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "AAA - in yahoo_receivefile_connected\n"); + purple_debug_info("yahoo", "in yahoo_receivefile_connected\n"); + if (!(xfer = data)) return; if (!(xd = xfer->data)) @@ -235,8 +235,8 @@ PurpleAccount *account; struct yahoo_data *yd; - purple_debug(PURPLE_DEBUG_INFO, "yahoo", - "AAA - in yahoo_sendfile_connected\n"); + purple_debug_info("yahoo", "in yahoo_sendfile_connected\n"); + if (!(xfer = data)) return; if (!(xd = xfer->data)) diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/yahoo_packet.c --- a/libpurple/protocols/yahoo/yahoo_packet.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_packet.c Sun Jul 05 02:26:03 2009 +0000 @@ -187,15 +187,12 @@ pos = x; pkt->hash = g_slist_prepend(pkt->hash, pair); -#ifdef DEBUG - { + if (purple_debug_is_verbose()) { char *esc; esc = g_strescape(pair->value, NULL); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "Key: %d \tValue: %s\n", pair->key, esc); + purple_debug_misc("yahoo", "Key: %d \tValue: %s\n", pair->key, esc); g_free(esc); } -#endif /* DEBUG */ } else { g_free(pair); } @@ -253,35 +250,35 @@ #ifdef YAHOO_DEBUG int i; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc("yahoo", ""); for (i = 0; i + 1 < len; i += 2) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02x%02x ", data[i], data[i + 1]); + purple_debug_misc(NULL, "%02x%02x ", data[i], data[i + 1]); } if (i < len) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02x", data[i]); + purple_debug_misc(NULL, "%02x", data[i]); - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); for (i = 0; i < len; i++) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } if (g_ascii_isprint(data[i])) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%c ", data[i]); + purple_debug_misc(NULL, "%c ", data[i]); else - purple_debug(PURPLE_DEBUG_MISC, NULL, ". "); + purple_debug_misc(NULL, ". "); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); + purple_debug_misc(NULL, "\n"); #endif /* YAHOO_DEBUG */ } diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/yahoochat.c --- a/libpurple/protocols/yahoo/yahoochat.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sun Jul 05 02:26:03 2009 +0000 @@ -648,7 +648,7 @@ } if (!msg) { - purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Got a message packet with no message.\nThis probably means something important, but we're ignoring it.\n"); + purple_debug_misc("yahoo", "Got a message packet with no message.\nThis probably means something important, but we're ignoring it.\n"); return; } msg2 = yahoo_string_decode(gc, msg, utf8); diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/protocols/yahoo/ycht.c --- a/libpurple/protocols/yahoo/ycht.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/protocols/yahoo/ycht.c Sun Jul 05 02:26:03 2009 +0000 @@ -196,35 +196,35 @@ #ifdef YAHOO_YCHT_DEBUG int i; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc("yahoo", ""); for (i = 0; i + 1 < len; i += 2) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02hhx%02hhx ", data[i], data[i + 1]); + purple_debug_misc(NULL, "%02hhx%02hhx ", data[i], data[i + 1]); } if (i < len) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%02hhx", data[i]); + purple_debug_misc(NULL, "%02hhx", data[i]); - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); for (i = 0; i < len; i++) { if ((i % 16 == 0) && i) { - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", ""); + purple_debug_misc(NULL, "\n"); + purple_debug_misc("yahoo", ""); } if (g_ascii_isprint(data[i])) - purple_debug(PURPLE_DEBUG_MISC, NULL, "%c ", data[i]); + purple_debug_misc(NULL, "%c ", data[i]); else - purple_debug(PURPLE_DEBUG_MISC, NULL, ". "); + purple_debug_misc(NULL, ". "); } - purple_debug(PURPLE_DEBUG_MISC, NULL, "\n"); + purple_debug_misc(NULL, "\n"); #endif /* YAHOO_YCHT_DEBUG */ } @@ -507,16 +507,15 @@ service = yahoo_get32(ycht->rxqueue + pos); pos += 4; status = yahoo_get16(ycht->rxqueue + pos); pos += 2; pktlen = yahoo_get16(ycht->rxqueue + pos); pos += 2; - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "ycht: %d bytes to read, rxlen is %d\n", pktlen, ycht->rxlen); + purple_debug_misc("yahoo", "ycht: %d bytes to read, rxlen is %d\n", + pktlen, ycht->rxlen); if (ycht->rxlen < (YCHT_HEADER_LEN + pktlen)) return; purple_debug_misc("yahoo", "--==Incoming YCHT packet==--\n"); - purple_debug(PURPLE_DEBUG_MISC, "yahoo", - "YCHT Service: 0x%02x Version: 0x%02x Status: 0x%02x\n", - service, version, status); + purple_debug_misc("yahoo", "YCHT Service: 0x%02x Version: 0x%02x Status: 0x%02x\n", + service, version, status); ycht_packet_dump(ycht->rxqueue, YCHT_HEADER_LEN + pktlen); pkt = ycht_packet_new(version, service, status); diff -r 304fef974f28 -r 319b0f3dd2d0 libpurple/util.c --- a/libpurple/util.c Sun Jul 05 00:07:03 2009 +0000 +++ b/libpurple/util.c Sun Jul 05 02:26:03 2009 +0000 @@ -4042,7 +4042,7 @@ } } - if(g_getenv("PURPLE_UNSAFE_DEBUG")) + if(purple_debug_is_unsafe()) purple_debug_misc("util", "Request: '%s'\n", gfud->request); else purple_debug_misc("util", "request constructed\n"); @@ -4159,7 +4159,7 @@ g_return_val_if_fail(url != NULL, NULL); g_return_val_if_fail(callback != NULL, NULL); - if(g_getenv("PURPLE_UNSAFE_DEBUG")) + if(purple_debug_is_unsafe()) purple_debug_info("util", "requested to fetch (%s), full=%d, user_agent=(%s), http11=%d\n", url, full, user_agent?user_agent:"(null)", http11);