summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYRIGHT1
-rw-r--r--finch/gntui.c2
-rw-r--r--libpurple/plugins/ssl/ssl-nss.c32
-rw-r--r--libpurple/protocols/bonjour/bonjour.c4
-rw-r--r--libpurple/protocols/jabber/auth.c35
-rw-r--r--libpurple/protocols/jabber/chat.c26
-rw-r--r--libpurple/protocols/jabber/si.c6
-rw-r--r--libpurple/protocols/myspace/myspace.c17
-rw-r--r--libpurple/protocols/oscar/oft.c13
-rw-r--r--libpurple/protocols/oscar/peer.c19
-rw-r--r--libpurple/protocols/simple/simple.c1
-rw-r--r--libpurple/protocols/yahoo/yahoo.c2
-rw-r--r--pidgin/gtkconv.c37
-rw-r--r--pidgin/gtkimhtml.c2
-rw-r--r--pidgin/gtkprefs.c6
-rw-r--r--pidgin/gtksound.c16
-rw-r--r--pidgin/win32/nsis/pidgin-installer.nsi16
-rw-r--r--po/af.po2
-rw-r--r--po/am.po2
-rw-r--r--po/ar.po2
-rw-r--r--po/az.po2
-rw-r--r--po/bg.po2
-rw-r--r--po/bn.po2
-rw-r--r--po/bs.po2
-rw-r--r--po/ca.po2
-rw-r--r--po/ca@valencia.po2
-rw-r--r--po/cs.po2
-rw-r--r--po/da.po2
-rw-r--r--po/de.po2
-rw-r--r--po/dz.po2
-rw-r--r--po/el.po2
-rw-r--r--po/en_AU.po4
-rw-r--r--po/en_CA.po4
-rw-r--r--po/en_GB.po4
-rw-r--r--po/eo.po2
-rw-r--r--po/es.po2
-rw-r--r--po/et.po2
-rw-r--r--po/eu.po2
-rw-r--r--po/fa.po2
-rw-r--r--po/fi.po2
-rw-r--r--po/fr.po2
-rw-r--r--po/gl.po2
-rw-r--r--po/gu.po2
-rw-r--r--po/he.po2
-rw-r--r--po/hi.po2
-rw-r--r--po/hu.po2
-rw-r--r--[-rwxr-xr-x]po/id.po2
-rw-r--r--po/it.po2
-rw-r--r--po/ja.po2
-rw-r--r--po/ka.po2
-rw-r--r--po/kn.po2
-rw-r--r--po/ko.po2
-rw-r--r--po/ku.po2
-rw-r--r--po/lt.po2
-rw-r--r--po/mk.po2
-rw-r--r--po/my_MM.po4
-rw-r--r--po/nb.po2
-rw-r--r--[-rwxr-xr-x]po/ne.po2
-rw-r--r--po/nl.po2
-rw-r--r--po/nn.po2
-rw-r--r--po/pa.po2
-rw-r--r--po/pl.po2
-rw-r--r--[-rwxr-xr-x]po/ps.po2
-rw-r--r--po/pt.po2
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/ro.po2
-rw-r--r--po/ru.po2
-rw-r--r--po/sk.po2
-rw-r--r--po/sl.po2
-rw-r--r--po/sq.po2
-rw-r--r--po/sr.po2
-rw-r--r--po/sr@Latn.po2
-rw-r--r--po/sv.po2
-rw-r--r--po/ta.po2
-rw-r--r--po/te.po2
-rw-r--r--po/th.po2
-rw-r--r--po/tr.po2
-rw-r--r--po/uk.po2
-rw-r--r--po/vi.po2
-rw-r--r--po/xh.po2
-rw-r--r--po/zh_CN.po2
-rw-r--r--[-rwxr-xr-x]po/zh_HK.po2
-rw-r--r--po/zh_TW.po2
83 files changed, 244 insertions, 131 deletions
diff --git a/COPYRIGHT b/COPYRIGHT
index cb262b89e2..68415b863b 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -339,7 +339,6 @@ Dossy Shiobara
Michael Shkutkov
Ettore Simone
John Silvestri
-Ankit Singla
Craig Slusher
Alex Smith
Brad Smith
diff --git a/finch/gntui.c b/finch/gntui.c
index 266815cfda..88732a39f1 100644
--- a/finch/gntui.c
+++ b/finch/gntui.c
@@ -91,8 +91,6 @@ void gnt_ui_init()
gnt_register_action(_("Statuses"), finch_savedstatus_show_all);
#ifdef STANDALONE
-
- finch_plugins_save_loaded();
}
void gnt_ui_uninit()
diff --git a/libpurple/plugins/ssl/ssl-nss.c b/libpurple/plugins/ssl/ssl-nss.c
index 26e79cd60e..f4636c4e34 100644
--- a/libpurple/plugins/ssl/ssl-nss.c
+++ b/libpurple/plugins/ssl/ssl-nss.c
@@ -107,6 +107,20 @@ set_errno(int code)
}
}
+static gchar *get_error_text()
+{
+ PRInt32 len = PR_GetErrorTextLength();
+ gchar *ret = NULL;
+
+ if (len > 0) {
+ ret = g_malloc(len + 1);
+ len = PR_GetErrorText(ret);
+ ret[len] = '\0';
+ }
+
+ return ret;
+}
+
static void
ssl_nss_init_nss(void)
{
@@ -220,11 +234,14 @@ ssl_nss_handshake_cb(gpointer data, int fd, PurpleInputCondition cond)
* It seems to work because it'll eventually use the cached value
*/
if(SSL_ForceHandshake(nss_data->in) != SECSuccess) {
+ gchar *error_txt;
set_errno(PR_GetError());
if (errno == EAGAIN || errno == EWOULDBLOCK)
return;
- purple_debug_error("nss", "Handshake failed %d\n", PR_GetError());
+ error_txt = get_error_text();
+ purple_debug_error("nss", "Handshake failed %s (%d)\n", error_txt ? error_txt : "", PR_GetError());
+ g_free(error_txt);
if (gsc->error_cb != NULL)
gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED, gsc->connect_cb_data);
@@ -265,8 +282,11 @@ ssl_nss_connect(PurpleSslConnection *gsc)
socket_opt.option = PR_SockOpt_Nonblocking;
socket_opt.value.non_blocking = PR_TRUE;
- if (PR_SetSocketOption(nss_data->fd, &socket_opt) != PR_SUCCESS)
- purple_debug_warning("nss", "unable to set socket into non-blocking mode: %d\n", PR_GetError());
+ if (PR_SetSocketOption(nss_data->fd, &socket_opt) != PR_SUCCESS) {
+ gchar *error_txt = get_error_text();
+ purple_debug_warning("nss", "unable to set socket into non-blocking mode: %s (%d)\n", error_txt ? error_txt : "", PR_GetError());
+ g_free(error_txt);
+ }
nss_data->in = SSL_ImportFD(NULL, nss_data->fd);
@@ -365,10 +385,12 @@ static GList *
ssl_nss_peer_certs(PurpleSslConnection *gsc)
{
PurpleSslNssData *nss_data = PURPLE_SSL_NSS_DATA(gsc);
- GList *chain = NULL;
CERTCertificate *cert;
+/*
+ GList *chain = NULL;
void *pinArg;
SECStatus status;
+*/
/* TODO: this is a blind guess */
cert = SSL_PeerCertificate(nss_data->fd);
@@ -487,6 +509,7 @@ x509_destroy_certificate(PurpleCertificate * crt)
g_free(crt);
}
+#if 0
/** Determines whether one certificate has been issued and signed by another
*
* @param crt Certificate to check the signature of
@@ -501,6 +524,7 @@ x509_certificate_signed_by(PurpleCertificate * crt,
{
return FALSE;
}
+#endif
static GByteArray *
x509_sha1sum(PurpleCertificate *crt)
diff --git a/libpurple/protocols/bonjour/bonjour.c b/libpurple/protocols/bonjour/bonjour.c
index 66b8c362ad..4ad1002798 100644
--- a/libpurple/protocols/bonjour/bonjour.c
+++ b/libpurple/protocols/bonjour/bonjour.c
@@ -592,8 +592,8 @@ initialize_default_account_values()
fullname = info->pw_gecos;
else if ((info != NULL) && (info->pw_name != NULL) && (info->pw_name[0] != '\0'))
fullname = info->pw_name;
- else if (((fullname = getlogin()) != NULL) && (fullname[0] != '\0'))
- ;
+ else if (((fullname = getlogin()) != NULL) && (fullname[0] == '\0'))
+ fullname = NULL;
#else
/* The Win32 username lookup functions are synchronous so we do it in a thread */
g_thread_create(_win32_name_lookup_thread, NULL, FALSE, NULL);
diff --git a/libpurple/protocols/jabber/auth.c b/libpurple/protocols/jabber/auth.c
index 447bbaca35..25ab4ee1d9 100644
--- a/libpurple/protocols/jabber/auth.c
+++ b/libpurple/protocols/jabber/auth.c
@@ -203,8 +203,15 @@ static gboolean auth_pass_generic(JabberStream *js, PurpleRequestFields *fields)
return TRUE;
}
-static void auth_pass_cb(JabberStream *js, PurpleRequestFields *fields)
+static void auth_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields)
{
+ JabberStream *js;
+
+ /* The password prompt dialog doesn't get disposed if the account disconnects */
+ if (!PURPLE_CONNECTION_IS_VALID(conn))
+ return;
+
+ js = conn->proto_data;
if (!auth_pass_generic(js, fields))
return;
@@ -217,8 +224,16 @@ static void auth_pass_cb(JabberStream *js, PurpleRequestFields *fields)
}
static void
-auth_old_pass_cb(JabberStream *js, PurpleRequestFields *fields)
+auth_old_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields)
{
+ JabberStream *js;
+
+ /* The password prompt dialog doesn't get disposed if the account disconnects */
+ if (!PURPLE_CONNECTION_IS_VALID(conn))
+ return;
+
+ js = conn->proto_data;
+
if (!auth_pass_generic(js, fields))
return;
@@ -228,9 +243,17 @@ auth_old_pass_cb(JabberStream *js, PurpleRequestFields *fields)
static void
-auth_no_pass_cb(JabberStream *js, PurpleRequestFields *fields)
+auth_no_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields)
{
- purple_connection_error(js->gc, _("Password is required to sign on."));
+ JabberStream *js;
+
+ /* The password prompt dialog doesn't get disposed if the account disconnects */
+ if (!PURPLE_CONNECTION_IS_VALID(conn))
+ return;
+
+ js = conn->proto_data;
+
+ purple_connection_error(conn, _("Password is required to sign on."));
}
static void jabber_auth_start_cyrus(JabberStream *js)
@@ -283,7 +306,7 @@ static void jabber_auth_start_cyrus(JabberStream *js)
*/
if (!purple_account_get_password(js->gc->account)) {
- purple_account_request_password(js->gc->account, G_CALLBACK(auth_pass_cb), G_CALLBACK(auth_no_pass_cb), js);
+ purple_account_request_password(js->gc->account, G_CALLBACK(auth_pass_cb), G_CALLBACK(auth_no_pass_cb), js->gc);
return;
/* If we've got a password, but aren't sending
@@ -597,7 +620,7 @@ void jabber_auth_start_old(JabberStream *js)
*/
if (!purple_account_get_password(js->gc->account)) {
- purple_account_request_password(js->gc->account, G_CALLBACK(auth_old_pass_cb), G_CALLBACK(auth_no_pass_cb), js);
+ purple_account_request_password(js->gc->account, G_CALLBACK(auth_old_pass_cb), G_CALLBACK(auth_no_pass_cb), js->gc);
return;
}
#endif
diff --git a/libpurple/protocols/jabber/chat.c b/libpurple/protocols/jabber/chat.c
index 26c18a42bd..737cc3837f 100644
--- a/libpurple/protocols/jabber/chat.c
+++ b/libpurple/protocols/jabber/chat.c
@@ -833,12 +833,18 @@ void jabber_chat_remove_handle(JabberChat *chat, const char *handle)
gboolean jabber_chat_ban_user(JabberChat *chat, const char *who, const char *why)
{
- JabberIq *iq;
- JabberChatMember *jcm = g_hash_table_lookup(chat->members, who);
+ JabberChatMember *jcm;
+ const char *jid;
char *to;
+ JabberIq *iq;
xmlnode *query, *item, *reason;
- if(!jcm || !jcm->jid)
+ jcm = g_hash_table_lookup(chat->members, who);
+ if (jcm && jcm->jid)
+ jid = jcm->jid;
+ else if (g_utf8_strchr(who, -1, '@') != NULL)
+ jid = who;
+ else
return FALSE;
iq = jabber_iq_new_query(chat->js, JABBER_IQ_SET,
@@ -850,7 +856,7 @@ gboolean jabber_chat_ban_user(JabberChat *chat, const char *who, const char *why
query = xmlnode_get_child(iq->node, "query");
item = xmlnode_new_child(query, "item");
- xmlnode_set_attrib(item, "jid", jcm->jid);
+ xmlnode_set_attrib(item, "jid", jid);
xmlnode_set_attrib(item, "affiliation", "outcast");
if(why) {
reason = xmlnode_new_child(item, "reason");
@@ -864,14 +870,18 @@ gboolean jabber_chat_ban_user(JabberChat *chat, const char *who, const char *why
gboolean jabber_chat_affiliate_user(JabberChat *chat, const char *who, const char *affiliation)
{
+ JabberChatMember *jcm;
+ const char *jid;
char *to;
JabberIq *iq;
xmlnode *query, *item;
- JabberChatMember *jcm;
jcm = g_hash_table_lookup(chat->members, who);
-
- if (!jcm || !jcm->jid)
+ if (jcm && jcm->jid)
+ jid = jcm->jid;
+ else if (g_utf8_strchr(who, -1, '@') != NULL)
+ jid = who;
+ else
return FALSE;
iq = jabber_iq_new_query(chat->js, JABBER_IQ_SET,
@@ -883,7 +893,7 @@ gboolean jabber_chat_affiliate_user(JabberChat *chat, const char *who, const cha
query = xmlnode_get_child(iq->node, "query");
item = xmlnode_new_child(query, "item");
- xmlnode_set_attrib(item, "jid", jcm->jid);
+ xmlnode_set_attrib(item, "jid", jid);
xmlnode_set_attrib(item, "affiliation", affiliation);
jabber_iq_send(iq);
diff --git a/libpurple/protocols/jabber/si.c b/libpurple/protocols/jabber/si.c
index c2514f85f5..84710d7bd1 100644
--- a/libpurple/protocols/jabber/si.c
+++ b/libpurple/protocols/jabber/si.c
@@ -708,6 +708,10 @@ static void jabber_si_xfer_send_request(PurpleXfer *xfer)
jabber_iq_set_callback(iq, jabber_si_xfer_send_method_cb, xfer);
+ /* Store the IQ id so that we can cancel the callback */
+ g_free(jsx->iq_id);
+ jsx->iq_id = g_strdup(iq->id);
+
jabber_iq_send(iq);
}
@@ -722,6 +726,8 @@ static void jabber_si_xfer_free(PurpleXfer *xfer)
purple_proxy_connect_cancel(jsx->connect_data);
if (jsx->listen_data != NULL)
purple_network_listen_cancel(jsx->listen_data);
+ if (jsx->iq_id != NULL)
+ jabber_iq_remove_callback_by_id(js, jsx->iq_id);
g_free(jsx->stream_id);
g_free(jsx->iq_id);
diff --git a/libpurple/protocols/myspace/myspace.c b/libpurple/protocols/myspace/myspace.c
index 855b2061dd..840d91019c 100644
--- a/libpurple/protocols/myspace/myspace.c
+++ b/libpurple/protocols/myspace/myspace.c
@@ -1543,6 +1543,12 @@ msim_we_are_logged_on(MsimSession *session, MsimMessage *msg)
if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
purple_debug_info("msim_we_are_logged_on", "TODO: pick username\n");
+ /* No username is set. */
+ purple_notify_error(session->account,
+ _("No username set"),
+ _("Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile.username and choose a username and try to login again."), NULL);
+ purple_connection_error(session->gc, _("No username set"));
+ return FALSE;
}
body = msim_msg_new(
@@ -1864,9 +1870,14 @@ msim_incoming_status(MsimSession *session, MsimMessage *msg)
purple_debug_info("msim", "msim_status: found buddy %s\n", username);
}
- /* The status headline is plaintext, but libpurple treats it as HTML,
- * so escape any HTML characters to their entity equivalents. */
- status_headline_escaped = g_markup_escape_text(status_headline, strlen(status_headline));
+ if (status_headline) {
+ /* The status headline is plaintext, but libpurple treats it as HTML,
+ * so escape any HTML characters to their entity equivalents. */
+ status_headline_escaped = g_markup_escape_text(status_headline, strlen(status_headline));
+ } else {
+ status_headline_escaped = NULL;
+ }
+
g_free(status_headline);
if (user->headline)
diff --git a/libpurple/protocols/oscar/oft.c b/libpurple/protocols/oscar/oft.c
index d1c62a6034..cb6e4dbc69 100644
--- a/libpurple/protocols/oscar/oft.c
+++ b/libpurple/protocols/oscar/oft.c
@@ -266,7 +266,7 @@ peer_oft_send(PeerConnection *conn, OftFrame *frame)
size_t length;
ByteStream bs;
- length = 192 + MAX(64, frame->name_length + 1);
+ length = 192 + frame->name_length;
byte_stream_new(&bs, length);
byte_stream_putraw(&bs, conn->magic, 4);
byte_stream_put16(&bs, length);
@@ -300,7 +300,7 @@ peer_oft_send(PeerConnection *conn, OftFrame *frame)
* The name can be more than 64 characters, but if it is less than
* 64 characters it is padded with NULLs.
*/
- byte_stream_putraw(&bs, frame->name, MAX(64, frame->name_length + 1));
+ byte_stream_putraw(&bs, frame->name, frame->name_length);
peer_connection_send(conn, &bs);
@@ -340,8 +340,7 @@ static void
peer_oft_send_done(PeerConnection *conn)
{
conn->xferdata.type = PEER_TYPE_DONE;
- conn->xferdata.filesleft = 0;
- conn->xferdata.partsleft = 0;
+ conn->xferdata.rfrcsum = 0xffff0000;
conn->xferdata.nrecvd = purple_xfer_get_bytes_sent(conn->xfer);
peer_oft_send(conn, &conn->xferdata);
}
@@ -677,12 +676,12 @@ peer_oft_sendcb_init(PurpleXfer *xfer)
conn->xferdata.rfrcsum = 0xffff0000;
conn->xferdata.rfcsum = 0xffff0000;
conn->xferdata.recvcsum = 0xffff0000;
- strncpy((gchar *)conn->xferdata.idstring, "OFT_Windows ICBMFT V1.1 32", 31);
+ strncpy((gchar *)conn->xferdata.idstring, "Cool FileXfer", 31);
conn->xferdata.modtime = 0;
conn->xferdata.cretime = 0;
xfer->filename = g_path_get_basename(xfer->local_filename);
- conn->xferdata.name = (guchar *)g_strdup(xfer->filename);
- conn->xferdata.name_length = strlen(xfer->filename);
+ conn->xferdata.name_length = MAX(64, strlen(xfer->filename) + 1);
+ conn->xferdata.name = (guchar *)g_strndup(xfer->filename, conn->xferdata.name_length - 1);
peer_oft_checksum_file(conn, xfer,
peer_oft_checksum_calculated_cb, G_MAXUINT32);
diff --git a/libpurple/protocols/oscar/peer.c b/libpurple/protocols/oscar/peer.c
index 42c4c95194..a41e337183 100644
--- a/libpurple/protocols/oscar/peer.c
+++ b/libpurple/protocols/oscar/peer.c
@@ -416,6 +416,25 @@ send_cb(gpointer data, gint source, PurpleInputCondition cond)
{
purple_input_remove(conn->watcher_outgoing);
conn->watcher_outgoing = 0;
+ /*
+ * The buffer is currently empty, so reset the current input
+ * and output positions to the start of the buffer. We do
+ * this so that the next chunk of data that we put into the
+ * buffer can be read back out of the buffer in one fell swoop.
+ * Otherwise it gets fragmented and we have to read from the
+ * second half of the buffer than go back and read the rest of
+ * the chunk from the first half.
+ *
+ * We're using TCP, which is a stream based protocol, so this
+ * isn't supposed to matter. However, experience has shown
+ * that at least the proxy file transfer code in AIM 6.1.41.2
+ * requires that the entire OFT frame arrive all at once. If
+ * the frame is fragmented then AIM freaks out and aborts the
+ * file transfer. Somebody should teach those guys how to
+ * write good TCP code.
+ */
+ conn->buffer_outgoing->inptr = conn->buffer_outgoing->buffer;
+ conn->buffer_outgoing->outptr = conn->buffer_outgoing->buffer;
return;
}
diff --git a/libpurple/protocols/simple/simple.c b/libpurple/protocols/simple/simple.c
index 12d52940de..3cb0c24ef1 100644
--- a/libpurple/protocols/simple/simple.c
+++ b/libpurple/protocols/simple/simple.c
@@ -1066,6 +1066,7 @@ static void process_incoming_notify(struct simple_account_data *sip, struct sipm
if(!pidf) {
purple_debug_info("simple", "process_incoming_notify: no parseable pidf\n");
g_free(from);
+ send_sip_response(sip->gc, msg, 200, "OK", NULL);
return;
}
diff --git a/libpurple/protocols/yahoo/yahoo.c b/libpurple/protocols/yahoo/yahoo.c
index 8fe606a2be..d7e354d042 100644
--- a/libpurple/protocols/yahoo/yahoo.c
+++ b/libpurple/protocols/yahoo/yahoo.c
@@ -3505,7 +3505,7 @@ static void yahoo_show_act_id(PurplePluginAction *action)
static void yahoo_show_chat_goto(PurplePluginAction *action)
{
PurpleConnection *gc = (PurpleConnection *) action->context;
- purple_request_input(gc, NULL, _("Join who in chat?"), NULL,
+ purple_request_input(gc, NULL, _("Join whom in chat?"), NULL,
"", FALSE, FALSE, NULL,
_("OK"), G_CALLBACK(yahoo_chat_goto),
_("Cancel"), NULL,
diff --git a/pidgin/gtkconv.c b/pidgin/gtkconv.c
index 6533ad6e0f..23f09620b1 100644
--- a/pidgin/gtkconv.c
+++ b/pidgin/gtkconv.c
@@ -929,6 +929,7 @@ savelog_writefile_cb(void *user_data, const char *filename)
PurpleConversation *conv = (PurpleConversation *)user_data;
FILE *fp;
const char *name;
+ char **lines;
gchar *text;
if ((fp = g_fopen(filename, "w+")) == NULL) {
@@ -940,10 +941,12 @@ savelog_writefile_cb(void *user_data, const char *filename)
fprintf(fp, "<html>\n<head><title>%s</title></head>\n<body>", name);
fprintf(fp, _("<h1>Conversation with %s</h1>\n"), name);
- text = gtk_imhtml_get_markup(
+ lines = gtk_imhtml_get_markup_lines(
GTK_IMHTML(PIDGIN_CONVERSATION(conv)->imhtml));
+ text = g_strjoinv("<br>\n", lines);
fprintf(fp, "%s", text);
g_free(text);
+ g_strfreev(lines);
fprintf(fp, "\n</body>\n</html>\n");
fclose(fp);
@@ -1301,6 +1304,7 @@ menu_add_remove_cb(gpointer data, guint action, GtkWidget *widget)
add_remove_cb(NULL, PIDGIN_CONVERSATION(conv));
}
+#if 0
static void
menu_hide_conv_cb(gpointer data, guint action, GtkWidget *widget)
{
@@ -1311,6 +1315,7 @@ menu_hide_conv_cb(gpointer data, guint action, GtkWidget *widget)
"conversation-hiding", gtkconv);
purple_conversation_set_ui_ops(conv, NULL);
}
+#endif
static void
menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
@@ -2903,8 +2908,6 @@ static GtkItemFactoryEntry menu_items[] =
{ "/Conversation/sep4", NULL, NULL, 0, "<Separator>", NULL },
- { N_("/Conversation/_Hide"), NULL, menu_hide_conv_cb, 0,
- "<Item>", NULL},
{ N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
"<StockItem>", GTK_STOCK_CLOSE },
@@ -4497,12 +4500,12 @@ static gboolean
pidgin_conv_motion_cb (GtkWidget *infopane, GdkEventMotion *event, PidginConversation *gtkconv)
{
int delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay");
-
+
pidgin_blist_tooltip_destroy();
if (delay == 0)
return FALSE;
- if (tooltip.timeout != 0)
+ if (tooltip.timeout != 0)
g_source_remove(tooltip.timeout);
tooltip.timeout = g_timeout_add(delay, (GSourceFunc)pidgin_conv_tooltip_timeout, gtkconv);
@@ -4516,7 +4519,6 @@ pidgin_userlist_tooltip_timeout(PidginConversation *gtkconv)
PurplePluginProtocolInfo *prpl_info;
PurpleConversation *conv = gtkconv->active_conv;
PidginChatPane *gtkchat;
- PurpleConnection *gc;
PurpleBlistNode *node = NULL;
PurpleAccount *account;
GtkTreePath *path;
@@ -4528,8 +4530,11 @@ pidgin_userlist_tooltip_timeout(PidginConversation *gtkconv)
gtkchat = gtkconv->u.chat;
account = purple_conversation_get_account(conv);
- gc = account->gc;
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
+
+ if (account->gc == NULL)
+ return FALSE;
+
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
@@ -4543,7 +4548,7 @@ pidgin_userlist_tooltip_timeout(PidginConversation *gtkconv)
gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1);
node = (PurpleBlistNode*)(purple_find_buddy(conv->account, who));
- if (node && prpl_info && (prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME))
+ if (node && prpl_info && (prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME))
pidgin_blist_draw_tooltip(node, gtkconv->infopane);
g_free(who);
@@ -4553,20 +4558,26 @@ pidgin_userlist_tooltip_timeout(PidginConversation *gtkconv)
return FALSE;
}
-static gboolean
+static gboolean
pidgin_userlist_motion_cb (GtkWidget *w, GdkEventMotion *event, PidginConversation *gtkconv)
{
PurpleConversation *conv;
+ PurpleAccount *account;
int delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay");
pidgin_blist_tooltip_destroy();
if (delay == 0)
return FALSE;
- if (tooltip.timeout != 0)
+ if (tooltip.timeout != 0)
g_source_remove(tooltip.timeout);
-
+ tooltip.timeout = 0;
+
conv = gtkconv->active_conv;
+ account = purple_conversation_get_account(conv);
+
+ if (account->gc == NULL)
+ return FALSE;
tooltip.timeout = g_timeout_add(delay, (GSourceFunc)pidgin_userlist_tooltip_timeout, gtkconv);
tooltip.gtkconv = gtkconv;
@@ -4606,7 +4617,7 @@ setup_common_pane(PidginConversation *gtkconv)
gtk_widget_show(gtkconv->infopane_hbox);
gtk_widget_add_events(event_box,
GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
- g_signal_connect(G_OBJECT(event_box), "button_press_event",
+ g_signal_connect(G_OBJECT(event_box), "button-press-event",
G_CALLBACK(infopane_press_cb), gtkconv);
g_signal_connect(G_OBJECT(event_box), "motion-notify-event",
diff --git a/pidgin/gtkimhtml.c b/pidgin/gtkimhtml.c
index c9c8a2bc00..76615710d6 100644
--- a/pidgin/gtkimhtml.c
+++ b/pidgin/gtkimhtml.c
@@ -4890,7 +4890,7 @@ char *gtk_imhtml_get_markup_range(GtkIMHtml *imhtml, GtkTextIter *start, GtkText
} else if (c == '"') {
str = g_string_append(str, "&quot;");
} else if (c == '\n') {
- str = g_string_append(str, "<br>\n");
+ str = g_string_append(str, "<br>");
} else {
str = g_string_append_unichar(str, c);
}
diff --git a/pidgin/gtkprefs.c b/pidgin/gtkprefs.c
index 5a858fd289..5837bdee20 100644
--- a/pidgin/gtkprefs.c
+++ b/pidgin/gtkprefs.c
@@ -1510,6 +1510,7 @@ sound_changed2_cb(const char *name, PurplePrefType type,
gtk_widget_set_sensitive(vbox, strcmp(method, "none"));
}
+#endif /* !_WIN32 */
#ifdef USE_GSTREAMER
static void
@@ -1524,7 +1525,6 @@ sound_changed3_cb(const char *name, PurplePrefType type,
!strcmp(method, "esd"));
}
#endif /* USE_GSTREAMER */
-#endif /* !_WIN32 */
static void
@@ -1693,9 +1693,11 @@ sound_page()
int j;
const char *file;
char *pref;
+#if !defined _WIN32 || defined USE_GSTREAMER
+ GtkWidget *label;
+#endif
#ifndef _WIN32
GtkWidget *dd;
- GtkWidget *label;
GtkWidget *entry;
const char *cmd;
#endif
diff --git a/pidgin/gtksound.c b/pidgin/gtksound.c
index e662fe9acc..58d62c9ec0 100644
--- a/pidgin/gtksound.c
+++ b/pidgin/gtksound.c
@@ -446,6 +446,8 @@ pidgin_sound_play_file(const char *filename)
g_free(command);
return;
}
+#endif /* _WIN32 */
+
#ifdef USE_GSTREAMER
if (gst_init_failed) /* Perhaps do gdk_beep instead? */
return;
@@ -460,7 +462,9 @@ pidgin_sound_play_file(const char *filename)
purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
return;
}
- } else if (!strcmp(method, "esd")) {
+ }
+#ifndef _WIN32
+ else if (!strcmp(method, "esd")) {
sink = gst_element_factory_make("esdsink", "sink");
if (!sink) {
purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
@@ -472,7 +476,9 @@ pidgin_sound_play_file(const char *filename)
purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
return;
}
- } else {
+ }
+#endif
+ else {
purple_debug_error("sound", "Unknown sound method '%s'\n", method);
return;
}
@@ -498,9 +504,9 @@ pidgin_sound_play_file(const char *filename)
g_free(uri);
#else /* USE_GSTREAMER */
+
+#ifndef _WIN32
gdk_beep();
- return;
-#endif /* USE_GSTREAMER */
#else /* _WIN32 */
purple_debug_info("sound", "Playing %s\n", filename);
@@ -518,6 +524,8 @@ pidgin_sound_play_file(const char *filename)
g_free(l_filename);
}
#endif /* _WIN32 */
+
+#endif /* USE_GSTREAMER */
}
static void
diff --git a/pidgin/win32/nsis/pidgin-installer.nsi b/pidgin/win32/nsis/pidgin-installer.nsi
index b488b72f4e..f903662779 100644
--- a/pidgin/win32/nsis/pidgin-installer.nsi
+++ b/pidgin/win32/nsis/pidgin-installer.nsi
@@ -694,6 +694,7 @@ Section Uninstall
Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem"
Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem"
+ Delete "$INSTDIR\ca-certs\Verisign_Class3_Extended_Validation_CA.pem"
Delete "$INSTDIR\ca-certs\Verisign_Class3_Primary_CA.pem"
Delete "$INSTDIR\ca-certs\Verisign_RSA_Secure_Server_CA.pem"
RMDir "$INSTDIR\ca-certs"
@@ -704,7 +705,7 @@ Section Uninstall
Delete "$INSTDIR\plugins\buddynote.dll"
Delete "$INSTDIR\plugins\convcolors.dll"
Delete "$INSTDIR\plugins\extplacement.dll"
- Delete "$INSTDIR\plugins\pidginrc.dll"
+ Delete "$INSTDIR\plugins\gtkbuddynote.dll"
Delete "$INSTDIR\plugins\history.dll"
Delete "$INSTDIR\plugins\iconaway.dll"
Delete "$INSTDIR\plugins\idle.dll"
@@ -731,6 +732,7 @@ Section Uninstall
Delete "$INSTDIR\plugins\notify.dll"
Delete "$INSTDIR\plugins\offlinemsg.dll"
Delete "$INSTDIR\plugins\perl.dll"
+ Delete "$INSTDIR\plugins\pidginrc.dll"
Delete "$INSTDIR\plugins\psychic.dll"
Delete "$INSTDIR\plugins\relnot.dll"
Delete "$INSTDIR\plugins\spellchk.dll"
@@ -744,12 +746,12 @@ Section Uninstall
Delete "$INSTDIR\plugins\win2ktrans.dll"
Delete "$INSTDIR\plugins\winprefs.dll"
RMDir "$INSTDIR\plugins"
- Delete "$INSTDIR\sounds\pidgin\alert.wav"
- Delete "$INSTDIR\sounds\pidgin\login.wav"
- Delete "$INSTDIR\sounds\pidgin\logout.wav"
- Delete "$INSTDIR\sounds\pidgin\receive.wav"
- Delete "$INSTDIR\sounds\pidgin\send.wav"
- RMDir "$INSTDIR\sounds\pidgin"
+ Delete "$INSTDIR\sounds\purple\alert.wav"
+ Delete "$INSTDIR\sounds\purple\login.wav"
+ Delete "$INSTDIR\sounds\purple\logout.wav"
+ Delete "$INSTDIR\sounds\purple\receive.wav"
+ Delete "$INSTDIR\sounds\purple\send.wav"
+ RMDir "$INSTDIR\sounds\purple"
RMDir "$INSTDIR\sounds"
Delete "$INSTDIR\freebl3.dll"
Delete "$INSTDIR\idletrack.dll"
diff --git a/po/af.po b/po/af.po
index eca114557c..0d3da75f44 100644
--- a/po/af.po
+++ b/po/af.po
@@ -11331,7 +11331,7 @@ msgid "Activate which ID?"
msgstr "Aktiveer watter ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Sluit wie by geselsie aan?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/am.po b/po/am.po
index f0db234680..e68b76f4ff 100644
--- a/po/am.po
+++ b/po/am.po
@@ -10501,7 +10501,7 @@ msgstr ""
#: src/protocols/yahoo/yahoo.c:2972
#, fuzzy
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "ውሪን አገጣጥም"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/ar.po b/po/ar.po
index 6d8c149b4d..af61ea25bf 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -13172,7 +13172,7 @@ msgid "Active which ID?"
msgstr "وضعية رقم الانترنت النشطة"
#: ../src/protocols/yahoo/yahoo.c:3094
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3104
diff --git a/po/az.po b/po/az.po
index 8706d1c7d2..10258941c5 100644
--- a/po/az.po
+++ b/po/az.po
@@ -10340,7 +10340,7 @@ msgid "Active which ID?"
msgstr "Hansı ID fəallaşdırılsın?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Söhbəttə kimə qoşulsun?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/bg.po b/po/bg.po
index addcf081d3..fac4b337b7 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -14520,7 +14520,7 @@ msgid "Active which ID?"
msgstr "Активиране на коя идентификация?"
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Присъединяване към кого в чата?"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/bn.po b/po/bn.po
index 1a44078277..58c39e42e5 100644
--- a/po/bn.po
+++ b/po/bn.po
@@ -14284,7 +14284,7 @@ msgid "Active which ID?"
msgstr "কোন আইডি সক্রিয় করা হবে?"
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "কার সাথে আড্ডা?"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/bs.po b/po/bs.po
index 78974a3f3d..a16cb3bc20 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -10646,7 +10646,7 @@ msgid "Active which ID?"
msgstr "Aktivirati koji ID?"
#: src/protocols/yahoo/yahoo.c:2947
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kome se želite pridružiti na chat?"
#: src/protocols/yahoo/yahoo.c:2957
diff --git a/po/ca.po b/po/ca.po
index aa2cc054c3..2350438594 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -10594,7 +10594,7 @@ msgid "Active which ID?"
msgstr "Quin ID voleu activar?"
#: ../libpurple/protocols/yahoo/yahoo.c:3234
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "A qui us voleu unir al xat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3244
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
index 3cba53cc2c..9a69329fb3 100644
--- a/po/ca@valencia.po
+++ b/po/ca@valencia.po
@@ -11263,7 +11263,7 @@ msgid "Active which ID?"
msgstr "Quin ID voleu activar?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "A qui vos voleu unir al xat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/cs.po b/po/cs.po
index 857c273bbf..76a6b1e67c 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11905,7 +11905,7 @@ msgid "Active which ID?"
msgstr "Které ID aktivovat?"
#: ../src/protocols/yahoo/yahoo.c:3069
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Připojit koho k chatu?"
#: ../src/protocols/yahoo/yahoo.c:3079
diff --git a/po/da.po b/po/da.po
index a0d602cf3e..90e395b089 100644
--- a/po/da.po
+++ b/po/da.po
@@ -14318,7 +14318,7 @@ msgid "Active which ID?"
msgstr "Aktivér hvilket ID?"
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Deltag med hvem i chat?"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/de.po b/po/de.po
index 0efd32c4eb..77ed9c0ec5 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11443,7 +11443,7 @@ msgid "Activate which ID?"
msgstr "Welche ID aktivieren?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Wen wollen Sie zum Chat einladen?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/dz.po b/po/dz.po
index 3586ce04be..5887358b04 100644
--- a/po/dz.po
+++ b/po/dz.po
@@ -13959,7 +13959,7 @@ msgid "Active which ID?"
msgstr "ཨའི་ཌི་ག་འདི་ཤུགས་ལྡན་སྨོ?"
#: ../libgaim/protocols/yahoo/yahoo.c:3220
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "ག་ ཁ་སླབ་ཀྱི་གྲངས་སུ་འཛུལ་ཡི?"
#: ../libgaim/protocols/yahoo/yahoo.c:3230
diff --git a/po/el.po b/po/el.po
index 623df96599..3ab44006a9 100644
--- a/po/el.po
+++ b/po/el.po
@@ -10628,7 +10628,7 @@ msgid "Active which ID?"
msgstr "Ενεργοποίηση ποιανού ID;"
#: ../libpurple/protocols/yahoo/yahoo.c:3239
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Ποιανού συμμετοχή στη συζήτηση;"
#: ../libpurple/protocols/yahoo/yahoo.c:3251
diff --git a/po/en_AU.po b/po/en_AU.po
index 7908fa2dc8..40851afd78 100644
--- a/po/en_AU.po
+++ b/po/en_AU.po
@@ -10735,8 +10735,8 @@ msgid "Active which ID?"
msgstr "Active which ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
-msgstr "Join who in chat?"
+msgid "Join whom in chat?"
+msgstr "Join whom in chat?"
#: src/protocols/yahoo/yahoo.c:2982
msgid "Activate ID..."
diff --git a/po/en_CA.po b/po/en_CA.po
index e5645d68a9..935115e24e 100644
--- a/po/en_CA.po
+++ b/po/en_CA.po
@@ -10715,8 +10715,8 @@ msgid "Active which ID?"
msgstr "Active which ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
-msgstr "Join who in chat?"
+msgid "Join whom in chat?"
+msgstr "Join whom in chat?"
#: src/protocols/yahoo/yahoo.c:2982
msgid "Activate ID..."
diff --git a/po/en_GB.po b/po/en_GB.po
index 3614fc0f37..0d1492231c 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -10576,8 +10576,8 @@ msgid "Active which ID?"
msgstr "Active which ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3241
-msgid "Join who in chat?"
-msgstr "Join who in chat?"
+msgid "Join whom in chat?"
+msgstr "Join whom in chat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3253
msgid "Activate ID..."
diff --git a/po/eo.po b/po/eo.po
index a52db65a94..a941cab9f2 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -10243,7 +10243,7 @@ msgid "Active which ID?"
msgstr "Ŝaltu kiun ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3234
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kiun kuniĝi en babilejo?"
#: ../libpurple/protocols/yahoo/yahoo.c:3244
diff --git a/po/es.po b/po/es.po
index 4aca09cea6..dcf7e8e072 100644
--- a/po/es.po
+++ b/po/es.po
@@ -11319,7 +11319,7 @@ msgid "Active which ID?"
msgstr "¿Qué ID quiere activar?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "¿Juntarse con quién en un chat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/et.po b/po/et.po
index 819d2147f9..2183902855 100644
--- a/po/et.po
+++ b/po/et.po
@@ -11029,7 +11029,7 @@ msgid "Activate which ID?"
msgstr "Milline ID aktiveerida?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kellega ühineda jututoas?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/eu.po b/po/eu.po
index 88f5db9653..6bfcdc8f7d 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -12276,7 +12276,7 @@ msgid "Active which ID?"
msgstr "Zein ID aktibatu?"
#: ../src/protocols/yahoo/yahoo.c:3070
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Norekin elkartu nahi duzu berriketan?"
#: ../src/protocols/yahoo/yahoo.c:3080
diff --git a/po/fa.po b/po/fa.po
index 6d883b4982..32cddfbac8 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -10510,7 +10510,7 @@ msgid "Active which ID?"
msgstr "فعال‌سازی کدام شناسه؟"
#: ../libpurple/protocols/yahoo/yahoo.c:3234
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "پیوستن به کی در گپ؟"
#: ../libpurple/protocols/yahoo/yahoo.c:3244
diff --git a/po/fi.po b/po/fi.po
index 4226996798..ac15c3b463 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11327,7 +11327,7 @@ msgid "Activate which ID?"
msgstr "Mikä tunnus (ID) aktivoidaan?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kenen seuraan liitytään ryhmäkeskustelussa?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/fr.po b/po/fr.po
index a7ee5996ef..113f6495ea 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -11413,7 +11413,7 @@ msgid "Activate which ID?"
msgstr "Activer quelle identité ?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Qui joindre dans une discussion ?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/gl.po b/po/gl.po
index d94645d956..3933e34a4a 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -11270,7 +11270,7 @@ msgid "Activate which ID?"
msgstr "Que ID activar?"
#: ../libpurple/protocols/yahoo/yahoo.c:3406
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "A quen quere unir á conversa?"
#: ../libpurple/protocols/yahoo/yahoo.c:3418
diff --git a/po/gu.po b/po/gu.po
index 53b7c62863..eb9019cbfc 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -10469,7 +10469,7 @@ msgid "Active which ID?"
msgstr "કયું ID સક્રિય કરવું છે?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "જોડાવ કે કોણ સંવાદમાં છે?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/he.po b/po/he.po
index 2377409fc3..7619e136d9 100644
--- a/po/he.po
+++ b/po/he.po
@@ -11164,7 +11164,7 @@ msgid "Activate which ID?"
msgstr "איזה ID להפעיל?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "להצטרף למי בצ'אט?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/hi.po b/po/hi.po
index ff272c43f4..d34db1742f 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -10987,7 +10987,7 @@ msgid "Active which ID?"
msgstr "कोनसा आइ डी क्रियांवित करें?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "किससे संवाद करें ?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/hu.po b/po/hu.po
index 7e0f2d3ae9..b7fc3560a0 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -10433,7 +10433,7 @@ msgid "Active which ID?"
msgstr "Melyik azonosítót aktiválja?"
#: ../libpurple/protocols/yahoo/yahoo.c:3239
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kihez csatlakozik a csevegésben?"
#: ../libpurple/protocols/yahoo/yahoo.c:3251
diff --git a/po/id.po b/po/id.po
index 8dbe8ddeda..c26c12d56b 100755..100644
--- a/po/id.po
+++ b/po/id.po
@@ -14281,7 +14281,7 @@ msgid "Active which ID?"
msgstr "Aktifkan ID yang mana?"
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Gabung siapa dalam percakapan?"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/it.po b/po/it.po
index d5e1847f4b..e8269fc6c5 100644
--- a/po/it.po
+++ b/po/it.po
@@ -11163,7 +11163,7 @@ msgid "Active which ID?"
msgstr "Quale ID vuoi attivare?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "A chi vuoi unirti nella chat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/ja.po b/po/ja.po
index b7c018970a..d2be5aecf4 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -11162,7 +11162,7 @@ msgid "Active which ID?"
msgstr "どの ID を有効化しますか?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "どのチャットへ参加しますか?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/ka.po b/po/ka.po
index 8481525888..fa27a9d0d2 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -11603,7 +11603,7 @@ msgid "Active which ID?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3017
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3027
diff --git a/po/kn.po b/po/kn.po
index c1195f4be6..15c4205895 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -13709,7 +13709,7 @@ msgid "Active which ID?"
msgstr ""
#: ../libgaim/protocols/yahoo/yahoo.c:3174
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "ಮಾತುಕತೆಯಲ್ಲಿ ಯಾರೊಡನೆ ಸೇರಬೇಕು?"
#: ../libgaim/protocols/yahoo/yahoo.c:3184
diff --git a/po/ko.po b/po/ko.po
index 3b54bcf9ab..c9603e1612 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -14341,7 +14341,7 @@ msgid "Active which ID?"
msgstr "어느 ID 를 활성화 하시겠습니까?"
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "어느 대화에 참가하시겠습니까?"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/ku.po b/po/ku.po
index 324bb7994e..c314dae13c 100644
--- a/po/ku.po
+++ b/po/ku.po
@@ -11671,7 +11671,7 @@ msgid "Active which ID?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3070
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3080
diff --git a/po/lt.po b/po/lt.po
index e26ca539af..2213c9bf14 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -11555,7 +11555,7 @@ msgid "Activate which ID?"
msgstr "Kurį ID aktyvuoti?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Prisijungti prie ko į pokalbį?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/mk.po b/po/mk.po
index bfcbb8925a..e10abfad45 100644
--- a/po/mk.po
+++ b/po/mk.po
@@ -11347,7 +11347,7 @@ msgid "Activate which ID?"
msgstr "Кој ID. да го активирам?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Кого да приклучам во разговорот?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/my_MM.po b/po/my_MM.po
index 8775f9a7e9..877ecdf9dd 100644
--- a/po/my_MM.po
+++ b/po/my_MM.po
@@ -10730,8 +10730,8 @@ msgid "Active which ID?"
msgstr "Active which ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
-msgstr "Join who in chat?"
+msgid "Join whom in chat?"
+msgstr "Join whom in chat?"
#: src/protocols/yahoo/yahoo.c:2982
msgid "Activate ID..."
diff --git a/po/nb.po b/po/nb.po
index 9ddb0ece67..2609260ff8 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -10857,7 +10857,7 @@ msgid "Active which ID?"
msgstr "Aktiver hvilken ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Bli med hvem i samtalegruppe?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/ne.po b/po/ne.po
index 51c35113fd..14927e3ba6 100755..100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -10498,7 +10498,7 @@ msgid "Active which ID?"
msgstr "कुन ID सक्रिय गर्ने?"
#: src/protocols/yahoo/yahoo.c:3028
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "जडान गर्नुहोस् को कुराकानीमा छ?"
#: src/protocols/yahoo/yahoo.c:3038
diff --git a/po/nl.po b/po/nl.po
index 86d792d0c4..5ceb0c1085 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -13683,7 +13683,7 @@ msgid "Active which ID?"
msgstr "Welk ID activeren?"
#: ../libgaim/protocols/yahoo/yahoo.c:3158
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Deelnemen aan wiens chat?"
#: ../libgaim/protocols/yahoo/yahoo.c:3168
diff --git a/po/nn.po b/po/nn.po
index 4957d7cb04..6fc31f749a 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -11191,7 +11191,7 @@ msgid "Activate which ID?"
msgstr "Kva ID skal takast i bruk?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kven skal bli med i praterommet?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/pa.po b/po/pa.po
index 924d8ce3aa..9f365dea68 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -10385,7 +10385,7 @@ msgid "Active which ID?"
msgstr "ਕਿਹੜਾ ID ਸਰਗਰਮ ਕਰਨਾ ਹੈ?"
#: ../libpurple/protocols/yahoo/yahoo.c:3239
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਕੌਣ ਸ਼ਾਮਿਲ ?"
#: ../libpurple/protocols/yahoo/yahoo.c:3251
diff --git a/po/pl.po b/po/pl.po
index cdeec403dd..b06884f273 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -11665,7 +11665,7 @@ msgid "Activate which ID?"
msgstr "Które ID aktywować?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kogo przyłączyć do konferencji?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/ps.po b/po/ps.po
index 4f85bdaab1..edce574cd1 100755..100644
--- a/po/ps.po
+++ b/po/ps.po
@@ -13801,7 +13801,7 @@ msgid "Active which ID?"
msgstr ""
#: ../libgaim/protocols/yahoo/yahoo.c:3214
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "چه سره ګپ شپ کول غواړی؟"
#: ../libgaim/protocols/yahoo/yahoo.c:3224
diff --git a/po/pt.po b/po/pt.po
index 88b6376c8b..921405dd48 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -12084,7 +12084,7 @@ msgid "Active which ID?"
msgstr "Activar qual ID?"
#: ../src/protocols/yahoo/yahoo.c:3070
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Juntar a quem no chat?"
#: ../src/protocols/yahoo/yahoo.c:3080
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 704d506eec..f4c0376675 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -11386,7 +11386,7 @@ msgid "Activate which ID?"
msgstr "Ativar qual ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Juntar-se a quem no bate-papo?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/ro.po b/po/ro.po
index 5fc4270a14..4a4200af4c 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -11251,7 +11251,7 @@ msgid "Active which ID?"
msgstr "Ce identitate doriţi să activaţi?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Cui doriţi să vă alăturaţi în chat?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/ru.po b/po/ru.po
index 9c026140cd..18bf3dd512 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -11217,7 +11217,7 @@ msgid "Activate which ID?"
msgstr "Какой ID активировать?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "К кому присоединиться в чате?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/sk.po b/po/sk.po
index b032074f94..ca59dc0162 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -11360,7 +11360,7 @@ msgid "Activate which ID?"
msgstr "Aktivovať s ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3406
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "S kým sa spojiť v chate?"
#: ../libpurple/protocols/yahoo/yahoo.c:3418
diff --git a/po/sl.po b/po/sl.po
index c0a50d827a..b4fab82d2f 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -11254,7 +11254,7 @@ msgid "Activate which ID?"
msgstr "Kateri ID naj bo aktiviran?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Komu se želite pridružiti v pomenku?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/sq.po b/po/sq.po
index d649c3bfed..e8da5504b2 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -10811,7 +10811,7 @@ msgid "Active which ID?"
msgstr "Veprues cili ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "T'i bashkohem kujt në fjalosje?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/sr.po b/po/sr.po
index 0a15ed3330..0f8e526566 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -10533,7 +10533,7 @@ msgid "Active which ID?"
msgstr "Активирај ИД (који)?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Прикључи се коме разговору?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
index f36c91b723..8866be7935 100644
--- a/po/sr@Latn.po
+++ b/po/sr@Latn.po
@@ -10770,7 +10770,7 @@ msgid "Active which ID?"
msgstr "Aktiviraj ID (koji)?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Priključi se kome razgovoru?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/sv.po b/po/sv.po
index b065c2bc10..a318687afb 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -11233,7 +11233,7 @@ msgid "Activate which ID?"
msgstr "Vilket ID ska aktiveras?"
#: ../libpurple/protocols/yahoo/yahoo.c:3345
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Anslut vem till chatten?"
#: ../libpurple/protocols/yahoo/yahoo.c:3357
diff --git a/po/ta.po b/po/ta.po
index 50e0ad73c2..269756a947 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -11877,7 +11877,7 @@ msgid "Active which ID?"
msgstr "எந்த முகப்பை செயல்படுத்த?"
#: ../src/protocols/yahoo/yahoo.c:3070
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "எந்த அரட்டையில் இருப்பவருடன் சேர ?"
#: ../src/protocols/yahoo/yahoo.c:3080
diff --git a/po/te.po b/po/te.po
index dd14e4f76b..20d1620a71 100644
--- a/po/te.po
+++ b/po/te.po
@@ -10983,7 +10983,7 @@ msgid "Active which ID?"
msgstr "ఏ IDని యాక్టివ్ చేద్దాం?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "ఎవరితో మాట్లాడుదాం ?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/th.po b/po/th.po
index eaed5b1b80..f453787984 100644
--- a/po/th.po
+++ b/po/th.po
@@ -11710,7 +11710,7 @@ msgid "Active which ID?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3070
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr ""
#: ../src/protocols/yahoo/yahoo.c:3080
diff --git a/po/tr.po b/po/tr.po
index 03c91593a2..cb8702686c 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -11001,7 +11001,7 @@ msgid "Active which ID?"
msgstr "Hangi ID aktifleştirilecek?"
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Kullanıcıyla sohbet et..."
#: ../libpurple/protocols/yahoo/yahoo.c:3268
diff --git a/po/uk.po b/po/uk.po
index c6b00d086c..b16cf202cf 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -10786,7 +10786,7 @@ msgid "Active which ID?"
msgstr "Активувати який ID?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "До кого приєднатись у розмові?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/vi.po b/po/vi.po
index 9d9bc81c6a..ae05fdc69a 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -10824,7 +10824,7 @@ msgid "Active which ID?"
msgstr "Kích hoạt ID nào ?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Tham gia với ai trong Chat?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/xh.po b/po/xh.po
index b8d2dfa702..5d29c26d45 100644
--- a/po/xh.po
+++ b/po/xh.po
@@ -10832,7 +10832,7 @@ msgid "Active which ID?"
msgstr "Sesiphi Isazisi esisebenzayo?"
#: src/protocols/yahoo/yahoo.c:2972
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "Ngenela incoko?"
#: src/protocols/yahoo/yahoo.c:2982
diff --git a/po/zh_CN.po b/po/zh_CN.po
index bc1a7d2ab4..29f1f8ac32 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -10329,7 +10329,7 @@ msgid "Active which ID?"
msgstr "激活哪个 ID?"
#: ../libpurple/protocols/yahoo/yahoo.c:3234
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "将谁加入聊天?"
#: ../libpurple/protocols/yahoo/yahoo.c:3244
diff --git a/po/zh_HK.po b/po/zh_HK.po
index bc0c531eb0..d5daa1364b 100755..100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -10839,7 +10839,7 @@ msgstr "啟動哪一個 ID?"
# NOTE #gaim 的 Vann 及 LSchiere 解:如果選取了的好友目前處於一個聊天,便加入該個聊天
# NOTE Yahoo 的「Chat」正式譯文為「聯誼園地」
#: ../libpurple/protocols/yahoo/yahoo.c:3239
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "加入哪個好友目前所在的聊天室?"
#: ../libpurple/protocols/yahoo/yahoo.c:3251
diff --git a/po/zh_TW.po b/po/zh_TW.po
index d96f866f6d..2f2e8ade65 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -11426,7 +11426,7 @@ msgstr "啟動哪一個 ID?"
# NOTE #gaim 的 Vann 及 LSchiere 解:如果選取了的好友目前處於一個聊天,便加入該個聊天
# NOTE Yahoo 的「Chat」正式譯文為「聯誼園地」
#: ../libpurple/protocols/yahoo/yahoo.c:3256
-msgid "Join who in chat?"
+msgid "Join whom in chat?"
msgstr "加入哪個好友目前所在的聊天室?"
#: ../libpurple/protocols/yahoo/yahoo.c:3268