Mercurial > pidgin
changeset 30503:a7e16735b218
propagate from branch 'im.pidgin.pidgin' (head 903af32836ce489b57aec5f255ba91e9e675526f)
to branch 'im.pidgin.cpw.malu.xmpp.google_relay' (head f3104b6ee63e5ad78c9f7cbdeab49818bff9ab26)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Mon, 28 Sep 2009 18:14:06 +0000 |
parents | 67a97fca157c (diff) 7a145934132f (current diff) |
children | 5de3eccf4cf3 |
files | libpurple/protocols/jabber/google.c libpurple/protocols/jabber/jabber.c libpurple/protocols/jabber/jingle/jingle.c |
diffstat | 20 files changed, 359 insertions(+), 368 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Sun Sep 27 20:04:44 2009 +0000 +++ b/COPYRIGHT Mon Sep 28 18:14:06 2009 +0000 @@ -275,6 +275,7 @@ Lokheed Norberto Lopes Shlomi Loubaton +Brian Lu Uli Luckas Matthew Luckie Marcus Lundblad
--- a/ChangeLog Sun Sep 27 20:04:44 2009 +0000 +++ b/ChangeLog Mon Sep 28 18:14:06 2009 +0000 @@ -3,10 +3,15 @@ version 2.6.3 (??/??/20??): XMPP: * Fix a crash when attempting to validate an invalid JID. + * Resolve an issue when connecting to iChat Server when no resource + is specified. + * Fix a crash when adding a buddy without an '@'. General: * New 'plugins' sub-command to 'debug' command (i.e. '/debug plugins') to announce the list of loaded plugins (in both Finch and Pidgin). + * Fix a crash when performing DNS queries on Unixes that use the + blocking DNS lookups. (Brian Lu) version 2.6.2 (09/05/2009): libpurple:
--- a/finch/gntaccount.c Sun Sep 27 20:04:44 2009 +0000 +++ b/finch/gntaccount.c Mon Sep 28 18:14:06 2009 +0000 @@ -166,8 +166,7 @@ /* Alias */ value = gnt_entry_get_text(GNT_ENTRY(dialog->alias)); - if (value && *value) - purple_account_set_alias(account, value); + purple_account_set_alias(account, value); /* Remember password and password */ purple_account_set_remember_password(account,
--- a/libpurple/connection.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/connection.c Mon Sep 28 18:14:06 2009 +0000 @@ -52,10 +52,7 @@ send_keepalive(gpointer data) { PurpleConnection *gc = data; - PurplePluginProtocolInfo *prpl_info = NULL; - - if (gc == NULL) - return TRUE; + PurplePluginProtocolInfo *prpl_info; /* Only send keep-alives if we haven't heard from the * server in a while. @@ -63,12 +60,8 @@ if ((time(NULL) - gc->last_received) < KEEPALIVE_INTERVAL) return TRUE; - if (gc->prpl == NULL) - return TRUE; - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); - - if (prpl_info && prpl_info->keepalive) + if (prpl_info->keepalive) prpl_info->keepalive(gc); return TRUE;
--- a/libpurple/dbus-server.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/dbus-server.c Mon Sep 28 18:14:06 2009 +0000 @@ -126,8 +126,10 @@ gint id = GPOINTER_TO_INT(g_hash_table_lookup(map_node_id, node)); if ((id == 0) && (node != NULL)) { - purple_debug_warning("dbus", - "Need to register an object with the dbus subsystem. (If you are not a developer, please ignore this message.)\n"); + if (purple_debug_is_verbose()) + purple_debug_warning("dbus", + "Need to register an object with the dbus subsystem." + " (If you are not a developer, please ignore this message.)\n"); return 0; } return id; @@ -795,7 +797,11 @@ dbus_message_iter_init_append(signal, &iter); if (purple_dbus_message_append_purple_values(&iter, num_values, values, vargs)) - purple_debug_warning("dbus", "The signal \"%s\" caused some dbus error. (If you are not a developer, please ignore this message.)\n", name); + if (purple_debug_is_verbose()) + purple_debug_warning("dbus", + "The signal \"%s\" caused some dbus error." + " (If you are not a developer, please ignore this message.)\n", + name); dbus_connection_send(purple_dbus_connection, signal, NULL);
--- a/libpurple/dnsquery.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/dnsquery.c Mon Sep 28 18:14:06 2009 +0000 @@ -328,6 +328,8 @@ printf("dns[%d] Error: getaddrinfo returned %d\n", getpid(), rc); dns_params.hostname[0] = '\0'; + g_free(hostname); + hostname = NULL; continue; } tmp = res; @@ -774,11 +776,8 @@ if (!dns_str_is_ascii(query_data->hostname)) { rc = purple_network_convert_idn_to_ascii(query_data->hostname, &hostname); if (rc != 0) { - /* FIXME: Dirty 2.6.0 string freeze hack */ - char tmp[8]; - g_snprintf(tmp, sizeof(tmp), "%d", rc); - query_data->error_message = g_strdup_printf(_("Error resolving %s:\n%s"), - query_data->hostname, tmp); + query_data->error_message = g_strdup_printf(_("Error converting %s " + "to punycode: %d"), query_data->hostname, rc); /* back to main thread */ purple_timeout_add(0, dns_main_thread_cb, query_data); return 0; @@ -918,7 +917,6 @@ PurpleDnsQueryData *query_data; struct sockaddr_in sin; GSList *hosts = NULL; - char *hostname; query_data = data; query_data->timeout = 0; @@ -931,6 +929,7 @@ if (!inet_aton(query_data->hostname, &sin.sin_addr)) { struct hostent *hp; + gchar *hostname; #ifdef USE_IDN if (!dns_str_is_ascii(query_data->hostname)) { int ret = purple_network_convert_idn_to_ascii(query_data->hostname, @@ -951,16 +950,17 @@ g_snprintf(message, sizeof(message), _("Error resolving %s: %d"), query_data->hostname, h_errno); purple_dnsquery_failed(query_data, message); + g_free(hostname); return FALSE; } memset(&sin, 0, sizeof(struct sockaddr_in)); memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); sin.sin_family = hp->h_addrtype; + g_free(hostname); } else sin.sin_family = AF_INET; sin.sin_port = htons(query_data->port); - g_free(hostname); hosts = g_slist_append(hosts, GINT_TO_POINTER(sizeof(sin))); hosts = g_slist_append(hosts, g_memdup(&sin, sizeof(sin)));
--- a/libpurple/protocols/jabber/auth.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/auth.c Mon Sep 28 18:14:06 2009 +0000 @@ -692,7 +692,8 @@ JabberIq *iq; xmlnode *query, *username; - /* We can end up here without encryption if the server doesn't support + /* + * We can end up here without encryption if the server doesn't support * <stream:features/> and we're not using old-style SSL. If the user * is requiring SSL/TLS, we need to enforce it. */ @@ -704,6 +705,16 @@ return; } + /* + * IQ Auth doesn't have support for resource binding, so we need to pick a + * default resource so it will work properly. jabberd14 throws an error and + * iChat server just fails silently. + */ + if (!js->user->resource || *js->user->resource == '\0') { + g_free(js->user->resource); + js->user->resource = g_strdup("Home"); + } + #ifdef HAVE_CYRUS_SASL /* If we have Cyrus SASL, then passwords will have been set * to OPTIONAL for this protocol. So, we need to do our own
--- a/libpurple/protocols/jabber/chat.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/chat.c Mon Sep 28 18:14:06 2009 +0000 @@ -99,6 +99,9 @@ { JabberChat *chat = NULL; + g_return_val_if_fail(room != NULL, NULL); + g_return_val_if_fail(server != NULL, NULL); + if(NULL != js->chats) { char *room_jid = g_strdup_printf("%s@%s", room, server);
--- a/libpurple/protocols/jabber/google.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Mon Sep 28 18:14:06 2009 +0000 @@ -106,7 +106,8 @@ for (;candidates;candidates = candidates->next) { JabberIq *iq; - gchar *ip, *port, *pref, *username, *password; + gchar *ip, *port, *username, *password; + gchar pref[16]; PurpleMediaCandidateType type; xmlnode *sess; xmlnode *candidate; @@ -125,9 +126,8 @@ ip = purple_media_candidate_get_ip(transport); port = g_strdup_printf("%d", purple_media_candidate_get_port(transport)); - pref = g_strdup_printf("%f", - purple_media_candidate_get_priority(transport) - /1000.0); + g_ascii_dtostr(pref, 16, + purple_media_candidate_get_priority(transport) / 1000.0); username = purple_media_candidate_get_username(transport); password = purple_media_candidate_get_password(transport); type = purple_media_candidate_get_candidate_type(transport); @@ -165,7 +165,6 @@ g_free(ip); g_free(port); - g_free(pref); g_free(username); g_free(password);
--- a/libpurple/protocols/jabber/jabber.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Mon Sep 28 18:14:06 2009 +0000 @@ -1609,15 +1609,6 @@ if(js->protocol_version == JABBER_PROTO_0_9 && js->registration) { jabber_register_start(js); } else if(js->auth_type == JABBER_AUTH_IQ_AUTH) { - /* with dreamhost's xmpp server at least, you have to - specify a resource or you will get a "406: Not - Acceptable" - */ - if(!js->user->resource || *js->user->resource == '\0') { - g_free(js->user->resource); - js->user->resource = g_strdup("Home"); - } - jabber_auth_start_old(js); } break;
--- a/libpurple/protocols/jabber/jingle/jingle.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/jingle/jingle.c Mon Sep 28 18:14:06 2009 +0000 @@ -120,7 +120,7 @@ const gchar *creator = xmlnode_get_attrib(content, "creator"); JingleContent *local_content = jingle_session_find_content(session, name, creator); - if (content != NULL) { + if (local_content != NULL) { const gchar *senders = xmlnode_get_attrib(content, "senders"); gchar *local_senders = jingle_content_get_senders(local_content); if (strcmp(senders, local_senders))
--- a/libpurple/protocols/jabber/roster.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/jabber/roster.c Mon Sep 28 18:14:06 2009 +0000 @@ -354,7 +354,7 @@ } /* Adding a chat room or a chat buddy to the roster is *not* supported. */ - if (jabber_chat_find(js, jid->node, jid->domain) != NULL) { + if (jid->node && jabber_chat_find(js, jid->node, jid->domain) != NULL) { /* * This is the same thing Bonjour does. If it causes problems, move * it to an idle callback.
--- a/libpurple/protocols/oscar/family_feedbag.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/oscar/family_feedbag.c Mon Sep 28 18:14:06 2009 +0000 @@ -135,13 +135,18 @@ } } while (exists); } - } else if (type == AIM_SSI_TYPE_ICONINFO) { + } else if (new->gid == 0x0000) { + /* + * This is weird, but apparently items in the root group can't + * have a buddy ID equal to any group ID. You'll get error + * 0x0003 when trying to add, which is "item already exists" + */ if (new->bid == 0xFFFF) { do { new->bid += 0x0001; exists = FALSE; for (cur = *list; cur != NULL; cur = cur->next) - if ((cur->bid >= new->bid) || (cur->gid >= new->bid)) { + if (cur->bid == new->bid || cur->gid == new->bid) { exists = TRUE; break; } @@ -153,7 +158,7 @@ new->bid += 0x0001; exists = FALSE; for (cur = *list; cur != NULL; cur = cur->next) - if ((cur->bid == new->bid) && (cur->gid == new->gid)) { + if (cur->bid == new->bid && cur->gid == new->gid) { exists = TRUE; break; } @@ -687,10 +692,6 @@ cur = cur->next; } - /* Check if the master group is empty */ - if ((cur = aim_ssi_itemlist_find(od->ssi.local, 0x0000, 0x0000)) && (!cur->data)) - aim_ssi_itemlist_del(&od->ssi.local, cur); - /* If we've made any changes then sync our list with the server's */ return aim_ssi_sync(od); }
--- a/libpurple/protocols/yahoo/libymsg.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/yahoo/libymsg.c Mon Sep 28 18:14:06 2009 +0000 @@ -4286,7 +4286,7 @@ msn = !g_ascii_strncasecmp(who, "msn/", 4); - if( strncmp(who, "+", 1) == 0 ) { + if (who[0] == '+') { /* we have an sms to be sent */ gchar *carrier = NULL; const char *alias = NULL; @@ -4543,7 +4543,7 @@ yd->current_status = get_yahoo_status_from_purple_status(status); } - invisible = !( purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc))) ); + invisible = (yd->current_status == YAHOO_STATUS_INVISIBLE); pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id);
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/protocols/yahoo/yahoo_filexfer.c Mon Sep 28 18:14:06 2009 +0000 @@ -1363,7 +1363,6 @@ xfer = data; if (!(xd = xfer->data)) { - purple_input_remove(xd->input_event); purple_xfer_cancel_remote(xfer); return; } @@ -1387,7 +1386,6 @@ xfer = data; if (!(xd = xfer->data)) { - purple_input_remove(xd->input_event); purple_xfer_cancel_remote(xfer); return; } @@ -1491,7 +1489,7 @@ char *filename_without_spaces = NULL; xfer = data; - if ( !( (xd = xfer->data) || (listenfd != -1) ) ) { + if (!(xd = xfer->data) || (listenfd == -1)) { purple_debug_warning("yahoo","p2p: error starting server for p2p file transfer\n"); purple_xfer_cancel_remote(xfer); return;
--- a/libpurple/server.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/server.c Mon Sep 28 18:14:06 2009 +0000 @@ -44,17 +44,16 @@ unsigned int serv_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->send_typing) - return prpl_info->send_typing(gc, name, state); + if (prpl_info->send_typing) + return prpl_info->send_typing(gc, name, state); + } return 0; } @@ -142,7 +141,7 @@ conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, account); - if(prpl_info && prpl_info->send_im) + if (prpl_info->send_im) val = prpl_info->send_im(gc, name, message, flags); /* @@ -167,43 +166,40 @@ void serv_get_info(PurpleConnection *gc, const char *name) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(gc && prpl_info && prpl_info->get_info) - prpl_info->get_info(gc, name); + if (prpl_info->get_info) + prpl_info->get_info(gc, name); + } } void serv_set_info(PurpleConnection *gc, const char *info) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; - PurpleAccount *account = NULL;; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; + PurpleAccount *account; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->set_info) { - - account = purple_connection_get_account(gc); + if (prpl_info->set_info) { + account = purple_connection_get_account(gc); - if(purple_signal_emit_return_1(purple_accounts_get_handle(), - "account-setting-info", account, info)) - return; + if (purple_signal_emit_return_1(purple_accounts_get_handle(), + "account-setting-info", account, info)) + return; - prpl_info->set_info(gc, info); + prpl_info->set_info(gc, info); - purple_signal_emit(purple_accounts_get_handle(), - "account-set-info", account, info); + purple_signal_emit(purple_accounts_get_handle(), + "account-set-info", account, info); + } } } @@ -212,25 +208,27 @@ */ void serv_alias_buddy(PurpleBuddy *b) { - PurpleAccount *account = NULL; - PurpleConnection *gc = NULL; - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurpleAccount *account; + PurpleConnection *gc; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(b) + if (b) { account = purple_buddy_get_account(b); - if(account) - gc = purple_account_get_connection(account); + if (account) { + gc = purple_account_get_connection(account); - if(gc) - prpl = purple_connection_get_prpl(gc); + if (gc) { + prpl = purple_connection_get_prpl(gc); + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl) - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - - if(b && prpl_info && prpl_info->alias_buddy) { - prpl_info->alias_buddy(gc, purple_buddy_get_name(b), purple_buddy_get_local_buddy_alias(b)); + if (prpl_info->alias_buddy) + prpl_info->alias_buddy(gc, + purple_buddy_get_name(b), + purple_buddy_get_local_buddy_alias(b)); + } + } } } @@ -349,10 +347,10 @@ */ void serv_move_buddy(PurpleBuddy *b, PurpleGroup *og, PurpleGroup *ng) { - PurpleAccount *account = NULL; - PurpleConnection *gc = NULL; - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurpleAccount *account; + PurpleConnection *gc; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; g_return_if_fail(b != NULL); g_return_if_fail(og != NULL); @@ -361,131 +359,120 @@ account = purple_buddy_get_account(b); gc = purple_account_get_connection(account); - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(gc && og && ng) { - if (prpl_info && prpl_info->group_buddy) { + if (prpl_info->group_buddy) prpl_info->group_buddy(gc, purple_buddy_get_name(b), - purple_group_get_name(og), - purple_group_get_name(ng)); - } + purple_group_get_name(og), + purple_group_get_name(ng)); } } void serv_add_permit(PurpleConnection *gc, const char *name) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->add_permit) - prpl_info->add_permit(gc, name); + if (prpl_info->add_permit) + prpl_info->add_permit(gc, name); + } } void serv_add_deny(PurpleConnection *gc, const char *name) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->add_deny) - prpl_info->add_deny(gc, name); + if (prpl_info->add_deny) + prpl_info->add_deny(gc, name); + } } void serv_rem_permit(PurpleConnection *gc, const char *name) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->rem_permit) - prpl_info->rem_permit(gc, name); + if (prpl_info->rem_permit) + prpl_info->rem_permit(gc, name); + } } void serv_rem_deny(PurpleConnection *gc, const char *name) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->rem_deny) - prpl_info->rem_deny(gc, name); + if (prpl_info->rem_deny) + prpl_info->rem_deny(gc, name); + } } void serv_set_permit_deny(PurpleConnection *gc) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - /* - * this is called when either you import a buddy list, and make lots - * of changes that way, or when the user toggles the permit/deny mode - * in the prefs. In either case you should probably be resetting and - * resending the permit/deny info when you get this. - */ - if(prpl_info && prpl_info->set_permit_deny) - prpl_info->set_permit_deny(gc); + /* + * this is called when either you import a buddy list, and make lots + * of changes that way, or when the user toggles the permit/deny mode + * in the prefs. In either case you should probably be resetting and + * resending the permit/deny info when you get this. + */ + if (prpl_info->set_permit_deny) + prpl_info->set_permit_deny(gc); + } } void serv_join_chat(PurpleConnection *gc, GHashTable *data) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->join_chat) - prpl_info->join_chat(gc, data); + if (prpl_info->join_chat) + prpl_info->join_chat(gc, data); + } } void serv_reject_chat(PurpleConnection *gc, GHashTable *data) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->reject_chat) - prpl_info->reject_chat(gc, data); + if (prpl_info->reject_chat) + prpl_info->reject_chat(gc, data); + } } void serv_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name) @@ -523,51 +510,44 @@ * Then again, something might want to use this, from outside prpl-land * to leave a chat without destroying the conversation. */ - void serv_chat_leave(PurpleConnection *gc, int id) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; prpl = purple_connection_get_prpl(gc); + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl) - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - - if(prpl_info && prpl_info->chat_leave) + if (prpl_info->chat_leave) prpl_info->chat_leave(gc, id); } void serv_chat_whisper(PurpleConnection *gc, int id, const char *who, const char *message) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->chat_whisper) - prpl_info->chat_whisper(gc, id, who, message); + if (prpl_info->chat_whisper) + prpl_info->chat_whisper(gc, id, who, message); + } } int serv_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) { - int val = -EINVAL; - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; prpl = purple_connection_get_prpl(gc); - - if(prpl) - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); + prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->chat_send) - val = prpl_info->chat_send(gc, id, message, flags); + if (prpl_info->chat_send) + return prpl_info->chat_send(gc, id, message, flags); - return val; + return -EINVAL; } /* @@ -980,18 +960,16 @@ void serv_send_file(PurpleConnection *gc, const char *who, const char *file) { - PurplePlugin *prpl = NULL; - PurplePluginProtocolInfo *prpl_info = NULL; + PurplePlugin *prpl; + PurplePluginProtocolInfo *prpl_info; - if(gc) + if (gc) { prpl = purple_connection_get_prpl(gc); - - if(prpl) prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if (prpl_info && prpl_info->send_file) { - if (!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)) { + if (prpl_info->send_file && + (!prpl_info->can_receive_file + || prpl_info->can_receive_file(gc, who))) prpl_info->send_file(gc, who, file); - } } }
--- a/libpurple/util.c Sun Sep 27 20:04:44 2009 +0000 +++ b/libpurple/util.c Mon Sep 28 18:14:06 2009 +0000 @@ -3140,7 +3140,7 @@ { PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if(prpl_info && prpl_info->normalize) + if (prpl_info->normalize) ret = prpl_info->normalize(account, str); } }
--- a/pidgin/plugins/win32/winprefs/winprefs.c Sun Sep 27 20:04:44 2009 +0000 +++ b/pidgin/plugins/win32/winprefs/winprefs.c Mon Sep 28 18:14:06 2009 +0000 @@ -101,10 +101,7 @@ blist_set_ontop(TRUE); } else { purple_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking...\n"); - if(purple_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS) - blist_set_ontop(TRUE); - else - blist_set_ontop(FALSE); + blist_set_ontop(purple_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS); } } @@ -120,10 +117,7 @@ blist_ab = NULL; } - if(purple_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS) - blist_set_ontop(TRUE); - else - blist_set_ontop(FALSE); + blist_set_ontop(purple_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS); } } @@ -210,6 +204,12 @@ } static void +winprefs_set_multiple_instances(GtkWidget *w) { + wpurple_write_reg_string(HKEY_CURRENT_USER, "Environment", "PIDGIN_MULTI_INST", + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)) ? "1" : NULL); +} + +static void winprefs_set_blist_dockable(const char *pref, PurplePrefType type, gconstpointer value, gpointer user_data) { @@ -270,34 +270,18 @@ GtkWidget *ret; GtkWidget *vbox; GtkWidget *button; - char *gtk_version = NULL; char *run_key_val; char *tmp; ret = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(ret), 12); - gtk_version = g_strdup_printf("GTK+\t%u.%u.%u\nGlib\t%u.%u.%u", - gtk_major_version, gtk_minor_version, gtk_micro_version, - glib_major_version, glib_minor_version, glib_micro_version); - - /* Display Installed GTK+ Runtime Version */ - if(gtk_version) { - GtkWidget *label; - vbox = pidgin_make_frame(ret, _("GTK+ Runtime Version")); - label = gtk_label_new(gtk_version); - gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); - gtk_widget_show(label); - g_free(gtk_version); - } - /* Autostart */ vbox = pidgin_make_frame(ret, _("Startup")); tmp = g_strdup_printf(_("_Start %s on Windows startup"), PIDGIN_NAME); button = gtk_check_button_new_with_mnemonic(tmp); g_free(tmp); gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); - if ((run_key_val = wpurple_read_reg_string(HKEY_CURRENT_USER, RUNKEY, "Pidgin")) || (run_key_val = wpurple_read_reg_string(HKEY_LOCAL_MACHINE, RUNKEY, "Pidgin"))) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); @@ -306,6 +290,15 @@ g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_autostart), NULL); gtk_widget_show(button); + button = gtk_check_button_new_with_mnemonic(_("Allow multiple instances")); + gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); + if ((run_key_val = wpurple_read_reg_string(HKEY_CURRENT_USER, "Environment", "PIDGIN_MULTI_INST"))) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); + g_free(run_key_val); + } + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_multiple_instances), NULL); + gtk_widget_show(button); + /* Buddy List */ vbox = pidgin_make_frame(ret, _("Buddy List")); pidgin_prefs_checkbox(_("_Dockable Buddy List"),
--- a/pidgin/win32/nsis/pidgin-installer.nsi Sun Sep 27 20:04:44 2009 +0000 +++ b/pidgin/win32/nsis/pidgin-installer.nsi Mon Sep 28 18:14:06 2009 +0000 @@ -1345,13 +1345,14 @@ StrCpy $LANGUAGE_SET "0" ClearErrors ${GetOptions} "$R3" "/L=" $R1 - IfErrors +3 + IfErrors +4 StrCpy $LANGUAGE $R1 StrCpy $LANGUAGE_SET "1" Goto skip_lang ; Select Language ; Display Language selection dialog + !define MUI_LANGDLL_ALWAYSSHOW !insertmacro MUI_LANGDLL_DISPLAY skip_lang:
--- a/po/sv.po Sun Sep 27 20:04:44 2009 +0000 +++ b/po/sv.po Mon Sep 28 18:14:06 2009 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Pidgin\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-09-07 18:26-0700\n" -"PO-Revision-Date: 2009-07-15 18:36+0100\n" +"POT-Creation-Date: 2009-09-24 22:37+0200\n" +"PO-Revision-Date: 2009-09-24 22:37+0100\n" "Last-Translator: Peter Hjalmarsson <xake@rymdraket.net>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -365,7 +365,7 @@ msgstr "OK" msgid "New Instant Message" -msgstr "Nytt snabbmeddelanden" +msgstr "Nytt snabbmeddelande" msgid "Please enter the username or alias of the person you would like to IM." msgstr "" @@ -636,8 +636,8 @@ msgstr[0] "Lista över %d användare:\n" msgstr[1] "Lista över %d användare:\n" -msgid "Supported debug options are: version" -msgstr "De felsökningsalternativ som stöds är: version" +msgid "Supported debug options are: plugins version" +msgstr "De felsökningsalternativ som stöds är: moduler version" msgid "No such command (in this context)." msgstr "Det finns inget sådant kommando (i denna kontext)." @@ -1300,10 +1300,10 @@ msgstr "Alltid" msgid "Only when available" -msgstr "Endast vid tillgänglig" +msgstr "Endast när \"Tillgänglig\"" msgid "Only when not available" -msgstr "Endast vid Ej tillgänglig" +msgstr "Endast när \"Ej tillgänglig\"" msgid "Volume(0-100):" msgstr "Volym(0-100):" @@ -1510,9 +1510,8 @@ "\n" "Hämtar TinyURL..." -#, fuzzy msgid "Only create TinyURL for URLs of this length or greater" -msgstr "Skapa enbart TinyURL om url:en är av denna längd eller större" +msgstr "Skapa enbart TinyURL om url:en är av denna längd eller längre" msgid "TinyURL (or other) address prefix" msgstr "TinyURL (eller annan) adressprefix" @@ -1523,9 +1522,10 @@ msgid "TinyURL plugin" msgstr "TinyURL modul" -#, fuzzy msgid "When receiving a message with URL(s), use TinyURL for easier copying" -msgstr "När du får en/flera URL/URLer, TinyURL för att lättare hantering" +msgstr "" +"När du får meddelande med en/flera URL/URLer, använd TinyURL för att lättare " +"hantering" msgid "Online" msgstr "Ansluten" @@ -1631,28 +1631,22 @@ msgid "buddy list" msgstr "kompislista" -#, fuzzy msgid "The certificate is self-signed and cannot be automatically checked." msgstr "" -"Certifikatet uppvisat av \"%s\" är självsignerat. Det kan inte kontrolleras " -"automatiskt." - -#, fuzzy +"Detta certifikatet är självsignerat och kan inte kontrolleras automatiskt." + msgid "The root certificate this one claims to be issued by is unknown." -msgstr "Rootcertifikatet som denna påstås använda är okänd för Pidgin." - -#, fuzzy +msgstr "Rootcertifikatet som denna påstås använda är okänd." + msgid "The certificate is not valid yet." -msgstr "Certifikatskedjan uppvisad för %s är inte giltig." - -#, fuzzy +msgstr "Certifikatet är inte giltigt än." + msgid "The certificate has expired and should not be considered valid." -msgstr "Certifikatskedjan uppvisad för %s är inte giltig." +msgstr "Certifikatet är för gammalt och bör inte anses giltigt." #. Translators: "domain" refers to a DNS domain (e.g. talk.google.com) -#, fuzzy msgid "The certificate presented is not issued to this domain." -msgstr "Certifikatskedjan uppvisad för %s är inte giltig." +msgstr "Certifikatet är inte utfärdat för denna domän." msgid "" "You have no database of root certificates, so this certificate cannot be " @@ -1661,17 +1655,14 @@ "Du har ingen databas över rootcertifikat, så detta certifikat kan inte bli " "verifierat." -#, fuzzy msgid "The certificate chain presented is invalid." -msgstr "Certifikatskedjan uppvisad för %s är inte giltig." - -#, fuzzy +msgstr "Certifikatskedjan som uppvisades är ogiltig." + msgid "The certificate has been revoked." -msgstr "Samtalet avslutat." - -#, fuzzy +msgstr "Certifikatet är taget tillbaka." + msgid "An unknown certificate error occurred." -msgstr "Ett okänt inloggningsfel har inträffat: %s." +msgstr "Ett okänt certifikatsfel har inträffat." msgid "(DOES NOT MATCH)" msgstr "(MATCHAR INTE)" @@ -1717,25 +1708,24 @@ msgid "_View Certificate..." msgstr "_Visa Certifikat..." -#, fuzzy, c-format +#, c-format msgid "The certificate for %s could not be validated." -msgstr "Certifikatskedjan uppvisad för %s är inte giltig." +msgstr "Certifikatet för %s kunde inte valideras." #. TODO: Probably wrong. msgid "SSL Certificate Error" msgstr "SSL Certifikatsfel" -#, fuzzy msgid "Unable to validate certificate" -msgstr "Kan inte autentisera: %s" - -#, fuzzy, c-format +msgstr "Kan inte validera certifikat." + +#, c-format msgid "" "The certificate claims to be from \"%s\" instead. This could mean that you " "are not connecting to the service you believe you are." msgstr "" -"Certifikatet uppvisat av \"%s\" påstår sig istället vara för \"%s\". Detta " -"kan betyda att du inte ansluter till den tjänst du tror du ansluter till." +"Certifikatet påstår sig vara för \"%s\" istället. Detta kan betyda att du " +"inte ansluter till den tjänst du tror du ansluter till." #. Make messages #, c-format @@ -1973,18 +1963,18 @@ msgid "File transfer complete" msgstr "Filöverföringen slutfördes" -#, fuzzy, c-format +#, c-format msgid "You cancelled the transfer of %s" msgstr "Du avbröt överföringen av %s" msgid "File transfer cancelled" msgstr "Filöverföringen avbröts" -#, fuzzy, c-format +#, c-format msgid "%s cancelled the transfer of %s" msgstr "%s avbröt överföringen av %s" -#, fuzzy, c-format +#, c-format msgid "%s cancelled the file transfer" msgstr "%s avbröt filöverföringen" @@ -2167,28 +2157,29 @@ "No codecs found. Install some GStreamer codecs found in GStreamer plugins " "packages." msgstr "" +"Hittade inga codecs. Installera några GStreamer codecs vilka finns i " +"GStreamers pluginpaket." msgid "" "No codecs left. Your codec preferences in fs-codecs.conf are too strict." msgstr "" - -#, fuzzy +"Ingen codec kvar. Dina codec-inställningar i fs-codecs.conf är för strikta." + msgid "A non-recoverable Farsight2 error has occurred." -msgstr "Ett okänt inloggningsfel har inträffat: %s." - -#, fuzzy -msgid "Conference error." -msgstr "Konferansen är stängd" - -msgid "Error with your microphone." -msgstr "" - -msgid "Error with your webcam." -msgstr "" - -#, fuzzy, c-format +msgstr "Ett okänt Farsight2-fel har inträffat." + +msgid "Conference error" +msgstr "Konferensfel" + +msgid "Error with your microphone" +msgstr "Problem med din mikrofon" + +msgid "Error with your webcam" +msgstr "Problem med din webbkamera" + +#, c-format msgid "Error creating session: %s" -msgstr "Fel vid skapandet av anslutning" +msgstr "Problem att skapa session: %s" msgid "Error creating conference." msgstr "Fel vid skapandet av konferens." @@ -2397,7 +2388,7 @@ msgstr "_Ta bort" msgid "Set Idle Time for All Accounts" -msgstr "Ange Inaktivitetstiden för alla konton" +msgstr "Ange inaktivitetstiden för alla konton" msgid "Unset Idle Time for All Idled Accounts" msgstr "Tar bort inaktivitetstiden för alla inaktiva konton" @@ -2450,14 +2441,14 @@ "kommandona." msgid "Hide Joins/Parts" -msgstr "" +msgstr "Göm gå med/lämna" #. Translators: Followed by an input request a number of people msgid "For rooms with more than this many people" -msgstr "" +msgstr "För rum med fler än detta antalet personer" msgid "If user has not spoken in this many minutes" -msgstr "" +msgstr "Om användaren inte pratat på så här många minuter" msgid "Apply hiding rules to buddies" msgstr "Verkställ döljningsregler för kompisar" @@ -3921,11 +3912,12 @@ msgid "Logo" msgstr "Logotyp" -#, fuzzy, c-format +#, c-format msgid "" "%s will no longer be able to see your status updates. Do you want to " "continue?" -msgstr "Du håller på att ta bort %s från din kompislista. Vill du fortsätta?" +msgstr "" +"%s kommer inte längre kunna se dina statusuppdateringar. Vill du fortsätta?" msgid "Cancel Presence Notification" msgstr "Avbryt närvarorapportering" @@ -4275,7 +4267,7 @@ #. if (js->protocol_options & CHANGE_PASSWORD) { msgid "Change Password..." -msgstr "Byt lösenor..." +msgstr "Byt lösenord..." #. } msgid "Search for Users..." @@ -4540,12 +4532,11 @@ "affiliate <ägare|admin|medlem|utstött|ingen>: [nick1] [nick2] ...: " "Hämta eller ange användarnas anknytning till rummet." -#, fuzzy msgid "" "role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the " "users with a role or set users' role with the room." msgstr "" -"role <moderator|deltagare|besökare|inget>: [nick1] [nick2] ...: Hämta " +"role <moderator|participant|visitor|none>: [nick1] [nick2] ...: Hämta " "eller ange användarnas roll i rummet." msgid "invite <user> [message]: Invite a user to the room." @@ -4969,7 +4960,6 @@ msgid "Not expected" msgstr "Ej väntat" -#, fuzzy msgid "Friendly name is changing too rapidly" msgstr "Smeknamn ändras för ofta" @@ -5197,7 +5187,7 @@ #, c-format msgid "" "Unable to add the buddy %s because the username is invalid. Usernames must " -"be a valid email address." +"be valid email addresses." msgstr "" "Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. " "Användarnamnet måste vara en giltig epost-adress." @@ -5536,10 +5526,10 @@ "%s har frågar efter att få se fin webbkamera, men denna förfrågan stöds inte " "än." -#, fuzzy, c-format +#, c-format msgid "%s invited you to view his/her webcam, but this is not yet supported." msgstr "" -"%s har frågar efter att få se fin webbkamera, men denna förfrågan stöds inte " +"%s har gett dig en inbjudan att se dennes webbkamera, men detta stöds inte " "än." msgid "Away From Computer" @@ -6274,9 +6264,9 @@ msgstr "Serverport" #. Note to translators: %s in this string is a URL -#, fuzzy, c-format +#, c-format msgid "Received unexpected response from %s" -msgstr "Mottog oväntat svar från" +msgstr "Mottog oväntat svar från %s" #. username connecting too frequently msgid "" @@ -6288,9 +6278,9 @@ #. Note to translators: The first %s is a URL, the second is an #. error message. -#, fuzzy, c-format +#, c-format msgid "Error requesting %s: %s" -msgstr "Fel vid efterfrågan av" +msgstr "Fel vid efterfrågan av %s: %s" msgid "AOL does not allow your screen name to authenticate here" msgstr "AOL tillåter inte ditt skärmnamn att autentisera här" @@ -7077,9 +7067,8 @@ msgid "C_onnect" msgstr "_Anslut" -#, fuzzy msgid "You closed the connection." -msgstr "Servern stängde anslutningen" +msgstr "Du stängde anslutningen." msgid "Get AIM Info" msgstr "Hämta AIM-info" @@ -7091,9 +7080,8 @@ msgid "Get Status Msg" msgstr "Hämta statusmeddelande" -#, fuzzy msgid "End Direct IM Session" -msgstr "Direktmeddelande har etablerats" +msgstr "Avsluta direkt-IM session" msgid "Direct IM" msgstr "Direktmeddelande" @@ -7925,7 +7913,7 @@ msgid "File Send" msgstr "Filsändning" -#, fuzzy, c-format +#, c-format msgid "%d cancelled the transfer of %s" msgstr "%d avbröt överföringen av %s" @@ -9455,7 +9443,7 @@ msgstr "Ignorera inbjudningar till konferenser och chatrum" msgid "Use account proxy for SSL connections" -msgstr "" +msgstr "Använd kontoproxy för SSL-anslutningar" msgid "Chat room list URL" msgstr "URL för chattrumlista" @@ -9560,26 +9548,27 @@ msgid "Ignore buddy?" msgstr "Ignorera kompis?" -#, fuzzy msgid "Invalid username or password" msgstr "Felaktigt användarnamn eller lösenord" -#, fuzzy msgid "" "Your account has been locked due to too many failed login attempts. Please " "try logging into the Yahoo! website." msgstr "" -"Kontot låst: För många inloggningsförsök. Logga in på Yahoo!s hemsida kan " -"fixa detta." +"Ditt kontot har låsts på grund av för många inloggningsförsök. Försök att " +"logga in på Yahoo!s hemsida." #, c-format msgid "Unknown error 52. Reconnecting should fix this." -msgstr "" +msgstr "Okänt fel 52. En återanslutning borde fixa detta." msgid "" "Error 1013: The username you have entered is invalid. The most common cause " "of this error is entering your email address instead of your Yahoo! ID." msgstr "" +"Fel 1013: Användarnamnet du har angivit är ogiltigt. Den vanligaste " +"anledningen till detta är att du angett din epost-adress istället flr ditt " +"Yahoo! ID." #, c-format msgid "Unknown error number %d. Logging into the Yahoo! website may fix this." @@ -9667,6 +9656,15 @@ msgid "Open Inbox" msgstr "Öppna Inkorg" +msgid "Can't send SMS. Unable to obtain mobile carrier." +msgstr "" + +msgid "Can't send SMS. Unknown mobile carrier." +msgstr "" + +msgid "Getting mobile carrier to send the SMS." +msgstr "" + #. Write a local message to this conversation showing that a request for a #. * Doodle session has been made #. @@ -9749,9 +9747,9 @@ msgid "The user's profile is empty." msgstr "Användarens profil är tom." -#, fuzzy, c-format +#, c-format msgid "%s has declined to join." -msgstr "%s har loggat in." +msgstr "%s har nekat att ansluta." msgid "Failed to join chat" msgstr "Kunde inte ansluta till chatt" @@ -10022,7 +10020,7 @@ msgstr "SSL_handskakning misslyckades" msgid "SSL peer presented an invalid certificate" -msgstr "SSL-motparten uppvisade ett ogiltig certifikat" +msgstr "SSL-motparten uppvisade ett ogiltigt certifikat" msgid "Unknown SSL error" msgstr "Okänt SSL-fel" @@ -10343,7 +10341,6 @@ msgid "Layout" msgstr "Utseende" -#, fuzzy msgid "The layout of icons, name, and status of the buddy list" msgstr "Utseendet på ikoner, namn och status i kompislistan" @@ -10399,7 +10396,6 @@ #. Note to translators: These two strings refer to the font and color #. of a buddy list buddy when it is online -#, fuzzy msgid "Online Text" msgstr "Ansluten-text" @@ -10416,11 +10412,9 @@ #. Note to translators: These two strings refer to the font and color #. of a buddy list buddy when it is offline -#, fuzzy msgid "Offline Text" msgstr "Frånkopplad-text" -#, fuzzy msgid "The text information for when a buddy is offline" msgstr "Textinformationen för när en kompis är frånkopplad" @@ -10445,7 +10439,6 @@ msgid "Message (Nick Said) Text" msgstr "Meddelande (Smeknamn nämnt) Text" -#, fuzzy msgid "" "The text information for when a chat has an unread message that mentions " "your nickname" @@ -10651,7 +10644,7 @@ msgstr "/Verktyg/_Certifikat" msgid "/Tools/Custom Smile_ys" -msgstr "/Verktyg/Egna Smile_ys" +msgstr "/Verktyg/Egna smile_ys" msgid "/Tools/Plu_gins" msgstr "/Verktyg/Insticksmodu_ler" @@ -10891,9 +10884,8 @@ msgid "_Group:" msgstr "_Grupp:" -#, fuzzy msgid "Auto_join when account connects." -msgstr "_Gå med automatiskt då kontot är anslutet." +msgstr "_Gå med automatiskt då kontot ansluter." msgid "_Remain in chat after window is closed." msgstr "Va_r kvar i chattfönster efter att det stängts." @@ -11009,9 +11001,8 @@ msgid "/Conversation/New Instant _Message..." msgstr "/Konversation/Nytt snabb_meddelande..." -#, fuzzy msgid "/Conversation/Join a _Chat..." -msgstr "/Konversation/_Bjud in..." +msgstr "/Konversation/Anslut till en _chatt..." msgid "/Conversation/_Find..." msgstr "/Konversation/_Sök..." @@ -11403,7 +11394,7 @@ msgstr "Estniska" msgid "Basque" -msgstr "" +msgstr "Baskiska" msgid "Persian" msgstr "Persiska" @@ -11612,6 +11603,12 @@ "primary language is <b>English</b>. You are welcome to post in another " "language, but the responses may be less helpful.<br/><br/>" msgstr "" +"<font size=\"4\">Hjälp från andra Pidgin-användare:</font> <a href=\"mailto:" +"support@pidgin.im\">support@pidgin.im</a><br/>Detta är en <b>publik</b> " +"epostlista! (<a href=\"http://pidgin.im/pipermail/support/\">arkiv</a>)<br/" +">Vi kan inte hjälpa dig med 3:djepartsmoduler och protokoll!<br/>Listans " +"huvudspråk är <b>Engelska</b>. Du är välkommen att skriva i ett annat " +"språk, men svaren kan vara mindre hjälpsamma.<br/><br/>" #, c-format msgid "" @@ -12173,43 +12170,48 @@ "Usage: %s [OPTION]...\n" "\n" msgstr "" +"Användning: %s [FLAGGOR]...\n" +"\n" msgid "DIR" -msgstr "" +msgstr "KATALOG" msgid "use DIR for config files" -msgstr "" +msgstr "Använd KATALOG för konfigurationsfiler" msgid "print debugging messages to stdout" -msgstr "" +msgstr "skriv ut felsökningsmeddelanden till stdout" msgid "force online, regardless of network status" -msgstr "" +msgstr "tvinga ansluten, oavsätt nätverkets status" msgid "display this help and exit" -msgstr "" - -#, fuzzy +msgstr "visa denna hjältexten och avsluta" + msgid "allow multiple instances" -msgstr "Tillåt många samtidiga inloggningar" +msgstr "tillåt flera instanser" msgid "don't automatically login" -msgstr "" +msgstr "anslut inte automatiskt" msgid "NAME" -msgstr "" +msgstr "NAMN" msgid "" "enable specified account(s) (optional argument NAME\n" " specifies account(s) to use, separated by commas.\n" " Without this only the first account will be enabled)." msgstr "" +"aktivera valda konton (det ej obligatoriska argumentet NAMN\n" +" specificerar en kommaseparerad lista av konton.\n" +" Utan denna lista kommer enbart det första kontot " +"aktiveras)." msgid "X display to use" -msgstr "" +msgstr "X displayen att använda" msgid "display the current version and exit" -msgstr "" +msgstr "Visar nuvarande version och avslutar" #, c-format msgid "" @@ -12263,7 +12265,7 @@ msgstr "%s önskar påbörja en videosession med dig." msgid "Incoming Call" -msgstr "" +msgstr "Inkommande samtal" msgid "_Pause" msgstr "_Pausa" @@ -12481,6 +12483,21 @@ msgid "Unknown.... Please report this!" msgstr "Okänd... Var snäll och rapportera detta!" +msgid "(Custom)" +msgstr "(Egen)" + +msgid "(Default)" +msgstr "(Förvald)" + +msgid "The default Pidgin sound theme" +msgstr "Pidgins förvalda ljudtema" + +msgid "The default Pidgin buddy list theme" +msgstr "Pidgins förvalda tema för kompislistan" + +msgid "The default Pidgin status icon theme" +msgstr "Pidgins förvalda statusikon-tema" + msgid "Theme failed to unpack." msgstr "Temat kunde inte packas upp." @@ -12511,7 +12528,7 @@ #. Buddy List Themes msgid "Buddy List Theme" -msgstr "Tema för Kompislista" +msgstr "Tema för kompislista" #. System Tray msgid "System Tray Icon" @@ -12624,9 +12641,8 @@ msgid "Cannot start browser configuration program." msgstr "Kan inte starta konfigurationsprogrammet för webbläsaren" -#, fuzzy msgid "Disabled" -msgstr "A_vaktivera" +msgstr "Avaktiverad" #, c-format msgid "Use _automatically detected IP address: %s" @@ -12657,9 +12673,8 @@ msgid "Relay Server (TURN)" msgstr "Återsändningsserver (TURN)" -#, fuzzy msgid "_TURN server:" -msgstr "ST_UN-server:" +msgstr "_TURN-server:" msgid "Proxy Server & Browser" msgstr "Proxyserver & Webbläsare" @@ -12674,7 +12689,7 @@ "Proxy & Browser preferences are configured\n" "in GNOME Preferences" msgstr "" -"Proxy- & Webbläsar-inställningarna konfigureras i\n" +"Proxy- & webbläsar-inställningarna konfigureras i\n" "GNOMEs inställningar" msgid "Configure _Proxy" @@ -12839,7 +12854,7 @@ msgstr "_Rapportera inaktivitetstid:" msgid "Based on keyboard or mouse use" -msgstr "Baserat på tangetbord eller musanvändning" +msgstr "Baserat på tangentbord eller musanvändning" msgid "_Auto-reply:" msgstr "_Automatiskt svar:" @@ -13038,7 +13053,7 @@ msgstr "Genvägstext" msgid "Custom Smiley Manager" -msgstr "Hanterare för egna Smileys" +msgstr "Hanterare för egna smileys" msgid "Select Buddy Icon" msgstr "Välj kompisikon" @@ -13233,7 +13248,7 @@ msgstr "Liten" msgid "Smaller versions of the default smilies" -msgstr "Mindre versioner av de förvadla smiliesarna." +msgstr "Mindre versioner av de förvalda smiliesarna." msgid "Response Probability:" msgstr "Trolighet för svar:" @@ -14215,35 +14230,29 @@ "Denna modul tillåter användaren att personifiera konversationernas och " "loggarnas tidsstämpelformat." -#, fuzzy msgid "Audio" -msgstr "Auto" - -#, fuzzy +msgstr "Ljud" + msgid "Video" -msgstr " Video" +msgstr "Video" msgid "Output" -msgstr "" - -#, fuzzy +msgstr "Utmatning" + msgid "_Plugin" -msgstr "Insticksmoduler" - -#, fuzzy +msgstr "_Insticksmoduler" + msgid "_Device" -msgstr "Enhet" +msgstr "_Enhet" msgid "Input" -msgstr "" - -#, fuzzy +msgstr "Inmatning" + msgid "P_lugin" -msgstr "Insticksmoduler" - -#, fuzzy +msgstr "Insticksmodu_ler" + msgid "D_evice" -msgstr "Enhet" +msgstr "_Enhet" #. *< magic #. *< major version @@ -14254,18 +14263,18 @@ #. *< dependencies #. *< priority #. *< id -#, fuzzy msgid "Voice/Video Settings" -msgstr "Ändra inställningar" +msgstr "Röst/videoinställningar" #. *< name #. *< version msgid "Configure your microphone and webcam." -msgstr "" +msgstr "Konfigurerar din mikrofon och kamera." #. *< summary msgid "Configure microphone and webcam settings for voice/video calls." msgstr "" +"Konfigurera mikrofon och webbkamera-inställningar för röst/videosamtal." msgid "Opacity:" msgstr "Ogenomskinlighet:" @@ -14323,9 +14332,6 @@ "\n" "* Observera: Denna insticksmodul kräver Win2000 eller senare." -msgid "GTK+ Runtime Version" -msgstr "GTK+ Runtime-version" - #. Autostart msgid "Startup" msgstr "Uppstart" @@ -14334,6 +14340,9 @@ msgid "_Start %s on Windows startup" msgstr "_Starta %s när Windows startar" +msgid "Allow multiple instances" +msgstr "Tillåt flera instanser" + msgid "_Dockable Buddy List" msgstr "_Dockningsbar kompislista" @@ -14394,11 +14403,14 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter." +#~ msgid "GTK+ Runtime Version" +#~ msgstr "GTK+ Runtime-version" + #~ msgid "Calling ... " #~ msgstr "Ringer..." #~ msgid "Invalid certificate chain" -#~ msgstr "Ogiltigt certifikatskedja" +#~ msgstr "Ogiltig certifikatskedja" #~ msgid "" #~ "The certificate chain presented by %s does not have a valid digital "