Mercurial > pidgin
changeset 25902:be3ba7e07de5
merge of '123d615deaa8daeeea7d7c341a87eab4e83a7958'
and 'e3b2ac4f2d9e6a6bc13c0394f980b28a75765258'
author | Kevin Stange <kevin@simguy.net> |
---|---|
date | Tue, 06 Jan 2009 07:53:19 +0000 |
parents | 4670851af098 (current diff) 68265bcc8814 (diff) |
children | f8d3447235b1 |
files | ChangeLog.API libpurple/proxy.c |
diffstat | 46 files changed, 532 insertions(+), 556 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Jan 06 03:46:52 2009 +0000 +++ b/ChangeLog Tue Jan 06 07:53:19 2009 +0000 @@ -1,5 +1,10 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 2.6.0 (??/??/????): + General: + * Theme support in libpurple thanks to Justin Rodriguez's summer of code + project. With some minor additions and clean ups from Paul Aurich. + version 2.5.4 (??/??/????): libpurple: * Fix a connection timeout with empty Gadu-Gady buddy lists. (Martin
--- a/ChangeLog.API Tue Jan 06 03:46:52 2009 +0000 +++ b/ChangeLog.API Tue Jan 06 07:53:19 2009 +0000 @@ -23,6 +23,7 @@ * purple_request_field_set_ui_data * purple_network_force_online * purple_global_proxy_set_info + * purple_strequal Deprecated: * purple_buddy_get_local_alias
--- a/libpurple/account.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/account.c Tue Jan 06 07:53:19 2009 +0000 @@ -178,9 +178,7 @@ { const char *string_value = purple_value_get_string(attr_value); const char *default_string_value = purple_value_get_string(default_value); - if (((string_value == NULL) && (default_string_value == NULL)) || - ((string_value != NULL) && (default_string_value != NULL) && - !strcmp(string_value, default_string_value))) + if (purple_strequal(string_value, default_string_value)) return NULL; value = g_strdup(purple_value_get_string(attr_value)); } @@ -506,11 +504,11 @@ /* Ignore this setting */ continue; - if (!strcmp(str_type, "string")) + if (purple_strequal(str_type, "string")) type = PURPLE_PREF_STRING; - else if (!strcmp(str_type, "int")) + else if (purple_strequal(str_type, "int")) type = PURPLE_PREF_INT; - else if (!strcmp(str_type, "bool")) + else if (purple_strequal(str_type, "bool")) type = PURPLE_PREF_BOOLEAN; else /* Ignore this setting */ @@ -655,17 +653,17 @@ child = xmlnode_get_child(node, "type"); if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL)) { - if (!strcmp(data, "global")) + if (purple_strequal(data, "global")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_GLOBAL); - else if (!strcmp(data, "none")) + else if (purple_strequal(data, "none")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE); - else if (!strcmp(data, "http")) + else if (purple_strequal(data, "http")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_HTTP); - else if (!strcmp(data, "socks4")) + else if (purple_strequal(data, "socks4")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS4); - else if (!strcmp(data, "socks5")) + else if (purple_strequal(data, "socks5")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS5); - else if (!strcmp(data, "envvar")) + else if (purple_strequal(data, "envvar")) purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_ENVVAR); else { @@ -2022,7 +2020,7 @@ { PurpleStatusType *status_type = (PurpleStatusType *)l->data; - if (!strcmp(purple_status_type_get_id(status_type), id)) + if (purple_strequal(purple_status_type_get_id(status_type), id)) return status_type; } @@ -2631,11 +2629,11 @@ for (l = purple_accounts_get_all(); l != NULL; l = l->next) { account = (PurpleAccount *)l->data; - if (protocol_id && strcmp(account->protocol_id, protocol_id)) + if (protocol_id && !purple_strequal(account->protocol_id, protocol_id)) continue; who = g_strdup(purple_normalize(account, name)); - if (!strcmp(purple_normalize(account, purple_account_get_username(account)), who)) { + if (purple_strequal(purple_normalize(account, purple_account_get_username(account)), who)) { g_free(who); return account; }
--- a/libpurple/blist.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/blist.c Tue Jan 06 07:53:19 2009 +0000 @@ -82,7 +82,7 @@ static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2) { - return ((!strcmp(hb1->name, hb2->name)) && hb1->account == hb2->account && hb1->group == hb2->group); + return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group); } static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb) @@ -382,11 +382,11 @@ if (!value) return; - if (!type || !strcmp(type, "string")) + if (!type || purple_strequal(type, "string")) purple_blist_node_set_string(node, name, value); - else if (!strcmp(type, "bool")) + else if (purple_strequal(type, "bool")) purple_blist_node_set_bool(node, name, atoi(value)); - else if (!strcmp(type, "int")) + else if (purple_strequal(type, "int")) purple_blist_node_set_int(node, name, atoi(value)); g_free(value); @@ -453,9 +453,9 @@ for (x = cnode->child; x; x = x->next) { if (x->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(x->name, "buddy")) + if (purple_strequal(x->name, "buddy")) parse_buddy(group, contact, x); - else if (!strcmp(x->name, "setting")) + else if (purple_strequal(x->name, "setting")) parse_setting((PurpleBlistNode*)contact, x); } @@ -528,12 +528,12 @@ for (cnode = groupnode->child; cnode; cnode = cnode->next) { if (cnode->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(cnode->name, "setting")) + if (purple_strequal(cnode->name, "setting")) parse_setting((PurpleBlistNode*)group, cnode); - else if (!strcmp(cnode->name, "contact") || - !strcmp(cnode->name, "person")) + else if (purple_strequal(cnode->name, "contact") || + purple_strequal(cnode->name, "person")) parse_contact(group, cnode); - else if (!strcmp(cnode->name, "chat")) + else if (purple_strequal(cnode->name, "chat")) parse_chat(group, cnode); } } @@ -590,11 +590,11 @@ if (x->type != XMLNODE_TYPE_TAG) continue; - if (!strcmp(x->name, "permit")) { + if (purple_strequal(x->name, "permit")) { name = xmlnode_get_data(x); purple_privacy_permit_add(account, name, TRUE); g_free(name); - } else if (!strcmp(x->name, "block")) { + } else if (purple_strequal(x->name, "block")) { name = xmlnode_get_data(x); purple_privacy_deny_add(account, name, TRUE); g_free(name); @@ -1061,7 +1061,7 @@ g_return_if_fail(source != NULL); g_return_if_fail(new_name != NULL); - if (*new_name == '\0' || !strcmp(new_name, source->name)) + if (*new_name == '\0' || purple_strequal(new_name, source->name)) return; dest = purple_find_group(new_name); @@ -1128,7 +1128,7 @@ /* Notify all PRPLs */ /* TODO: Is this condition needed? Seems like it would always be TRUE */ - if(old_name && source && strcmp(source->name, old_name)) { + if(old_name && purple_strequal(source->name, old_name)) { for (accts = purple_group_get_accounts(source); accts; accts = g_slist_remove(accts, accts->data)) { PurpleAccount *account = accts->data; PurpleConnection *gc = NULL;
--- a/libpurple/buddyicon.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/buddyicon.c Tue Jan 06 07:53:19 2009 +0000 @@ -988,7 +988,7 @@ { purple_blist_node_remove_setting(node, setting_name); - if (!strcmp(setting_name, "buddy_icon")) + if (purple_strequal(setting_name, "buddy_icon")) { purple_blist_node_remove_setting(node, "avatar_hash"); purple_blist_node_remove_setting(node, "icon_checksum"); @@ -1085,7 +1085,7 @@ g_free(new_filename); - if (!strcmp(setting_name, "buddy_icon")) + if (purple_strequal(setting_name, "buddy_icon")) { const char *hash; @@ -1100,7 +1100,7 @@ PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node); const char *prpl_id = purple_account_get_protocol_id(account); - if (!strcmp(prpl_id, "prpl-yahoo")) + if (purple_strequal(prpl_id, "prpl-yahoo")) { int checksum = purple_blist_node_get_int(node, "icon_checksum"); if (checksum != 0)
--- a/libpurple/certificate.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/certificate.c Tue Jan 06 07:53:19 2009 +0000 @@ -791,7 +791,7 @@ for (cur = lst; cur; cur = cur->next) { x509_ca_element *el = cur->data; - if (el->dn && !strcmp(dn, el->dn)) { + if (purple_strequal(dn, el->dn)) { return el; } }
--- a/libpurple/cipher.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/cipher.c Tue Jan 06 07:53:19 2009 +0000 @@ -659,7 +659,7 @@ hctx = purple_cipher_context_get_data(context); - if (!strcmp(name, "hash")) { + if (purple_strequal(name, "hash")) { g_free(hctx->name); if (hctx->hash) purple_cipher_context_destroy(hctx->hash); @@ -676,7 +676,7 @@ hctx = purple_cipher_context_get_data(context); - if (!strcmp(name, "hash")) { + if (purple_strequal(name, "hash")) { return hctx->name; } @@ -1692,11 +1692,11 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "sizeHi")) { + if(purple_strequal(name, "sizeHi")) { ctx->sizeHi = GPOINTER_TO_INT(value); - } else if(!strcmp(name, "sizeLo")) { + } else if(purple_strequal(name, "sizeLo")) { ctx->sizeLo = GPOINTER_TO_INT(value); - } else if(!strcmp(name, "lenW")) { + } else if(purple_strequal(name, "lenW")) { ctx->lenW = GPOINTER_TO_INT(value); } } @@ -1707,11 +1707,11 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "sizeHi")) { + if(purple_strequal(name, "sizeHi")) { return GINT_TO_POINTER(ctx->sizeHi); - } else if(!strcmp(name, "sizeLo")) { + } else if(purple_strequal(name, "sizeLo")) { return GINT_TO_POINTER(ctx->sizeLo); - } else if(!strcmp(name, "lenW")) { + } else if(purple_strequal(name, "lenW")) { return GINT_TO_POINTER(ctx->lenW); } @@ -1942,7 +1942,7 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "key_len")) { + if(purple_strequal(name, "key_len")) { ctx->key_len = GPOINTER_TO_INT(value); } } @@ -1967,7 +1967,7 @@ ctx = purple_cipher_context_get_data(context); - if(!strcmp(name, "key_len")) { + if(purple_strequal(name, "key_len")) { return GINT_TO_POINTER(ctx->key_len); }
--- a/libpurple/cmds.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/cmds.c Tue Jan 06 07:53:19 2009 +0000 @@ -236,7 +236,7 @@ for (l = cmds; l; l = l->next) { c = l->data; - if (strcmp(c->cmd, cmd) != 0) + if (!purple_strequal(c->cmd, cmd)) continue; found = TRUE; @@ -250,8 +250,8 @@ right_type = TRUE; - if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, prpl_id) != 0)) + if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, prpl_id)) continue; right_prpl = TRUE; @@ -320,8 +320,8 @@ if (!(c->flags & PURPLE_CMD_FLAG_CHAT)) continue; - if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0)) + if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv)))) continue; ret = g_list_append(ret, c->cmd); @@ -342,7 +342,7 @@ for (l = cmds; l; l = l->next) { c = l->data; - if (cmd && (strcmp(cmd, c->cmd) != 0)) + if (cmd && !purple_strequal(cmd, c->cmd)) continue; if (conv && (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)) @@ -352,8 +352,8 @@ if (!(c->flags & PURPLE_CMD_FLAG_CHAT)) continue; - if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id && - (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0)) + if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && + !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv)))) continue; ret = g_list_append(ret, c->help);
--- a/libpurple/conversation.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/conversation.c Tue Jan 06 07:53:19 2009 +0000 @@ -912,7 +912,7 @@ if (purple_account_get_alias(account) != NULL) alias = account->alias; - else if (b != NULL && strcmp(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b))) + else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b))) alias = purple_buddy_get_contact_alias(b); else if (purple_connection_get_display_name(gc) != NULL) alias = purple_connection_get_display_name(gc); @@ -1480,7 +1480,7 @@ str = g_strdup(purple_normalize(account, who)); - if (!strcmp(str, purple_normalize(account, chat->nick))) { + if (purple_strequal(str, purple_normalize(account, chat->nick))) { flags |= PURPLE_MESSAGE_SEND; } else { flags |= PURPLE_MESSAGE_RECV; @@ -1601,7 +1601,7 @@ const char *extra_msg = (extra_msgs ? extra_msgs->data : NULL); if(!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { - if (!strcmp(chat->nick, purple_normalize(conv->account, user))) { + if (purple_strequal(chat->nick, purple_normalize(conv->account, user))) { const char *alias2 = purple_account_get_alias(conv->account); if (alias2 != NULL) alias = alias2; @@ -1692,7 +1692,7 @@ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); g_return_if_fail(prpl_info != NULL); - if (!strcmp(chat->nick, purple_normalize(conv->account, old_user))) { + if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) { const char *alias; /* Note this for later. */
--- a/libpurple/core.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/core.c Tue Jan 06 07:53:19 2009 +0000 @@ -139,7 +139,7 @@ * subsystem right away too. */ purple_plugins_init(); - + /* Initialize all static protocols. */ static_proto_init(); @@ -175,7 +175,6 @@ purple_idle_init(); purple_smileys_init(); purple_theme_manager_init(); - purple_theme_manager_refresh(); /* * Call this early on to try to auto-detect our IP address and * hopefully save some time later. @@ -185,6 +184,9 @@ if (ops != NULL && ops->ui_init != NULL) ops->ui_init(); + /* The UI may have registered some theme types, so refresh them */ + purple_theme_manager_refresh(); + return TRUE; } @@ -217,7 +219,6 @@ purple_accounts_uninit(); purple_savedstatuses_uninit(); purple_status_uninit(); - purple_prefs_uninit(); purple_sound_uninit(); purple_theme_manager_uninit(); purple_xfers_uninit(); @@ -249,6 +250,7 @@ #ifdef _WIN32 wpurple_cleanup(); #endif + purple_prefs_uninit(); _core = NULL; } @@ -341,15 +343,7 @@ const char *user_dir = purple_user_dir(); char *dbus_owner_user_dir = purple_dbus_owner_user_dir(); - if (NULL == user_dir && NULL != dbus_owner_user_dir) - is_single_instance = TRUE; - else if (NULL != user_dir && NULL == dbus_owner_user_dir) - is_single_instance = TRUE; - else if (NULL == user_dir && NULL == dbus_owner_user_dir) - is_single_instance = FALSE; - else - is_single_instance = strcmp(dbus_owner_user_dir, user_dir); - + is_single_instance = !purple_strequal(dbus_owner_user_dir, user_dir); g_free(dbus_owner_user_dir); } } @@ -480,7 +474,7 @@ if (g_file_test(name, G_FILE_TEST_IS_SYMLINK)) { /* We're only going to duplicate a logs symlink. */ - if (!strcmp(entry, "logs")) + if (purple_strequal(entry, "logs")) { char *link; #if GLIB_CHECK_VERSION(2,4,0) @@ -523,7 +517,8 @@ logs_dir = g_build_filename(user_dir, "logs", NULL); - if (!strcmp(link, "../.purple/logs") || !strcmp(link, logs_dir)) + if (purple_strequal(link, "../.purple/logs") || + purple_strequal(link, logs_dir)) { /* If the symlink points to the new directory, we're * likely just trying again after a failed migration, @@ -568,7 +563,7 @@ /* Deal with directories... */ if (g_file_test(name, G_FILE_TEST_IS_DIR)) { - if (!strcmp(entry, "icons")) + if (purple_strequal(entry, "icons")) { /* This is a special case for the Album plugin, which * stores data in the icons folder. We're not copying @@ -637,7 +632,7 @@ g_dir_close(icons_dir); } - else if (!strcmp(entry, "plugins")) + else if (purple_strequal(entry, "plugins")) { /* Do nothing, because we broke plugin compatibility. * This means that the plugins directory gets left behind. */
--- a/libpurple/desktopitem.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/desktopitem.c Tue Jan 06 07:53:19 2009 +0000 @@ -108,30 +108,30 @@ switch (type [0]) { case 'A': - if (!strcmp (type, "Application")) + if (purple_strequal (type, "Application")) return PURPLE_DESKTOP_ITEM_TYPE_APPLICATION; break; case 'L': - if (!strcmp (type, "Link")) + if (purple_strequal (type, "Link")) return PURPLE_DESKTOP_ITEM_TYPE_LINK; break; case 'F': - if (!strcmp (type, "FSDevice")) + if (purple_strequal (type, "FSDevice")) return PURPLE_DESKTOP_ITEM_TYPE_FSDEVICE; break; case 'M': - if (!strcmp (type, "MimeType")) + if (purple_strequal (type, "MimeType")) return PURPLE_DESKTOP_ITEM_TYPE_MIME_TYPE; break; case 'D': - if (!strcmp (type, "Directory")) + if (purple_strequal (type, "Directory")) return PURPLE_DESKTOP_ITEM_TYPE_DIRECTORY; break; case 'S': - if (!strcmp (type, "Service")) + if (purple_strequal (type, "Service")) return PURPLE_DESKTOP_ITEM_TYPE_SERVICE; - else if (!strcmp (type, "ServiceType")) + else if (purple_strequal (type, "ServiceType")) return PURPLE_DESKTOP_ITEM_TYPE_SERVICE_TYPE; break; default: @@ -149,12 +149,12 @@ if (section == NULL) return NULL; - if (strcmp (section, "Desktop Entry") == 0) + if (purple_strequal (section, "Desktop Entry")) return NULL; for (li = item->sections; li != NULL; li = li->next) { sec = li->data; - if (strcmp (sec->name, section) == 0) + if (purple_strequal (sec->name, section)) return sec; } @@ -264,7 +264,7 @@ set (item, attr, value); - if (strcmp (attr, PURPLE_DESKTOP_ITEM_TYPE) == 0) + if (purple_strequal (attr, PURPLE_DESKTOP_ITEM_TYPE)) item->type = type_from_string (value); } @@ -354,16 +354,16 @@ p++; if (*p == ' ') p++; - if (strcmp (p, "UTF-8") == 0) { + if (purple_strequal (p, "UTF-8")) { return ENCODING_UTF8; - } else if (strcmp (p, "Legacy-Mixed") == 0) { + } else if (purple_strequal (p, "Legacy-Mixed")) { return ENCODING_LEGACY_MIXED; } else { /* According to the spec we're not supposed * to read a file like this */ return ENCODING_UNKNOWN; } - } else if (strcmp ("[KDE Desktop Entry]", buf) == 0) { + } else if (purple_strequal ("[KDE Desktop Entry]", buf)) { old_kde = TRUE; /* don't break yet, we still want to support * Encoding even here */ @@ -557,7 +557,7 @@ char *utf8_string; if (char_encoding == NULL) return NULL; - if (strcmp (char_encoding, "ASCII") == 0) { + if (purple_strequal (char_encoding, "ASCII")) { return decode_string_and_dup (value); } utf8_string = g_convert (value, -1, "UTF-8", char_encoding, @@ -673,7 +673,7 @@ char *val; /* we always store everything in UTF-8 */ if (cur_section == NULL && - strcmp (key, PURPLE_DESKTOP_ITEM_ENCODING) == 0) { + purple_strequal (key, PURPLE_DESKTOP_ITEM_ENCODING)) { k = g_strdup (key); val = g_strdup ("UTF-8"); } else { @@ -697,7 +697,7 @@ * on sort order, so convert to semicolons */ if (old_kde && cur_section == NULL && - strcmp (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) == 0 && + purple_strequal (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) && strchr (val, ';') == NULL) { int i; for (i = 0; val[i] != '\0'; i++) { @@ -720,7 +720,7 @@ /* Take care of the language part */ if (locale != NULL && - strcmp (locale, "C") == 0) { + purple_strequal (locale, "C")) { char *p; /* Whack C locale */ p = strchr (k, '['); @@ -791,8 +791,7 @@ PURPLE_DESKTOP_ITEM_TYPE); if (type == NULL && uri != NULL) { char *base = g_path_get_basename (uri); - if (base != NULL && - strcmp (base, ".directory") == 0) { + if (purple_strequal(base, ".directory")) { /* This gotta be a directory */ g_hash_table_replace (item->main_hash, g_strdup (PURPLE_DESKTOP_ITEM_TYPE), @@ -813,7 +812,7 @@ lookup_locale (const PurpleDesktopItem *item, const char *key, const char *locale) { if (locale == NULL || - strcmp (locale, "C") == 0) { + purple_strequal (locale, "C")) { return lookup (item, key); } else { const char *ret; @@ -857,7 +856,7 @@ type = lookup (item, PURPLE_DESKTOP_ITEM_TYPE); /* understand old gnome style url exec thingies */ - if (type != NULL && strcmp (type, "URL") == 0) { + if (purple_strequal(type, "URL")) { const char *exec = lookup (item, PURPLE_DESKTOP_ITEM_EXEC); set (item, PURPLE_DESKTOP_ITEM_TYPE, "Link"); if (exec != NULL) { @@ -968,13 +967,11 @@ cur_section->keys = g_list_reverse (cur_section->keys); } - if (strcmp (CharBuffer, - "KDE Desktop Entry") == 0) { + if (purple_strequal (CharBuffer, "KDE Desktop Entry")) { /* Main section */ cur_section = NULL; old_kde = TRUE; - } else if (strcmp (CharBuffer, - "Desktop Entry") == 0) { + } else if (purple_strequal(CharBuffer, "Desktop Entry")) { /* Main section */ cur_section = NULL; } else {
--- a/libpurple/ft.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/ft.c Tue Jan 06 07:53:19 2009 +0000 @@ -700,7 +700,7 @@ msg = g_strdup_printf(_("Transfer of file %s complete"), purple_xfer_get_filename(xfer)); else - msg = g_strdup_printf(_("File transfer complete")); + msg = g_strdup(_("File transfer complete")); purple_xfer_conversation_write(xfer, msg, FALSE); g_free(msg); } @@ -1140,7 +1140,7 @@ } else { - msg = g_strdup_printf(_("File transfer cancelled")); + msg = g_strdup(_("File transfer cancelled")); } purple_xfer_conversation_write(xfer, msg, FALSE); g_free(msg);
--- a/libpurple/idle.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/idle.c Tue Jan 06 07:53:19 2009 +0000 @@ -126,14 +126,14 @@ idle_reporting = purple_prefs_get_string("/purple/away/idle_reporting"); auto_away = purple_prefs_get_bool("/purple/away/away_when_idle"); - if (!strcmp(idle_reporting, "system") && + if (purple_strequal(idle_reporting, "system") && (idle_ui_ops != NULL) && (idle_ui_ops->get_time_idle != NULL)) { /* Use system idle time (mouse or keyboard movement, etc.) */ time_idle = idle_ui_ops->get_time_idle(); idle_recheck_interval = 1; } - else if (!strcmp(idle_reporting, "purple")) + else if (purple_strequal(idle_reporting, "purple")) { /* Use 'Purple idle' */ time_idle = time(NULL) - last_active_time;
--- a/libpurple/log.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/log.c Tue Jan 06 07:53:19 2009 +0000 @@ -200,7 +200,7 @@ static guint _purple_logsize_user_equal(struct _purple_logsize_user *lu1, struct _purple_logsize_user *lu2) { - return (lu1->account == lu2->account && (!strcmp(lu1->name, lu2->name))); + return (lu1->account == lu2->account && purple_strequal(lu1->name, lu2->name)); } static void _purple_logsize_user_free_key(struct _purple_logsize_user *lu) @@ -324,7 +324,7 @@ GSList *l = loggers; while (l) { logger = l->data; - if (!strcmp(logger->id, value)) { + if (purple_strequal(logger->id, value)) { purple_log_logger_set(logger); return; } @@ -406,7 +406,7 @@ if (g_slist_find(loggers, logger)) return; loggers = g_slist_append(loggers, logger); - if (strcmp(purple_prefs_get_string("/purple/logging/format"), logger->id) == 0) { + if (purple_strequal(purple_prefs_get_string("/purple/logging/format"), logger->id)) { purple_prefs_trigger_callback("/purple/logging/format"); } } @@ -1019,7 +1019,7 @@ continue; prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if (!strcmp(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL))) + if (purple_strequal(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL))) accounts = g_list_prepend(accounts, account_iter->data); } g_free(protocol_unescaped); @@ -1039,7 +1039,7 @@ /* Find the account for username in the list of accounts for protocol. */ username_unescaped = purple_unescape_filename(username); for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) { - if (!strcmp(((PurpleAccount *)account_iter->data)->username, username_unescaped)) { + if (purple_strequal(((PurpleAccount *)account_iter->data)->username, username_unescaped)) { account = account_iter->data; break; } @@ -1068,14 +1068,14 @@ /* Chat for .chat or .system at the end of the name to determine the type. */ if (len >= 7) { gchar *tmp = &name[len - 7]; - if (!strcmp(tmp, ".system")) { + if (purple_strequal(tmp, ".system")) { set->type = PURPLE_LOG_SYSTEM; *tmp = '\0'; } } if (len > 5) { gchar *tmp = &name[len - 5]; - if (!strcmp(tmp, ".chat")) { + if (purple_strequal(tmp, ".chat")) { set->type = PURPLE_LOG_CHAT; *tmp = '\0'; } @@ -1773,29 +1773,29 @@ sscanf(convostart, "%*s %s %d %d:%d:%d %d", month, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &tm.tm_year); /* Ugly hack, in case current locale is not English */ - if (strcmp(month, "Jan") == 0) { + if (purple_strequal(month, "Jan")) { tm.tm_mon= 0; - } else if (strcmp(month, "Feb") == 0) { + } else if (purple_strequal(month, "Feb")) { tm.tm_mon = 1; - } else if (strcmp(month, "Mar") == 0) { + } else if (purple_strequal(month, "Mar")) { tm.tm_mon = 2; - } else if (strcmp(month, "Apr") == 0) { + } else if (purple_strequal(month, "Apr")) { tm.tm_mon = 3; - } else if (strcmp(month, "May") == 0) { + } else if (purple_strequal(month, "May")) { tm.tm_mon = 4; - } else if (strcmp(month, "Jun") == 0) { + } else if (purple_strequal(month, "Jun")) { tm.tm_mon = 5; - } else if (strcmp(month, "Jul") == 0) { + } else if (purple_strequal(month, "Jul")) { tm.tm_mon = 6; - } else if (strcmp(month, "Aug") == 0) { + } else if (purple_strequal(month, "Aug")) { tm.tm_mon = 7; - } else if (strcmp(month, "Sep") == 0) { + } else if (purple_strequal(month, "Sep")) { tm.tm_mon = 8; - } else if (strcmp(month, "Oct") == 0) { + } else if (purple_strequal(month, "Oct")) { tm.tm_mon = 9; - } else if (strcmp(month, "Nov") == 0) { + } else if (purple_strequal(month, "Nov")) { tm.tm_mon = 10; - } else if (strcmp(month, "Dec") == 0) { + } else if (purple_strequal(month, "Dec")) { tm.tm_mon = 11; } tm.tm_year -= 1900; @@ -1930,7 +1930,7 @@ /* Make sure we're dealing with a log file. */ ext = &name[len - 4]; - if (strcmp(ext, ".log")) { + if (!purple_strequal(ext, ".log")) { g_free(name); continue; } @@ -1943,7 +1943,7 @@ set->type = PURPLE_LOG_IM; if (len > 9) { char *tmp = &name[len - 9]; - if (!strcmp(tmp, ".chat")) { + if (purple_strequal(tmp, ".chat")) { set->type = PURPLE_LOG_CHAT; *tmp = '\0'; } @@ -1972,7 +1972,7 @@ { PurpleBuddy *buddy = (PurpleBuddy *)bnode; - if (!strcmp(purple_buddy_get_name(buddy), name)) { + if (purple_strequal(purple_buddy_get_name(buddy), name)) { set->account = purple_buddy_get_account(buddy); set->buddy = TRUE; found = TRUE;
--- a/libpurple/plugin.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/plugin.c Tue Jan 06 07:53:19 2009 +0000 @@ -218,7 +218,7 @@ g_free(basename); if (plugin != NULL) { - if (!strcmp(filename, plugin->path)) + if (purple_strequal(filename, plugin->path)) return plugin; else if (!purple_plugin_is_unloadable(plugin)) { @@ -357,7 +357,7 @@ return NULL; } else if (plugin->info->ui_requirement && - strcmp(plugin->info->ui_requirement, purple_core_get_ui())) + !purple_strequal(plugin->info->ui_requirement, purple_core_get_ui())) { plugin->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."), purple_core_get_ui(), plugin->info->ui_requirement); @@ -374,7 +374,7 @@ */ if (plugin->info->id == NULL || *plugin->info->id == '\0') { - plugin->error = g_strdup_printf(_("This plugin has not defined an ID.")); + plugin->error = g_strdup(_("This plugin has not defined an ID.")); purple_debug_error("plugins", "%s is not loadable: info->id is not defined.\n", plugin->path); plugin->unloadable = TRUE; return plugin; @@ -1538,7 +1538,7 @@ for (l = plugins; l != NULL; l = l->next) { plugin = l->data; - if (!strcmp(plugin->info->name, name)) + if (purple_strequal(plugin->info->name, name)) return plugin; } @@ -1554,7 +1554,7 @@ for (l = plugins; l != NULL; l = l->next) { plugin = l->data; - if (plugin->path != NULL && !strcmp(plugin->path, filename)) + if (purple_strequal(plugin->path, filename)) return plugin; } @@ -1577,7 +1577,7 @@ if (plugin->path != NULL) { tmp = purple_plugin_get_basename(plugin->path); - if (!strcmp(tmp, basename)) + if (purple_strequal(tmp, basename)) { g_free(tmp); return plugin; @@ -1603,7 +1603,7 @@ { plugin = l->data; - if (plugin->info->id != NULL && !strcmp(plugin->info->id, id)) + if (purple_strequal(plugin->info->id, id)) return plugin; }
--- a/libpurple/pounce.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/pounce.c Tue Jan 06 07:53:19 2009 +0000 @@ -326,7 +326,7 @@ data->buffer = NULL; } - if (!strcmp(element_name, "pounce")) { + if (purple_strequal(element_name, "pounce")) { const char *ui = g_hash_table_lookup(atts, "ui"); if (ui == NULL) { @@ -338,7 +338,7 @@ data->events = 0; } - else if (!strcmp(element_name, "account")) { + else if (purple_strequal(element_name, "account")) { const char *protocol_id = g_hash_table_lookup(atts, "protocol"); if (protocol_id == NULL) { @@ -348,7 +348,7 @@ else data->protocol_id = g_strdup(protocol_id); } - else if (!strcmp(element_name, "option")) { + else if (purple_strequal(element_name, "option")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -358,7 +358,7 @@ else data->option_type = g_strdup(type); } - else if (!strcmp(element_name, "event")) { + else if (purple_strequal(element_name, "event")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -368,7 +368,7 @@ else data->event_type = g_strdup(type); } - else if (!strcmp(element_name, "action")) { + else if (purple_strequal(element_name, "action")) { const char *type = g_hash_table_lookup(atts, "type"); if (type == NULL) { @@ -378,7 +378,7 @@ else data->action_name = g_strdup(type); } - else if (!strcmp(element_name, "param")) { + else if (purple_strequal(element_name, "param")) { const char *param_name = g_hash_table_lookup(atts, "name"); if (param_name == NULL) { @@ -404,7 +404,7 @@ data->buffer = NULL; } - if (!strcmp(element_name, "account")) { + if (purple_strequal(element_name, "account")) { char *tmp; g_free(data->account_name); data->account_name = g_strdup(buffer); @@ -412,43 +412,43 @@ data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp)); g_free(tmp); } - else if (!strcmp(element_name, "pouncee")) { + else if (purple_strequal(element_name, "pouncee")) { g_free(data->pouncee); data->pouncee = g_strdup(buffer); } - else if (!strcmp(element_name, "option")) { - if (!strcmp(data->option_type, "on-away")) + else if (purple_strequal(element_name, "option")) { + if (purple_strequal(data->option_type, "on-away")) data->options |= PURPLE_POUNCE_OPTION_AWAY; g_free(data->option_type); data->option_type = NULL; } - else if (!strcmp(element_name, "event")) { - if (!strcmp(data->event_type, "sign-on")) + else if (purple_strequal(element_name, "event")) { + if (purple_strequal(data->event_type, "sign-on")) data->events |= PURPLE_POUNCE_SIGNON; - else if (!strcmp(data->event_type, "sign-off")) + else if (purple_strequal(data->event_type, "sign-off")) data->events |= PURPLE_POUNCE_SIGNOFF; - else if (!strcmp(data->event_type, "away")) + else if (purple_strequal(data->event_type, "away")) data->events |= PURPLE_POUNCE_AWAY; - else if (!strcmp(data->event_type, "return-from-away")) + else if (purple_strequal(data->event_type, "return-from-away")) data->events |= PURPLE_POUNCE_AWAY_RETURN; - else if (!strcmp(data->event_type, "idle")) + else if (purple_strequal(data->event_type, "idle")) data->events |= PURPLE_POUNCE_IDLE; - else if (!strcmp(data->event_type, "return-from-idle")) + else if (purple_strequal(data->event_type, "return-from-idle")) data->events |= PURPLE_POUNCE_IDLE_RETURN; - else if (!strcmp(data->event_type, "start-typing")) + else if (purple_strequal(data->event_type, "start-typing")) data->events |= PURPLE_POUNCE_TYPING; - else if (!strcmp(data->event_type, "typed")) + else if (purple_strequal(data->event_type, "typed")) data->events |= PURPLE_POUNCE_TYPED; - else if (!strcmp(data->event_type, "stop-typing")) + else if (purple_strequal(data->event_type, "stop-typing")) data->events |= PURPLE_POUNCE_TYPING_STOPPED; - else if (!strcmp(data->event_type, "message-received")) + else if (purple_strequal(data->event_type, "message-received")) data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED; g_free(data->event_type); data->event_type = NULL; } - else if (!strcmp(element_name, "action")) { + else if (purple_strequal(element_name, "action")) { if (data->pounce != NULL) { purple_pounce_action_register(data->pounce, data->action_name); purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE); @@ -457,7 +457,7 @@ g_free(data->action_name); data->action_name = NULL; } - else if (!strcmp(element_name, "param")) { + else if (purple_strequal(element_name, "param")) { if (data->pounce != NULL) { purple_pounce_action_set_attribute(data->pounce, data->action_name, data->param_name, buffer); @@ -466,7 +466,7 @@ g_free(data->param_name); data->param_name = NULL; } - else if (!strcmp(element_name, "events")) { + else if (purple_strequal(element_name, "events")) { PurpleAccount *account; account = purple_accounts_find(data->account_name, data->protocol_id); @@ -499,11 +499,11 @@ g_free(data->pouncee); data->pouncee = NULL; } - else if (!strcmp(element_name, "save")) { + else if (purple_strequal(element_name, "save")) { if (data->pounce != NULL) purple_pounce_set_save(data->pounce, TRUE); } - else if (!strcmp(element_name, "pounce")) { + else if (purple_strequal(element_name, "pounce")) { data->pounce = NULL; data->events = 0; data->options = 0; @@ -1023,7 +1023,7 @@ for (iter = pounces; iter; iter = iter->next) { PurplePounce *pounce = iter->data; - if (pounce->ui_type && strcmp(pounce->ui_type, ui) == 0) + if (purple_strequal(pounce->ui_type, ui)) list = g_list_prepend(list, pounce); } list = g_list_reverse(list);
--- a/libpurple/prefs.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/prefs.c Tue Jan 06 07:53:19 2009 +0000 @@ -250,33 +250,34 @@ GString *pref_name_full; GList *tmp; - if(strcmp(element_name, "pref") && strcmp(element_name, "item")) + if(!purple_strequal(element_name, "pref") && + !purple_strequal(element_name, "item")) return; for(i = 0; attribute_names[i]; i++) { - if(!strcmp(attribute_names[i], "name")) { + if(purple_strequal(attribute_names[i], "name")) { pref_name = attribute_values[i]; - } else if(!strcmp(attribute_names[i], "type")) { - if(!strcmp(attribute_values[i], "bool")) + } else if(purple_strequal(attribute_names[i], "type")) { + if(purple_strequal(attribute_values[i], "bool")) pref_type = PURPLE_PREF_BOOLEAN; - else if(!strcmp(attribute_values[i], "int")) + else if(purple_strequal(attribute_values[i], "int")) pref_type = PURPLE_PREF_INT; - else if(!strcmp(attribute_values[i], "string")) + else if(purple_strequal(attribute_values[i], "string")) pref_type = PURPLE_PREF_STRING; - else if(!strcmp(attribute_values[i], "stringlist")) + else if(purple_strequal(attribute_values[i], "stringlist")) pref_type = PURPLE_PREF_STRING_LIST; - else if(!strcmp(attribute_values[i], "path")) + else if(purple_strequal(attribute_values[i], "path")) pref_type = PURPLE_PREF_PATH; - else if(!strcmp(attribute_values[i], "pathlist")) + else if(purple_strequal(attribute_values[i], "pathlist")) pref_type = PURPLE_PREF_PATH_LIST; else return; - } else if(!strcmp(attribute_names[i], "value")) { + } else if(purple_strequal(attribute_names[i], "value")) { pref_value = attribute_values[i]; } } - if(!strcmp(element_name, "item")) { + if(purple_strequal(element_name, "item")) { struct purple_pref *pref; pref_name_full = g_string_new(""); @@ -301,7 +302,7 @@ } else { char *decoded; - if(!pref_name || !strcmp(pref_name, "/")) + if(!pref_name || purple_strequal(pref_name, "/")) return; pref_name_full = g_string_new(pref_name); @@ -352,7 +353,7 @@ const gchar *element_name, gpointer user_data, GError **error) { - if(prefs_stack && !strcmp(element_name, "pref")) { + if(prefs_stack && purple_strequal(element_name, "pref")) { g_free(prefs_stack->data); prefs_stack = g_list_delete_link(prefs_stack, prefs_stack); } @@ -521,7 +522,7 @@ char *parent_name = get_path_dirname(name); struct purple_pref *ret = &prefs; - if(strcmp(parent_name, "/")) { + if(!purple_strequal(parent_name, "/")) { ret = find_pref(parent_name); } @@ -571,7 +572,7 @@ my_name = get_path_basename(name); for(sibling = parent->first_child; sibling; sibling = sibling->sibling) { - if(!strcmp(sibling->name, my_name)) { + if(purple_strequal(sibling->name, my_name)) { g_free(my_name); return NULL; } @@ -714,7 +715,8 @@ name = pref_full_name(pref); - purple_debug_info("prefs", "removing pref %s\n", name); + if (prefs_loaded) + purple_debug_info("prefs", "removing pref %s\n", name); g_hash_table_remove(prefs_hash, name); g_free(name); @@ -848,10 +850,7 @@ return; } - if((value && !pref->value.string) || - (!value && pref->value.string) || - (value && pref->value.string && - strcmp(pref->value.string, value))) { + if (!purple_strequal(pref->value.string, value)) { g_free(pref->value.string); pref->value.string = g_strdup(value); do_callbacks(name, pref); @@ -908,10 +907,7 @@ return; } - if((value && !pref->value.string) || - (!value && pref->value.string) || - (value && pref->value.string && - strcmp(pref->value.string, value))) { + if (!purple_strequal(pref->value.string, value)) { g_free(pref->value.string); pref->value.string = g_strdup(value); do_callbacks(name, pref); @@ -1105,7 +1101,7 @@ next = child->sibling; for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling) { - if(!strcmp(child->name, newchild->name)) + if(purple_strequal(child->name, newchild->name)) { purple_prefs_rename_node(child, newchild); break; @@ -1454,7 +1450,7 @@ sync_prefs(); } - purple_prefs_disconnect_by_handle(purple_prefs_get_handle()); + prefs_loaded = FALSE; purple_prefs_destroy(); g_hash_table_destroy(prefs_hash); prefs_hash = NULL;
--- a/libpurple/privacy.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/privacy.c Tue Jan 06 07:53:19 2009 +0000 @@ -261,7 +261,7 @@ for (list = account->permit; list != NULL;) { char *person = list->data; list = list->next; - if (strcmp(norm, person) != 0) + if (!purple_strequal(norm, person)) purple_privacy_permit_remove(account, person, local); } } @@ -305,7 +305,7 @@ for (list = account->deny; list != NULL; ) { char *person = list->data; list = list->next; - if (strcmp(norm, person) != 0) + if (!purple_strequal(norm, person)) purple_privacy_deny_remove(account, person, local); } }
--- a/libpurple/protocols/myspace/myspace.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/myspace/myspace.c Tue Jan 06 07:53:19 2009 +0000 @@ -540,7 +540,7 @@ guchar hash_pw[HASH_SIZE]; guchar key[HASH_SIZE]; - gchar *password_utf16le, *password_utf8_lc; + gchar *password_truncated, *password_utf16le, *password_utf8_lc; GString *data; guchar *data_out; size_t data_out_len; @@ -555,10 +555,19 @@ g_return_val_if_fail(password != NULL, NULL); g_return_val_if_fail(response_len != NULL, NULL); + /* + * Truncate password to 10 characters. Their "change password" + * web page doesn't let you enter more than 10 characters, but you + * can enter more than 10 when logging in on myspace.com and they + * truncate it. + */ + password_truncated = g_strndup(password, 10); + /* Convert password to lowercase (required for passwords containing * uppercase characters). MySpace passwords are lowercase, * see ticket #2066. */ - password_utf8_lc = g_utf8_strdown(password, -1); + password_utf8_lc = g_utf8_strdown(password_truncated, -1); + g_free(password_truncated); /* Convert ASCII password to UTF16 little endian */ purple_debug_info("msim", "converting password to UTF-16LE\n"); @@ -567,8 +576,6 @@ &conv_bytes_read, &conv_bytes_written, &conv_error); g_free(password_utf8_lc); - g_return_val_if_fail(conv_bytes_read == strlen(password), NULL); - if (conv_error != NULL) { purple_debug_error("msim", "g_convert password UTF8->UTF16LE failed: %s",
--- a/libpurple/protocols/novell/novell.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/novell/novell.c Tue Jan 06 07:53:19 2009 +0000 @@ -2523,8 +2523,8 @@ /* The conference was not found, must be closed */ chat = purple_find_chat(gc, id); if (chat) { - str = g_strdup_printf(_("This conference has been closed." - " No more messages can be sent.")); + str = g_strdup(_("This conference has been closed." + " No more messages can be sent.")); purple_conversation_write(chat, NULL, str, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(str); }
--- a/libpurple/protocols/oscar/oscar.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Tue Jan 06 07:53:19 2009 +0000 @@ -739,21 +739,21 @@ static char *oscar_icqstatus(int state) { /* Make a cute little string that shows the status of the dude or dudet */ if (state & AIM_ICQ_STATE_CHAT) - return g_strdup_printf(_("Free For Chat")); + return g_strdup(_("Free For Chat")); else if (state & AIM_ICQ_STATE_DND) - return g_strdup_printf(_("Do Not Disturb")); + return g_strdup(_("Do Not Disturb")); else if (state & AIM_ICQ_STATE_OUT) - return g_strdup_printf(_("Not Available")); + return g_strdup(_("Not Available")); else if (state & AIM_ICQ_STATE_BUSY) - return g_strdup_printf(_("Occupied")); + return g_strdup(_("Occupied")); else if (state & AIM_ICQ_STATE_AWAY) - return g_strdup_printf(_("Away")); + return g_strdup(_("Away")); else if (state & AIM_ICQ_STATE_WEBAWARE) - return g_strdup_printf(_("Web Aware")); + return g_strdup(_("Web Aware")); else if (state & AIM_ICQ_STATE_INVISIBLE) - return g_strdup_printf(_("Invisible")); + return g_strdup(_("Invisible")); else - return g_strdup_printf(_("Online")); + return g_strdup(_("Online")); } static void @@ -1658,10 +1658,10 @@ } if (in != '\n') { char buf[256]; - GHashTable *ui_info = purple_core_get_ui_info(); - g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " - "this is fixed. Check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + GHashTable *ui_info = purple_core_get_ui_info(); + g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " + "If so, check %s for updates."), + ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid AIM login hash."), buf);
--- a/libpurple/protocols/oscar/peer.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/oscar/peer.c Tue Jan 06 07:53:19 2009 +0000 @@ -859,7 +859,7 @@ { gchar *tmp; PurpleConversation *conv; - tmp = g_strdup_printf(_("Attempting to connect via proxy server.")); + tmp = g_strdup(_("Attempting to connect via proxy server.")); conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
--- a/libpurple/protocols/qq/ChangeLog Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/qq/ChangeLog Tue Jan 06 07:53:19 2009 +0000 @@ -1,3 +1,9 @@ +2008.12.28 - flos <lonicerae(at)gmail.com> + * Fixes #7908 + +2008.12.28 - flos <lonicerae(at)gmail.com> + * References #7908 + 2008.12.25 - flos <lonicerae(at)gmail.com> * References #7821 * Updated authors
--- a/libpurple/protocols/qq/qq_network.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/qq/qq_network.c Tue Jan 06 07:53:19 2009 +0000 @@ -174,14 +174,16 @@ * Please conside tcp_pending and udp_pending */ gboolean qq_connect_later(gpointer data) { - PurpleConnection *gc = (PurpleConnection *) data; - qq_data *qd; - char *server; + PurpleConnection *gc; + char *tmp_server; int port; gchar **segments; + qq_data *qd; + gc = (PurpleConnection *) data; g_return_val_if_fail(gc != NULL && gc->proto_data != NULL, FALSE); qd = (qq_data *) gc->proto_data; + tmp_server = NULL; if (qd->check_watcher > 0) { purple_timeout_remove(qd->check_watcher); @@ -191,9 +193,11 @@ if (qd->redirect_ip.s_addr != 0) { /* redirect to new server */ - server = g_strdup_printf("%s:%d", inet_ntoa(qd->redirect_ip), qd->redirect_port); - qd->servers = g_list_append(qd->servers, server); - qd->curr_server = server; + tmp_server = g_strdup_printf("%s:%d", inet_ntoa(qd->redirect_ip), qd->redirect_port); + qd->servers = g_list_append(qd->servers, tmp_server); + + qd->curr_server = tmp_server; + tmp_server = NULL; qd->redirect_ip.s_addr = 0; qd->redirect_port = 0; @@ -211,21 +215,30 @@ } segments = g_strsplit_set(qd->curr_server, ":", 0); - server = g_strdup(segments[0]); - port = atoi(segments[1]); - if (port <= 0) { - purple_debug_info("QQ", "Port not define in %s\n", qd->curr_server); + tmp_server = g_strdup(segments[0]); + if (NULL != segments[1]) { + port = atoi(segments[1]); + if (port <= 0) { + purple_debug_info("QQ", "Port not define in %s, use default.\n", qd->curr_server); + port = QQ_DEFAULT_PORT; + } + } else { + purple_debug_info("QQ", "Error splitting server string: %s, setting port to default.\n", qd->curr_server); port = QQ_DEFAULT_PORT; } + g_strfreev(segments); qd->connect_retry--; - if ( !connect_to_server(gc, server, port) ) { + if ( !connect_to_server(gc, tmp_server, port) ) { purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Unable to connect.")); } + g_free(tmp_server); + tmp_server = NULL; + qd->check_watcher = purple_timeout_add_seconds(QQ_CONNECT_CHECK, connect_check, gc); return FALSE; /* timeout callback stops */ }
--- a/libpurple/protocols/simple/simple.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/protocols/simple/simple.c Tue Jan 06 07:53:19 2009 +0000 @@ -1951,8 +1951,7 @@ if (userserver[1] == NULL || userserver[1][0] == '\0') { purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, - _("Unable to connect to server. Please enter the " - "address of the server you wish to connect to.")); + _("SIP connect server not specified")); return; }
--- a/libpurple/proxy.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/proxy.c Tue Jan 06 07:53:19 2009 +0000 @@ -238,13 +238,13 @@ g_free(err); err = NULL; - if (!strcmp(tmp, "none\n")) { + if (purple_strequal(tmp, "none\n")) { info.type = PURPLE_PROXY_NONE; g_free(tmp); return &info; } - if (strcmp(tmp, "manual\n")) { + if (purple_strequal(tmp, "manual\n")) { /* Unknown setting. Fallback to using our global proxy settings. */ g_free(tmp); return purple_global_proxy_get_info(); @@ -273,7 +273,7 @@ g_free(err); err = NULL; - if (!strcmp(tmp, "true\n")) + if (purple_strequal(tmp, "true\n")) use_same_proxy = TRUE; g_free(tmp); tmp = NULL; @@ -2252,31 +2252,31 @@ { PurpleProxyInfo *info = purple_global_proxy_get_info(); - if (!strcmp(name, "/purple/proxy/type")) { + if (purple_strequal(name, "/purple/proxy/type")) { int proxytype; const char *type = value; - if (!strcmp(type, "none")) + if (purple_strequal(type, "none")) proxytype = PURPLE_PROXY_NONE; - else if (!strcmp(type, "http")) + else if (purple_strequal(type, "http")) proxytype = PURPLE_PROXY_HTTP; - else if (!strcmp(type, "socks4")) + else if (purple_strequal(type, "socks4")) proxytype = PURPLE_PROXY_SOCKS4; - else if (!strcmp(type, "socks5")) + else if (purple_strequal(type, "socks5")) proxytype = PURPLE_PROXY_SOCKS5; - else if (!strcmp(type, "envvar")) + else if (purple_strequal(type, "envvar")) proxytype = PURPLE_PROXY_USE_ENVVAR; else proxytype = -1; purple_proxy_info_set_type(info, proxytype); - } else if (!strcmp(name, "/purple/proxy/host")) + } else if (purple_strequal(name, "/purple/proxy/host")) purple_proxy_info_set_host(info, value); - else if (!strcmp(name, "/purple/proxy/port")) + else if (purple_strequal(name, "/purple/proxy/port")) purple_proxy_info_set_port(info, GPOINTER_TO_INT(value)); - else if (!strcmp(name, "/purple/proxy/username")) + else if (purple_strequal(name, "/purple/proxy/username")) purple_proxy_info_set_username(info, value); - else if (!strcmp(name, "/purple/proxy/password")) + else if (purple_strequal(name, "/purple/proxy/password")) purple_proxy_info_set_password(info, value); }
--- a/libpurple/prpl.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/prpl.c Tue Jan 06 07:53:19 2009 +0000 @@ -511,7 +511,7 @@ for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) { plugin = (PurplePlugin *)l->data; - if (!strcmp(plugin->info->id, id)) + if (purple_strequal(plugin->info->id, id)) return plugin; }
--- a/libpurple/savedstatuses.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/savedstatuses.c Tue Jan 06 07:53:19 2009 +0000 @@ -461,7 +461,7 @@ ret = g_new0(PurpleSavedStatus, 1); attrib = xmlnode_get_attrib(status, "transient"); - if ((attrib == NULL) || (strcmp(attrib, "true"))) + if (!purple_strequal(attrib, "true")) { /* Read the title */ attrib = xmlnode_get_attrib(status, "name"); @@ -940,7 +940,7 @@ for (iter = saved_statuses; iter != NULL; iter = iter->next) { status = (PurpleSavedStatus *)iter->data; - if ((status->title != NULL) && !strcmp(status->title, title)) + if (purple_strequal(status->title, title)) return status; } @@ -975,8 +975,7 @@ status = (PurpleSavedStatus *)iter->data; if ((status->type == type) && purple_savedstatus_is_transient(status) && !purple_savedstatus_has_substatuses(status) && - (((status->message == NULL) && (message == NULL)) || - ((status->message != NULL) && (message != NULL) && !strcmp(status->message, message)))) + purple_strequal(status->message, message)) { return status; }
--- a/libpurple/server.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/server.c Tue Jan 06 07:53:19 2009 +0000 @@ -152,7 +152,7 @@ auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply"); if((gc->flags & PURPLE_CONNECTION_AUTO_RESP) && !purple_presence_is_available(presence) && - strcmp(auto_reply_pref, "never")) { + !purple_strequal(auto_reply_pref, "never")) { struct last_auto_response *lar; lar = get_last_auto_response(gc, name); @@ -253,17 +253,14 @@ buddies = g_slist_delete_link(buddies, buddies); server_alias = purple_buddy_get_server_alias(b); - if((server_alias == NULL && alias == NULL) || - (server_alias && alias && !strcmp(server_alias, alias))) - { + + if (purple_strequal(server_alias, alias)) continue; - } purple_blist_server_alias_buddy(b, alias); conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, purple_buddy_get_name(b), account); - if(conv != NULL && alias != NULL && - who != NULL && strcmp(alias, who)) + if (conv != NULL && alias != NULL && purple_strequal(alias, who)) { char *escaped = g_markup_escape_text(who, -1); char *escaped2 = g_markup_escape_text(alias, -1); @@ -298,7 +295,7 @@ buddies = g_slist_delete_link(buddies, buddies); balias = purple_buddy_get_local_buddy_alias(b); - if((!balias && !alias) || (balias && alias && !strcmp(balias, alias))) + if (purple_strequal(balias, alias)) continue; purple_blist_alias_buddy(b, alias); @@ -673,8 +670,8 @@ if ((primitive == PURPLE_STATUS_AVAILABLE) || (primitive == PURPLE_STATUS_INVISIBLE) || mobile || - !strcmp(auto_reply_pref, "never") || - (!purple_presence_is_idle(presence) && !strcmp(auto_reply_pref, "awayidle"))) + purple_strequal(auto_reply_pref, "never") || + (!purple_presence_is_idle(presence) && purple_strequal(auto_reply_pref, "awayidle"))) { g_free(name); return;
--- a/libpurple/status.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/status.c Tue Jan 06 07:53:19 2009 +0000 @@ -203,7 +203,7 @@ for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++) { - if (!strcmp(id, status_primitive_map[i].id)) + if (purple_strequal(id, status_primitive_map[i].id)) return status_primitive_map[i].type; } @@ -451,7 +451,7 @@ { PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data; - if (!strcmp(purple_status_attr_get_id(attr), id)) + if (purple_strequal(purple_status_attr_get_id(attr), id)) return attr; } @@ -477,7 +477,7 @@ { status_type = status_types->data; - if (!strcmp(id, status_type->id)) + if (purple_strequal(id, status_type->id)) return status_type; status_types = status_types->next; @@ -782,12 +782,8 @@ { const gchar *string_data = l->data; l = l->next; - if (((string_data == NULL) && (value->data.string_data == NULL)) || - ((string_data != NULL) && (value->data.string_data != NULL) && - !strcmp(string_data, value->data.string_data))) - { + if (purple_strequal(string_data, value->data.string_data)) continue; - } purple_status_set_attr_string(status, id, string_data); changed = TRUE; } @@ -1451,7 +1447,7 @@ { PurpleStatus *temp_status = l->data; - if (!strcmp(status_id, purple_status_get_id(temp_status))) + if (purple_strequal(status_id, purple_status_get_id(temp_status))) status = temp_status; }
--- a/libpurple/stun.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/stun.c Tue Jan 06 07:53:19 2009 +0000 @@ -388,9 +388,7 @@ /** Deal with the server name having changed since we did the lookup */ if (servername && strlen(servername) > 1 - && ((nattype.servername - && strcmp(servername, nattype.servername)) - || !nattype.servername)) { + && !purple_strequal(servername, nattype.servername)) { use_cached_result = FALSE; }
--- a/libpurple/util.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/util.c Tue Jan 06 07:53:19 2009 +0000 @@ -1409,7 +1409,7 @@ struct purple_parse_tag *pt = tags->data; if(xhtml) g_string_append_printf(xhtml, "</%s>", pt->dest_tag); - if(plain && !strcmp(pt->src_tag, "a")) { + if(plain && purple_strequal(pt->src_tag, "a")) { /* if this is a link, we have to add the url to the plaintext, too */ if (cdata && url && (!g_string_equal(cdata, url) && (g_ascii_strncasecmp(url->str, "mailto:", 7) != 0 || @@ -2949,7 +2949,7 @@ g_free(tmp); session = g_getenv("KDE_FULL_SESSION"); - if (session != NULL && !strcmp(session, "true")) + if (purple_strequal(session, "true")) return TRUE; /* If you run Purple from Konsole under !KDE, this will provide a @@ -2990,6 +2990,17 @@ /************************************************************************** * String Functions **************************************************************************/ +gboolean +purple_strequal(const gchar *left, const gchar *right) +{ +#if GLIB_CHECK_VERSION(2,16,0) + return (g_strcmp0(left, right) == 0); +#else + return ((left == NULL && right == NULL) || + (left != NULL && right != NULL && strcmp(left, right) == 0)); +#endif +} + const char * purple_normalize(const PurpleAccount *account, const char *str) { @@ -3104,7 +3115,7 @@ g_return_val_if_fail(x != NULL, FALSE); off = strlen(s) - strlen(x); - return (off >= 0 && !strcmp(s + off, x)); + return (off >= 0 && purple_strequal(s + off, x)); #endif } @@ -4701,7 +4712,7 @@ const char *_purple_oscar_convert(const char *act, const char *protocol) { - if (protocol && act && strcmp(protocol, "prpl-oscar") == 0) { + if (act && purple_strequal(protocol, "prpl-oscar")) { int i; for (i = 0; act[i] != '\0'; i++) if (!isdigit(act[i]))
--- a/libpurple/util.h Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/util.h Tue Jan 06 07:53:19 2009 +0000 @@ -775,6 +775,20 @@ /*@{*/ /** + * Tests two strings for equality. + * + * Unlike strcmp(), this function will not crash if one or both of the + * strings are @c NULL. + * + * @param left A string + * @param right A string to compare with left + * + * @return @c TRUE if the strings are the same, else @c FALSE. + * @since 2.6.0 + */ +gboolean purple_strequal(const gchar *left, const gchar *right); + +/** * Normalizes a string, so that it is suitable for comparison. * * The returned string will point to a static buffer, so if the
--- a/libpurple/whiteboard.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/whiteboard.c Tue Jan 06 07:53:19 2009 +0000 @@ -115,7 +115,7 @@ { wb = l->data; - if(wb->account == account && !strcmp(wb->who, who)) + if(wb->account == account && purple_strequal(wb->who, who)) return wb; l = l->next;
--- a/libpurple/xmlnode.c Tue Jan 06 03:46:52 2009 +0000 +++ b/libpurple/xmlnode.c Tue Jan 06 07:53:19 2009 +0000 @@ -129,7 +129,7 @@ for(attr_node = node->child; attr_node; attr_node = attr_node->next) { if(attr_node->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr_node->name, attr)) + purple_strequal(attr_node->name, attr)) { if(sibling == NULL) { node->child = attr_node->next; @@ -146,20 +146,6 @@ } } -/* Compare two nullable xmlns strings. - * They are considered equal if they're both NULL or the strings are equal - */ -static gboolean _xmlnode_compare_xmlns(const char *xmlns1, const char *xmlns2) { - gboolean equal = FALSE; - - if (xmlns1 == NULL && xmlns2 == NULL) - equal = TRUE; - else if (xmlns1 != NULL && xmlns2 != NULL && !strcmp(xmlns1, xmlns2)) - equal = TRUE; - - return equal; -} - void xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns) { @@ -171,8 +157,8 @@ for(attr_node = node->child; attr_node; attr_node = attr_node->next) { if(attr_node->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr_node->name, attr) && - _xmlnode_compare_xmlns(xmlns, attr_node->xmlns)) + purple_strequal(attr, attr_node->name) && + purple_strequal(xmlns, attr_node->xmlns)) { if(sibling == NULL) { node->child = attr_node->next; @@ -252,7 +238,7 @@ g_return_val_if_fail(attr != NULL, NULL); for(x = node->child; x; x = x->next) { - if(x->type == XMLNODE_TYPE_ATTRIB && !strcmp(attr, x->name)) { + if(x->type == XMLNODE_TYPE_ATTRIB && purple_strequal(attr, x->name)) { return x->data; } } @@ -270,8 +256,8 @@ for(x = node->child; x; x = x->next) { if(x->type == XMLNODE_TYPE_ATTRIB && - !strcmp(attr, x->name) && - _xmlnode_compare_xmlns(xmlns, x->xmlns)) { + purple_strequal(attr, x->name) && + purple_strequal(xmlns, x->xmlns)) { return x->data; } } @@ -382,8 +368,8 @@ if(ns) xmlns = xmlnode_get_namespace(x); - if(x->type == XMLNODE_TYPE_TAG && name && !strcmp(parent_name, x->name) - && (!ns || (xmlns && !strcmp(ns, xmlns)))) { + if(x->type == XMLNODE_TYPE_TAG && purple_strequal(parent_name, x->name) + && purple_strequal(ns, xmlns)) { ret = x; break; } @@ -471,7 +457,7 @@ g_hash_table_foreach(node->namespace_map, (GHFunc)xmlnode_to_str_foreach_append_ns, text); } else if (node->xmlns) { - if(!node->parent || !node->parent->xmlns || strcmp(node->xmlns, node->parent->xmlns)) + if(!node->parent || !purple_strequal(node->xmlns, node->parent->xmlns)) { char *xmlns = g_markup_escape_text(node->xmlns, -1); g_string_append_printf(text, " xmlns='%s'", xmlns); @@ -866,8 +852,8 @@ if(ns) xmlns = xmlnode_get_namespace(sibling); - if(sibling->type == XMLNODE_TYPE_TAG && !strcmp(node->name, sibling->name) && - (!ns || (xmlns && !strcmp(ns, xmlns)))) + if(sibling->type == XMLNODE_TYPE_TAG && purple_strequal(node->name, sibling->name) && + purple_strequal(ns, xmlns)) return sibling; }
--- a/pidgin/gtkblist-theme-loader.c Tue Jan 06 03:46:52 2009 +0000 +++ b/pidgin/gtkblist-theme-loader.c Tue Jan 06 07:53:19 2009 +0000 @@ -42,10 +42,10 @@ xmlnode *root_node = NULL, *sub_node, *sub_sub_node; gchar *filename_full, *data; const gchar *temp; - gboolean sucess = TRUE; + gboolean success = TRUE; GdkColor *bgcolor, *expanded_bgcolor, *collapsed_bgcolor, *contact_color; GdkColor color; - FontColorPair *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *status; + FontColorPair *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *message_nick_said, *status; PidginBlistLayout *layout; PidginBlistTheme *theme; @@ -79,10 +79,11 @@ offline = g_new0(FontColorPair, 1); idle = g_new0(FontColorPair, 1); message = g_new0(FontColorPair, 1); + message_nick_said = g_new0(FontColorPair, 1); status = g_new0(FontColorPair, 1); /* <blist> */ - if ((sucess = (sub_node = xmlnode_get_child(root_node, "blist")) != NULL)) { + if ((success = (sub_node = xmlnode_get_child(root_node, "blist")) != NULL)) { if ((temp = xmlnode_get_attrib(sub_node, "color")) != NULL && gdk_color_parse(temp, bgcolor)) gdk_colormap_alloc_color(gdk_colormap_get_system(), bgcolor, FALSE, TRUE); else { @@ -92,8 +93,8 @@ } /* <groups> */ - if ((sucess = sucess && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL - && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL)) { + if ((success = (success && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL + && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL))) { expanded->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); @@ -110,7 +111,7 @@ } } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL))) { collapsed->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); @@ -127,8 +128,8 @@ } /* <buddys> */ - if ((sucess = sucess && (sub_node = xmlnode_get_child(root_node, "buddys")) != NULL && - (sub_sub_node = xmlnode_get_child(sub_node, "placement")) != NULL)) { + if ((success = (success && (sub_node = xmlnode_get_child(root_node, "buddys")) != NULL && + (sub_sub_node = xmlnode_get_child(sub_node, "placement")) != NULL))) { layout->status_icon = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) : 0; layout->text = (temp = xmlnode_get_attrib(sub_sub_node, "name")) != NULL ? atoi(temp) : 1; @@ -138,7 +139,7 @@ layout->show_status = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) != 0 : 1; } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "background")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "background")) != NULL))) { if(gdk_color_parse(xmlnode_get_attrib(sub_sub_node, "color"), contact_color)) gdk_colormap_alloc_color(gdk_colormap_get_system(), contact_color, FALSE, TRUE); else { @@ -147,49 +148,56 @@ } } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "contact_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "contact_text")) != NULL))) { contact->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) contact->color = g_strdup(temp); else contact->color = g_strdup(DEFAULT_TEXT_COLOR); } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "online_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "online_text")) != NULL))) { online->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) online->color = g_strdup(temp); else online->color = g_strdup(DEFAULT_TEXT_COLOR); } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "away_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "away_text")) != NULL))) { away->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) away->color = g_strdup(temp); else away->color = g_strdup(DEFAULT_TEXT_COLOR); } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "offline_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "offline_text")) != NULL))) { offline->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) online->color = g_strdup(temp); else online->color = g_strdup(DEFAULT_TEXT_COLOR); } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "idle_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "idle_text")) != NULL))) { idle->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) idle->color = g_strdup(temp); else online->color = g_strdup(DEFAULT_TEXT_COLOR); } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_text")) != NULL))) { message->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) message->color = g_strdup(temp); else message->color = g_strdup(DEFAULT_TEXT_COLOR); } + + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_nick_said_text")) != NULL))) { + message_nick_said->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); + if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) + message_nick_said->color = g_strdup(temp); + else message_nick_said->color = g_strdup(DEFAULT_TEXT_COLOR); + } - if ((sucess = sucess && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "status_text")) != NULL)) { + if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "status_text")) != NULL))) { status->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font")); if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color)) status->color = g_strdup(temp); @@ -197,7 +205,7 @@ } /* name is required for theme manager */ - sucess = sucess && xmlnode_get_attrib(root_node, "name") != NULL; + success = (success && xmlnode_get_attrib(root_node, "name") != NULL); /* the new theme */ theme = g_object_new(PIDGIN_TYPE_BLIST_THEME, @@ -220,13 +228,14 @@ "offline", offline, "idle", idle, "message", message, + "message_nick_said", message_nick_said, "status", status, NULL); xmlnode_free(root_node); g_free(data); /* malformed xml file - also frees all partial data*/ - if (!sucess) { + if (!success) { g_object_unref(theme); theme = NULL; }
--- a/pidgin/gtkblist-theme.c Tue Jan 06 03:46:52 2009 +0000 +++ b/pidgin/gtkblist-theme.c Tue Jan 06 07:53:19 2009 +0000 @@ -52,6 +52,7 @@ FontColorPair *offline; FontColorPair *idle; FontColorPair *message; + FontColorPair *message_nick_said; FontColorPair *status; @@ -82,6 +83,7 @@ PROP_OFFLINE, PROP_IDLE, PROP_MESSAGE, + PROP_MESSAGE_NICK_SAID, PROP_STATUS, }; @@ -161,6 +163,9 @@ case PROP_MESSAGE: g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_text_info(theme)); break; + case PROP_MESSAGE_NICK_SAID: + g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_nick_said_text_info(theme)); + break; case PROP_STATUS: g_value_set_pointer(value, pidgin_blist_theme_get_status_text_info(theme)); break; @@ -219,6 +224,9 @@ case PROP_MESSAGE: pidgin_blist_theme_set_unread_message_text_info(theme, g_value_get_pointer(value)); break; + case PROP_MESSAGE_NICK_SAID: + pidgin_blist_theme_set_unread_message_nick_said_text_info(theme, g_value_get_pointer(value)); + break; case PROP_STATUS: pidgin_blist_theme_set_status_text_info(theme, g_value_get_pointer(value)); break; @@ -247,6 +255,7 @@ free_font_and_color(priv->away); free_font_and_color(priv->offline); free_font_and_color(priv->message); + free_font_and_color(priv->message_nick_said); free_font_and_color(priv->status); g_free(priv); @@ -331,10 +340,15 @@ g_object_class_install_property(obj_class, PROP_IDLE, pspec); pspec = g_param_spec_pointer("message", "Message Text", - "The text information for when a buddy is has an unread message", + "The text information for when a buddy has an unread message", G_PARAM_READWRITE); g_object_class_install_property(obj_class, PROP_MESSAGE, pspec); + pspec = g_param_spec_pointer("message_nick_said", "Message (Nick Said) Text", + "The text information for when a chat has an unread message that mentions your nick", + G_PARAM_READWRITE); + g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec); + pspec = g_param_spec_pointer("status", "Status Text", "The text information for a buddy's status", G_PARAM_READWRITE); @@ -540,6 +554,18 @@ } FontColorPair * +pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme) +{ + PidginBlistThemePrivate *priv; + + g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + return priv->message_nick_said; +} + +FontColorPair * pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme) { PidginBlistThemePrivate *priv; @@ -730,6 +756,19 @@ } void +pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair) +{ + PidginBlistThemePrivate *priv; + + g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme)); + + priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme)); + + free_font_and_color(priv->message_nick_said); + priv->message_nick_said = pair; +} + +void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair) { PidginBlistThemePrivate *priv;
--- a/pidgin/gtkblist-theme.h Tue Jan 06 03:46:52 2009 +0000 +++ b/pidgin/gtkblist-theme.h Tue Jan 06 07:53:19 2009 +0000 @@ -200,6 +200,14 @@ FontColorPair *pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme); /** + * Returns the text font and color to be used for chats with unread messages + * that mention your nick. + * + * @returns a font and color pair + */ + FontColorPair *pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme); + +/** * Returns the text font and color to be used for a buddy's status message * * @returns a font and color pair @@ -300,13 +308,21 @@ void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair); /** - * Sets the text color and font to be used for buddies with an unread message + * Sets the text color and font to be used for buddies with unread messages * * @param pair the new text font at color pair */ void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair); /** + * Sets the text color and font to be used for a chat with unread messages + * that mention your nick + * + * @param pair the new text font at color pair + */ +void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair); + +/** * Sets the text color and font to be used for buddy status messages * * @param pair the new text font at color pair
--- a/pidgin/gtkblist.c Tue Jan 06 03:46:52 2009 +0000 +++ b/pidgin/gtkblist.c Tue Jan 06 07:53:19 2009 +0000 @@ -171,7 +171,8 @@ static void set_urgent(void); typedef enum { - PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ + PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE = 1 << 0, /* Whether there's pending message in a conversation */ + PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK = 1 << 1, /* Whether there's a pending message in a chat that mentions our nick */ } PidginBlistNodeFlags; typedef struct _pidgin_blist_node { @@ -784,10 +785,10 @@ if (name && account) { pidgin_log_show(type, name, account); - g_free(name); - pidgin_clear_cursor(gtkblist->window); } + + g_free(name); } static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node) @@ -3866,7 +3867,7 @@ PurpleConversation *conv = find_conversation_with_buddy(b); gboolean hidden_conv = FALSE; gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); - FontColorPair *pair; + FontColorPair *pair = NULL; PidginBlistTheme *theme; if (conv != NULL) { @@ -3984,39 +3985,42 @@ /* choose the colors of the text */ theme = pidgin_blist_get_theme(); - if (theme == NULL) { - status_color = name_color = "dim grey"; - status_font = name_font = ""; - - } else if (purple_presence_is_idle(presence)) { - pair = pidgin_blist_theme_get_idle_text_info(theme); + if (purple_presence_is_idle(presence)) { + if (theme) + pair = pidgin_blist_theme_get_idle_text_info(theme); status_color = name_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; status_font = name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; } else if (!purple_presence_is_online(presence)) { - pair = pidgin_blist_theme_get_offline_text_info(theme); + if (theme) + pair = pidgin_blist_theme_get_offline_text_info(theme); name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; - pair = pidgin_blist_theme_get_status_text_info(theme); - status_color = (pair != NULL && pair->color != NULL) ? g_strdup(pair->color) : "dim grey"; + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); + status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; } else if (purple_presence_is_available(presence)) { - pair = pidgin_blist_theme_get_online_text_info(theme); - name_color = (pair != NULL && pair->color != NULL) ? g_strdup(pair->color) : "black"; + if (theme) + pair = pidgin_blist_theme_get_online_text_info(theme); + name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; - pair = pidgin_blist_theme_get_status_text_info(theme); + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; } else { - pair = pidgin_blist_theme_get_away_text_info(theme); + if (theme) + pair = pidgin_blist_theme_get_away_text_info(theme); name_color = (pair != NULL && pair->color != NULL) ? pair->color : "black"; name_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; - pair = pidgin_blist_theme_get_status_text_info(theme); + if (theme) + pair = pidgin_blist_theme_get_status_text_info(theme); status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey"; status_font = (pair != NULL && pair->font != NULL) ? pair->font : ""; } @@ -4361,6 +4365,10 @@ !(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))) return; ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT + && (flag & PURPLE_MESSAGE_NICK)) + ui->conv.flags |= PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK; + ui->conv.last_message = time(NULL); /* XXX: for lack of better data */ pidgin_blist_update(purple_get_blist(), node); } @@ -4371,7 +4379,8 @@ PidginBlistNode *ui = node->ui_data; if (ui->conv.conv != gtkconv->active_conv) return; - ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE; + ui->conv.flags &= ~(PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE | + PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK); pidgin_blist_update(purple_get_blist(), node); } @@ -6297,27 +6306,31 @@ if(gtknode->contact_expanded) { GdkPixbuf *status; - gchar *mark; + gchar *mark, *tmp; + const gchar *fg_color, *font; GdkColor *color = NULL; PidginBlistTheme *theme = pidgin_blist_get_theme(); + FontColorPair *pair; gboolean selected = (gtkblist->selected_node == cnode); - + mark = g_markup_escape_text(purple_contact_get_alias(contact), -1); - if (theme != NULL) { - FontColorPair *pair = pidgin_blist_theme_get_contact_text_info(theme); + theme = pidgin_blist_get_theme(); + if (theme == NULL) + pair = NULL; + else { + pair = pidgin_blist_theme_get_contact_text_info(theme); color = pidgin_blist_theme_get_contact_color(theme); - - if (pair != NULL) { - gchar *temp = g_strdup_printf("<span foreground='%s' font_desc='%s'>%s</span>", - (selected || pair->color == NULL) ? "black" : pair->color, - (pair->font == NULL) ? "" : pair->font, mark); - - g_free(mark); - mark = temp; - } } + font = (pair == NULL || pair->font == NULL) ? "" : pair->font; + fg_color = (selected || pair == NULL || pair->color == NULL) ? "black" : pair->color; + + tmp = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>", + font, fg_color, mark); + g_free(mark); + mark = tmp; + status = pidgin_blist_get_status_icon(cnode, biglist? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL); @@ -6395,7 +6408,8 @@ if(purple_account_is_connected(chat->account)) { GtkTreeIter iter; GdkPixbuf *status, *avatar, *emblem, *prpl_icon; - gchar *mark, *color, *font, *tmp; + const gchar *color, *font; + gchar *mark, *tmp; gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); PidginBlistNode *ui; @@ -6405,14 +6419,17 @@ FontColorPair *pair; PidginBlistTheme *theme; gboolean selected = (gtkblist->selected_node == node); + gboolean nick_said = FALSE; if (!insert_node(list, node, &iter)) return; ui = node->ui_data; conv = ui->conv.conv; - hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) && - pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))); + if (conv && pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) { + hidden = (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE); + nick_said = (ui->conv.flags & PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK); + } status = pidgin_blist_get_status_icon(node, biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL); @@ -6430,12 +6447,19 @@ if (theme == NULL) pair = NULL; + else if (nick_said) + pair = pidgin_blist_theme_get_unread_message_nick_said_text_info(theme); else if (hidden) pair = pidgin_blist_theme_get_unread_message_text_info(theme); else pair = pidgin_blist_theme_get_online_text_info(theme); - - font = (pair == NULL || pair->font == NULL) ? "" : g_strdup(pair->font); - color = (selected || pair == NULL || pair->color == NULL) ? "black" : g_strdup(pair->color); + + + font = (pair == NULL || pair->font == NULL) ? "" : pair->font; + if (selected || pair == NULL || pair->color == NULL) + /* nick_said color is the same as gtkconv:tab-label-attention */ + color = (nick_said ? "#006aff" : "black"); + else + color = pair->color; tmp = g_strdup_printf("<span font_desc='%s' color='%s' weight='%s'>%s</span>", font, color, hidden ? "bold" : "normal", mark);
--- a/pidgin/gtkprefs.c Tue Jan 06 03:46:52 2009 +0000 +++ b/pidgin/gtkprefs.c Tue Jan 06 07:53:19 2009 +0000 @@ -2468,8 +2468,11 @@ gtk_window_present(GTK_WINDOW(prefs)); return; } - - /* add everthing in the thmeme manager before the window is loaded */ + + /* Refresh the list of themes before showing the preferences window */ + purple_theme_manager_refresh(); + + /* add everything in the theme manager before the window is loaded */ if (prefs_themes_unsorted) { purple_theme_manager_for_each_theme(prefs_themes_sort); prefs_themes_unsorted = FALSE;
--- a/po/bn.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/bn.po Tue Jan 06 07:53:19 2009 +0000 @@ -1,14 +1,16 @@ -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the GAIM package. -# INDRANIL DAS GUPTA (ইন্দ্রনীল দাশগুপ্ত) <indradg@l2c2.org>, 2005. -# Samia Nimatullah <mailsamia2001@yahoo.com>, 2005. -# Tisa Nafisa <tisa_nafisa@yahoo.com>, 2007. -# Jamil Ahmed <jamil@bengalinux.org>, 2007. -# Israt Jahan <israt@ankur.org.bd>, 2008. +# Pidgin Bengali translations (bn_BD, bn_IN) # -msgid "" -msgstr "" -"Project-Id-Version: GAIM 2.5.3\n" +# Copyright (C) 2005 INDRANIL DAS GUPTA (ইন্দ্রনীল দাশগুপ্ত) <indradg@l2c2.org> +# Copyright (C) 2005 Samia Nimatullah <mailsamia2001@yahoo.com> +# Copyright (C) 2007 Tisa Nafisa <tisa_nafisa@yahoo.com> +# Copyright (C) 2007 Jamil Ahmed <jamil@bengalinux.org> +# Copyright (C) 2008 Israt Jahan <israt@ankur.org.bd> +# +# This file is distributed under the same license as the Pidgin package. +# +msgid "" +msgstr "" +"Project-Id-Version: Pidgin 2.5.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-12-18 01:17-0800\n" "PO-Revision-Date: 2008-11-13 17:07+0600\n"
--- a/po/ca.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/ca.po Tue Jan 06 07:53:19 2009 +0000 @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-19 17:53+0100\n" -"PO-Revision-Date: 2008-12-20 17:15+0100\n" +"POT-Creation-Date: 2009-01-05 01:42+0100\n" +"PO-Revision-Date: 2009-01-05 20:36+0100\n" "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n" "Language-Team: Catalan <tradgnome@softcatala.net>\n" "MIME-Version: 1.0\n" @@ -4196,6 +4196,9 @@ msgid "Re-initializing Stream" msgstr "S'està reinicialitzant el flux" +msgid "Server doesn't support blocking" +msgstr "El servidor no permet blocar" + msgid "Not Authorized" msgstr "No autoritzat" @@ -4954,7 +4957,6 @@ msgid "Passport account not yet verified" msgstr "El compte de passaport encara no està verificat" -#, c-format msgid "Passport account suspended" msgstr "El compte de passaport s'ha suspès" @@ -6576,12 +6578,10 @@ msgstr "_D'acord" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Se us pot desconnectar d'aquí a poc temps. Si voleu, podeu emprar TOC fins " -"que això es resolgui. Comproveu si hi ha actualitzacions a %s." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Pot ser que es desconnecti d'aquí a poc. Si això passés, comproveu si hi ha " +"actualitzacions a %s." # FIXME: hash (josep) msgid "Unable to get a valid AIM login hash." @@ -7535,13 +7535,11 @@ msgid " TCP" msgstr " TCP" -#, fuzzy msgid " FromMobile" -msgstr "Mòbil" - -#, fuzzy +msgstr " FromMobile" + msgid " BindMobile" -msgstr "Mòbil" +msgstr " BindMobile" msgid " Video" msgstr " Vídeo" @@ -9335,6 +9333,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "Els noms d'usuari SIP no poden contenir espais en blanc ni @" +msgid "SIP connect server not specified" +msgstr "No s'ha especificat el servidor SIP al qual connectar-se" + #. *< type #. *< ui_requirement #. *< flags @@ -14102,6 +14103,13 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Aquest connector és útil per a depurar servidors i clients XMPP." +#~ msgid "" +#~ "You may be disconnected shortly. You may want to use TOC until this is " +#~ "fixed. Check %s for updates." +#~ msgstr "" +#~ "Se us pot desconnectar d'aquí a poc temps. Si voleu, podeu emprar TOC " +#~ "fins que això es resolgui. Comproveu si hi ha actualitzacions a %s." + #~ msgid "Connection to server lost (no data received within %d second)" #~ msgid_plural "" #~ "Connection to server lost (no data received within %d seconds)" @@ -14748,9 +14756,6 @@ #~ "Podeu obtenir la versió %s de:<br><a href=\"http://pidgin.im/\">http://" #~ "pidgin.im</a>." -#~ msgid "WinGaim Options" -#~ msgstr "Opcions del WinGaim" - #~ msgid "" #~ "%d buddy from group %s was not removed because it belongs to an account " #~ "which is disabled or offline. This buddy and the group were not " @@ -16010,62 +16015,18 @@ #~ msgid "Error communicating with Gadu-Gadu server" #~ msgstr "S'ha produït un error en comunicar amb el servidor Gadu-Gadu" -#~ msgid "" -#~ "Gaim was unable to complete your request due to a problem communicating " -#~ "with the Gadu-Gadu HTTP server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut completar la vostra petició perquè hi ha hagut un " -#~ "problema en la comunicació amb el servidor HTTP Gadu-Gadu. Torneu-ho a " -#~ "intentar més tard." - #~ msgid "Unable to import Gadu-Gadu buddy list" #~ msgstr "No s'ha pogut importar la llista d'amics de Gadu-Gadu" -#~ msgid "" -#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server. Please " -#~ "try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut connectar-se al servidor de llistes d'amics del Gadu-" -#~ "Gadu. Torneu-ho a intentar més tard." - -#~ msgid "" -#~ "Gaim was unable to connect to the buddy list server. Please try again " -#~ "later." -#~ msgstr "" -#~ "El Gaim no s'ha pogut connectar al servidor de llistes d'amics. Torneu-ho " -#~ "a intentar més tard." - #~ msgid "Unable to delete Gadu-Gadu buddy list" #~ msgstr "No s'ha pogut suprimir la llista d'amics de Gadu-Gadu" #~ msgid "Unable to access directory" #~ msgstr "No s'ha pogut accedir al directori" -#~ msgid "" -#~ "Gaim was unable to search the Directory because it was unable to connect " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut cercar al directori perquè no s'hi ha pogut " -#~ "connectar. Torneu-ho a intentar més tard." - -#~ msgid "" -#~ "Gaim was unable to change your password due to an error connecting to the " -#~ "Gadu-Gadu server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut canviar la contrasenya a causa d'un error mentre es " -#~ "comunicava amb el servidor Gadu-Gadu. Torneu-ho a intentar més tard." - #~ msgid "Unable to access user profile." #~ msgstr "No s'ha pogut accedir al perfil de l'usuari." -#~ msgid "" -#~ "Gaim was unable to access this user's profile due to an error connecting " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut accedir al perfil de l'usuari atès que s'ha produït " -#~ "un error en connectar-se al servidor de directori. Torneu-ho a intentar " -#~ "més tard." - #~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them." #~ msgstr "L'usuari %s (%s%s%s%s%s) vol que l'autoritzeu." @@ -16207,13 +16168,6 @@ #~ msgid "/Buddies/Log Out" #~ msgstr "/Amics/Desconnecta" -#~ msgid "" -#~ "Gaim cannot send files over Yahoo! that are bigger than One Megabyte " -#~ "(1,048,576 bytes)." -#~ msgstr "" -#~ "El Gaim no pot enviar fitxer a través de Yahoo! que siguin més grans d'un " -#~ "Megabyte (1.048.576 bytes)." - #~ msgid "Miscellaneous error" #~ msgstr "Error miscel·lani" @@ -16241,12 +16195,6 @@ #~ msgid "MSN error for account %s" #~ msgstr "S'ha produït un error MSN per al compte %s" -#~ msgid "Moving Gaim Settings.." -#~ msgstr "S'està movent les opcions del Gaim..." - -#~ msgid "Moving Gaim user settings to: " -#~ msgstr "S'està movent les opcions d'usuaris del Gaim a: " - #~ msgid "Notification" #~ msgstr "Notificació"
--- a/po/ca@valencia.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/ca@valencia.po Tue Jan 06 07:53:19 2009 +0000 @@ -34,7 +34,7 @@ "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-12-19 17:53+0100\n" -"PO-Revision-Date: 2008-12-20 17:15+0100\n" +"PO-Revision-Date: 2009-01-05 20:36+0100\n" "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n" "Language-Team: Catalan <tradgnome@softcatala.net>\n" "MIME-Version: 1.0\n" @@ -14739,9 +14739,6 @@ #~ "Podeu obtenir la versió %s de:<br><a href=\"http://pidgin.im/\">http://" #~ "pidgin.im</a>." -#~ msgid "WinGaim Options" -#~ msgstr "Opcions del WinGaim" - #~ msgid "" #~ "%d buddy from group %s was not removed because it belongs to an account " #~ "which is disabled or offline. This buddy and the group were not " @@ -16001,62 +15998,18 @@ #~ msgid "Error communicating with Gadu-Gadu server" #~ msgstr "S'ha produït un error en comunicar amb el servidor Gadu-Gadu" -#~ msgid "" -#~ "Gaim was unable to complete your request due to a problem communicating " -#~ "with the Gadu-Gadu HTTP server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut completar la vostra petició perquè hi ha hagut un " -#~ "problema en la comunicació amb el servidor HTTP Gadu-Gadu. Torneu-ho a " -#~ "intentar més tard." - #~ msgid "Unable to import Gadu-Gadu buddy list" #~ msgstr "No s'ha pogut importar la llista d'amics de Gadu-Gadu" -#~ msgid "" -#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server. Please " -#~ "try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut connectar-se al servidor de llistes d'amics del Gadu-" -#~ "Gadu. Torneu-ho a intentar més tard." - -#~ msgid "" -#~ "Gaim was unable to connect to the buddy list server. Please try again " -#~ "later." -#~ msgstr "" -#~ "El Gaim no s'ha pogut connectar al servidor de llistes d'amics. Torneu-ho " -#~ "a intentar més tard." - #~ msgid "Unable to delete Gadu-Gadu buddy list" #~ msgstr "No s'ha pogut suprimir la llista d'amics de Gadu-Gadu" #~ msgid "Unable to access directory" #~ msgstr "No s'ha pogut accedir al directori" -#~ msgid "" -#~ "Gaim was unable to search the Directory because it was unable to connect " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut cercar al directori perquè no s'hi ha pogut " -#~ "connectar. Torneu-ho a intentar més tard." - -#~ msgid "" -#~ "Gaim was unable to change your password due to an error connecting to the " -#~ "Gadu-Gadu server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut canviar la contrasenya a causa d'un error mentre es " -#~ "comunicava amb el servidor Gadu-Gadu. Torneu-ho a intentar més tard." - #~ msgid "Unable to access user profile." #~ msgstr "No s'ha pogut accedir al perfil de l'usuari." -#~ msgid "" -#~ "Gaim was unable to access this user's profile due to an error connecting " -#~ "to the directory server. Please try again later." -#~ msgstr "" -#~ "El Gaim no ha pogut accedir al perfil de l'usuari atès que s'ha produït " -#~ "un error en connectar-se al servidor de directori. Torneu-ho a intentar " -#~ "més tard." - #~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them." #~ msgstr "L'usuari %s (%s%s%s%s%s) vol que l'autoritzeu." @@ -16198,13 +16151,6 @@ #~ msgid "/Buddies/Log Out" #~ msgstr "/Amics/Desconnecta" -#~ msgid "" -#~ "Gaim cannot send files over Yahoo! that are bigger than One Megabyte " -#~ "(1,048,576 bytes)." -#~ msgstr "" -#~ "El Gaim no pot enviar fitxer a través de Yahoo! que siguin més grans d'un " -#~ "Megabyte (1.048.576 bytes)." - #~ msgid "Miscellaneous error" #~ msgstr "Error miscel·lani" @@ -16232,12 +16178,6 @@ #~ msgid "MSN error for account %s" #~ msgstr "S'ha produït un error MSN per al compte %s" -#~ msgid "Moving Gaim Settings.." -#~ msgstr "S'està movent les opcions del Gaim..." - -#~ msgid "Moving Gaim user settings to: " -#~ msgstr "S'està movent les opcions d'usuaris del Gaim a: " - #~ msgid "Notification" #~ msgstr "Notificació"
--- a/po/de.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/de.po Tue Jan 06 07:53:19 2009 +0000 @@ -11,15 +11,15 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-18 23:08+0100\n" -"PO-Revision-Date: 2008-12-18 20:11+0100\n" -"Last-Translator: Bjoern Voigt <bjoern@cs.tu-berlin.de>\n" -"Language-Team: Deutsch <de@li.org>\n" +"POT-Creation-Date: 2009-01-05 17:34+0100\n" +"PO-Revision-Date: 2009-01-05 17:34+0100\n" +"Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n" +"Language-Team: German <de@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Lokalize 0.2\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -4168,6 +4168,9 @@ msgid "Re-initializing Stream" msgstr "Initialisiere Stream nochmal" +msgid "Server doesn't support blocking" +msgstr "Server unterstützt kein Blockieren" + msgid "Not Authorized" msgstr "Nicht autorisiert" @@ -6487,12 +6490,10 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Die Verbindung kann schnell unterbrochen werden. Vielleicht wollen Sie TOC " -"benutzen bis dieser Fehler behoben wurde. Suchen Sie auf %s nach Updates." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Sie werden eventuell gleich abgemeldet. In diesem Fall, überprüfen Sie %s " +"auf Updates." msgid "Unable to get a valid AIM login hash." msgstr "Konnte keinen gültigen AIM Login-Hash bekommen." @@ -9263,6 +9264,9 @@ msgid "SIP usernames may not contain whitespaces or @ symbols" msgstr "SIP-Benutzernamen dürfen keine Leerzeichen oder @-Symbole enthalten" +msgid "SIP connect server not specified" +msgstr "SIP-Verbindungsserver nicht angegeben" + #. *< type #. *< ui_requirement #. *< flags
--- a/po/fr.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/fr.po Tue Jan 06 07:53:19 2009 +0000 @@ -4,7 +4,7 @@ # Copyright (C) 2002, Stéphane Pontier <stephane.pontier@free.fr> # Copyright (C) 2002, Stéphane Wirtel <stephane.wirtel@belgacom.net> # Copyright (C) 2002, Loïc Jeannin <loic.jeannin@free.fr> -# Copyright (C) 2002-2008, Éric Boumaour <zongo_fr@users.sourceforge.net> +# Copyright (C) 2002-2009, Éric Boumaour <zongo_fr@users.sourceforge.net> # # This file is distributed under the same license as the Pidgin package. # @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-16 10:10+0100\n" -"PO-Revision-Date: 2008-12-16 10:09+0100\n" +"POT-Creation-Date: 2009-01-05 10:49+0100\n" +"PO-Revision-Date: 2009-01-05 10:48+0100\n" "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n" "Language-Team: fr <fr@li.org>\n" "MIME-Version: 1.0\n" @@ -4191,6 +4191,9 @@ msgid "Re-initializing Stream" msgstr "Réinitialisation du flux" +msgid "Server doesn't support blocking" +msgstr "Le serveur ne supporte pas le blocage" + msgid "Not Authorized" msgstr "Non autorisé" @@ -4947,7 +4950,6 @@ msgid "Passport account not yet verified" msgstr "Le compte Passeport n'est pas encore validé" -#, c-format msgid "Passport account suspended" msgstr "Le compte Passeport est suspendu" @@ -6548,12 +6550,10 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Vous risquez d'être déconnecté sous peu. Veuillez essayer d'utiliser TOC " -"entre-temps si cela arrive. Visitez %s pour plus d'informations." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Vous risquez d'être déconnecté sous peu. Si c'est le cas, consultez %s pour " +"plus d'informations." msgid "Unable to get a valid AIM login hash." msgstr "Impossible de récupérer un code de connexion AIM valide." @@ -9310,6 +9310,9 @@ msgstr "" "Les noms d'utilisateur SIP ne peuvent pas avoir d'espace ou de symbole @." +msgid "SIP connect server not specified" +msgstr "Serveur de connexion SIP non spécifié" + #. *< type #. *< ui_requirement #. *< flags @@ -14053,42 +14056,9 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP." -#~ msgid "Connection to server lost (no data received within %d second)" -#~ msgid_plural "" -#~ "Connection to server lost (no data received within %d seconds)" -#~ msgstr[0] "" -#~ "Connexion avec le serveur perdue (aucune donnée depuis %d seconde)." -#~ msgstr[1] "" -#~ "Connexion avec le serveur perdue (aucune donnée depuis %d secondes)." - -#~ msgid "%d needs Q&A" -#~ msgstr "%d a besoin d'une réponse" - -#~ msgid "Add buddy Q&A" -#~ msgstr "Ajouter une réponse de contact" - -#~ msgid "Can not decrypt get server reply" -#~ msgstr "Impossible de récupérer la réponse du serveur" - -#~ msgid "Keep alive error" -#~ msgstr "Erreur de Keep alive" - -#~ msgid "" -#~ "Lost connection with server:\n" -#~ "%d, %s" -#~ msgstr "" -#~ "Connexion perdue avec le serveur :\n" -#~ "%d, %s" - -#~ msgid "Connecting server ..." -#~ msgstr "Connexion au serveur..." - #~ msgid "Failed to send IM." #~ msgstr "Impossible d'envoyer le message." -#~ msgid "Not a member of room \"%s\"\n" -#~ msgstr "Vous n'êtes pas membre du groupe « %s ».\n" - #~ msgid "User information for %s unavailable" #~ msgstr "Les informations sur %s ne sont pas disponibles"
--- a/po/hu.po Tue Jan 06 03:46:52 2009 +0000 +++ b/po/hu.po Tue Jan 06 07:53:19 2009 +0000 @@ -1,16 +1,16 @@ # Hungarian translation of pidgin. -# Copyright (C) 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the Pidgin package. # The Hungarian translation of Gaim was sponsored by Novell Hungary, many thanks for it! # # Zoltan Sutto <suttozoltan@chello.hu>, 2003. -# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007, 2008. +# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007, 2008, 2009. msgid "" msgstr "" "Project-Id-Version: pidgin 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-12-18 12:34+0100\n" -"PO-Revision-Date: 2008-12-18 12:29+0100\n" +"POT-Creation-Date: 2009-01-04 22:44+0100\n" +"PO-Revision-Date: 2009-01-04 22:42+0100\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <gnome@fsf.hu>\n" "MIME-Version: 1.0\n" @@ -4156,6 +4156,9 @@ msgid "Re-initializing Stream" msgstr "A folyam újrainicializálása" +msgid "Server doesn't support blocking" +msgstr "A kiszolgáló nem támogatja a blokkolást" + msgid "Not Authorized" msgstr "Nem engedélyezett" @@ -4909,7 +4912,6 @@ msgid "Passport account not yet verified" msgstr "Passport fiók (MSN igazolvány) még nincs ellenőrizve" -#, c-format msgid "Passport account suspended" msgstr "A Passport fiók felfüggesztve" @@ -6505,12 +6507,10 @@ msgstr "_OK" #, c-format -msgid "" -"You may be disconnected shortly. You may want to use TOC until this is " -"fixed. Check %s for updates." -msgstr "" -"Hamarosan megszakad a kapcsolat. A helyreállításig használja a TOC-ot. " -"Frissítésekért keresse fel a következő címet: %s." +msgid "You may be disconnected shortly. If so, check %s for updates." +msgstr "" +"Hamarosan megszakadhat a kapcsolat. Ebbben az esetben keressen frissítéseket " +"a következő címen: %s." msgid "Unable to get a valid AIM login hash." msgstr "Nem kérhető le érvényes AIM belépő hash." @@ -9287,6 +9287,9 @@ "A SIP felhasználónevek nem tartalmazhatnak üreshely-karaktert vagy @ " "szimbólumot" +msgid "SIP connect server not specified" +msgstr "A SIP kapcsolatkiszolgáló nincs megadva" + #. *< type #. *< ui_requirement #. *< flags