Mercurial > pidgin.yaz
changeset 27909:0a6f702bf9dc
propagate from branch 'im.pidgin.pidgin' (head cfca82f1fee3fa6401caf10cafe80caa073cc9d9)
to branch 'im.pidgin.pidgin.yaz' (head 3ba85543cf7137396fcc72f16cf7a3b9d6be531d)
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Thu, 27 Nov 2008 02:23:57 +0000 |
parents | 770f2f8a2c91 (current diff) e24f5640fa54 (diff) |
children | a063901a5499 |
files | autogen.sh libpurple/protocols/jabber/message.c libpurple/protocols/msn/switchboard.c |
diffstat | 11 files changed, 914 insertions(+), 620 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.am Mon Nov 24 08:34:20 2008 +0000 +++ b/Makefile.am Thu Nov 27 02:23:57 2008 +0000 @@ -59,7 +59,7 @@ # Ensure we're working from a tag... test x`mtn automate select t:v$(PACKAGE_VERSION)` = x`mtn automate get_base_revision_id` # ... and have no changes in the working copy. - test x`mtn diff | grep -v '^#'` = x + test "x`mtn diff | grep -v '^#'`" = x release: version-check distcheck packages
--- a/autogen.sh Mon Nov 24 08:34:20 2008 +0000 +++ b/autogen.sh Thu Nov 27 02:23:57 2008 +0000 @@ -66,7 +66,7 @@ CMD=$1 printf "%s" "checking for ${CMD}... " - BIN=`which ${CMD} 2> /dev/null` + BIN=`which ${CMD} 2>/dev/null` if [ x"${BIN}" = x"" ] ; then echo "not found."
--- a/finch/gntblist.c Mon Nov 24 08:34:20 2008 +0000 +++ b/finch/gntblist.c Thu Nov 27 02:23:57 2008 +0000 @@ -2207,6 +2207,7 @@ { PurpleSavedStatus *current; const char *message, *newmessage; + char *escnewmessage; PurpleStatusPrimitive prim, newprim; StatusBoxItem *item; @@ -2216,6 +2217,7 @@ newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext)); item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status)); + escnewmessage = newmessage ? g_markup_escape_text(newmessage, -1) : NULL; switch (item->type) { case STATUS_PRIMITIVE: @@ -2228,16 +2230,16 @@ goto end; /* 'New' or 'Saved' is selected, but this should never happen. */ } - if (newprim != prim || ((message && !newmessage) || - (!message && newmessage) || - (message && newmessage && g_utf8_collate(message, newmessage) != 0))) + if (newprim != prim || ((message && !escnewmessage) || + (!message && escnewmessage) || + (message && escnewmessage && g_utf8_collate(message, escnewmessage) != 0))) { - PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, newmessage); + PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, escnewmessage); /* Holy Crap! That's a LAWNG function name */ if (status == NULL) { status = purple_savedstatus_new(NULL, newprim); - purple_savedstatus_set_message(status, newmessage); + purple_savedstatus_set_message(status, escnewmessage); } purple_savedstatus_activate(status); @@ -2245,6 +2247,7 @@ gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree); end: + g_free(escnewmessage); if (ggblist->typing) g_source_remove(ggblist->typing); ggblist->typing = 0;
--- a/libpurple/protocols/jabber/message.c Mon Nov 24 08:34:20 2008 +0000 +++ b/libpurple/protocols/jabber/message.c Thu Nov 27 02:23:57 2008 +0000 @@ -919,19 +919,15 @@ return FALSE; } - jb = jabber_buddy_find(js, who, FALSE); - if (!jb) { - purple_debug_error("jabber", - "jabber_conv_support_custom smileys: could not find buddy\n"); - return FALSE; - } - - - switch (purple_conversation_get_type(conv)) { /* for the time being, we will not support custom smileys in MUCs */ case PURPLE_CONV_TYPE_IM: - return jabber_buddy_has_capability(jb, XEP_0231_NAMESPACE); + jb = jabber_buddy_find(js, who, FALSE); + if (jb) { + return jabber_buddy_has_capability(jb, XEP_0231_NAMESPACE); + } else { + return FALSE; + } break; default: return FALSE;
--- a/libpurple/protocols/msn/soap.c Mon Nov 24 08:34:20 2008 +0000 +++ b/libpurple/protocols/msn/soap.c Thu Nov 27 02:23:57 2008 +0000 @@ -1,6 +1,6 @@ /** * @file soap.c - * C file for SOAP connection related process + * Functions relating to SOAP connections. * * purple * @@ -56,6 +56,7 @@ gboolean connected; guint event_handle; + guint run_timer; GString *buf; gsize handled_len; gsize body_len; @@ -69,22 +70,99 @@ MsnSoapRequest *current_request; } MsnSoapConnection; -static void msn_soap_connection_destroy_foreach_cb(gpointer item, gpointer data); static gboolean msn_soap_connection_run(gpointer data); -static MsnSoapConnection *msn_soap_connection_new(MsnSession *session, - const char *host); -static void msn_soap_connection_handle_next(MsnSoapConnection *conn); -static void msn_soap_connection_destroy(MsnSoapConnection *conn); +static MsnSoapConnection * +msn_soap_connection_new(MsnSession *session, const char *host) +{ + MsnSoapConnection *conn = g_new0(MsnSoapConnection, 1); + conn->session = session; + conn->host = g_strdup(host); + conn->queue = g_queue_new(); + return conn; +} + +static void +msn_soap_message_destroy(MsnSoapMessage *message) +{ + g_slist_foreach(message->headers, (GFunc)g_free, NULL); + g_slist_free(message->headers); + g_free(message->action); + if (message->xml) + xmlnode_free(message->xml); + g_free(message); +} + +static void +msn_soap_request_destroy(MsnSoapRequest *req, gboolean keep_message) +{ + g_free(req->path); + if (!keep_message) + msn_soap_message_destroy(req->message); + g_free(req); +} + +static void +msn_soap_connection_sanitize(MsnSoapConnection *conn, gboolean disconnect) +{ + if (conn->event_handle) { + purple_input_remove(conn->event_handle); + conn->event_handle = 0; + } + + if (conn->run_timer) { + purple_timeout_remove(conn->run_timer); + conn->run_timer = 0; + } -static void msn_soap_message_send_internal(MsnSession *session, MsnSoapMessage *message, - const char *host, const char *path, gboolean secure, - MsnSoapCallback cb, gpointer cb_data, gboolean first); + if (conn->message) { + msn_soap_message_destroy(conn->message); + conn->message = NULL; + } + + if (conn->buf) { + g_string_free(conn->buf, TRUE); + conn->buf = NULL; + } + + if (conn->ssl && (disconnect || conn->close_when_done)) { + purple_ssl_close(conn->ssl); + conn->ssl = NULL; + } + + if (conn->current_request) { + msn_soap_request_destroy(conn->current_request, FALSE); + conn->current_request = NULL; + } +} -static void msn_soap_request_destroy(MsnSoapRequest *req, gboolean keep_message); -static void msn_soap_connection_sanitize(MsnSoapConnection *conn, gboolean disconnect); -static gboolean msn_soap_write_cb_internal(gpointer data, gint fd, PurpleInputCondition cond, gboolean initial); -static void msn_soap_process(MsnSoapConnection *conn); +static void +msn_soap_connection_destroy_foreach_cb(gpointer item, gpointer data) +{ + MsnSoapRequest *req = item; + + if (req->cb) + req->cb(req->message, NULL, req->cb_data); + + msn_soap_request_destroy(req, FALSE); +} + +static void +msn_soap_connection_destroy(MsnSoapConnection *conn) +{ + if (conn->current_request) { + MsnSoapRequest *req = conn->current_request; + conn->current_request = NULL; + msn_soap_connection_destroy_foreach_cb(req, conn); + } + + msn_soap_connection_sanitize(conn, TRUE); + g_queue_foreach(conn->queue, msn_soap_connection_destroy_foreach_cb, conn); + g_queue_free(conn->queue); + + g_free(conn->host); + g_free(conn); +} static gboolean msn_soap_cleanup_each(gpointer key, gpointer value, gpointer data) @@ -112,13 +190,12 @@ g_hash_table_foreach_remove(sess->soap_table, msn_soap_cleanup_each, &t); - if (g_hash_table_size(sess->soap_table) == 0) { - purple_timeout_remove(sess->soap_cleanup_handle); - sess->soap_cleanup_handle = 0; - } + if (g_hash_table_size(sess->soap_table) != 0) + return TRUE; } - return TRUE; + sess->soap_cleanup_handle = 0; + return FALSE; } static MsnSoapConnection * @@ -147,38 +224,54 @@ return conn; } -static MsnSoapConnection * -msn_soap_connection_new(MsnSession *session, const char *host) +static void +msn_soap_connection_handle_next(MsnSoapConnection *conn) { - MsnSoapConnection *conn = g_new0(MsnSoapConnection, 1); - conn->session = session; - conn->host = g_strdup(host); - conn->queue = g_queue_new(); - return conn; + msn_soap_connection_sanitize(conn, FALSE); + + conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, conn); + + if (conn->current_request) { + MsnSoapRequest *req = conn->current_request; + conn->current_request = NULL; + msn_soap_connection_destroy_foreach_cb(req, conn); + } } static void -msn_soap_connected_cb(gpointer data, PurpleSslConnection *ssl, - PurpleInputCondition cond) +msn_soap_message_send_internal(MsnSession *session, MsnSoapMessage *message, + const char *host, const char *path, gboolean secure, + MsnSoapCallback cb, gpointer cb_data, gboolean first) { - MsnSoapConnection *conn = data; + MsnSoapConnection *conn = msn_soap_get_connection(session, host); + MsnSoapRequest *req = g_new0(MsnSoapRequest, 1); - conn->connected = TRUE; + req->path = g_strdup(path); + req->message = message; + req->secure = secure; + req->cb = cb; + req->cb_data = cb_data; - if (conn->event_handle == 0) - conn->event_handle = purple_timeout_add(0, msn_soap_connection_run, conn); + if (first) { + g_queue_push_head(conn->queue, req); + } else { + g_queue_push_tail(conn->queue, req); + } + + if (conn->run_timer == 0) + conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, + conn); } -static void -msn_soap_error_cb(PurpleSslConnection *ssl, PurpleSslErrorType error, - gpointer data) +void +msn_soap_message_send(MsnSession *session, MsnSoapMessage *message, + const char *host, const char *path, gboolean secure, + MsnSoapCallback cb, gpointer cb_data) { - MsnSoapConnection *conn = data; + g_return_if_fail(message != NULL); - /* sslconn already frees the connection in case of error */ - conn->ssl = NULL; - - g_hash_table_remove(conn->session->soap_table, conn->host); + msn_soap_message_send_internal(session, message, host, path, secure, + cb, cb_data, FALSE); } static gboolean @@ -259,65 +352,17 @@ } static void -msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond) +msn_soap_message_add_header(MsnSoapMessage *message, + const char *name, const char *value) { - MsnSoapConnection *conn = data; - int count = 0, cnt, perrno; - /* This buffer needs to be larger than any packets received from - login.live.com or Adium will fail to receive the packet - (something weird with the login.live.com server). With NSS it works - fine, so I believe it's some bug with OS X */ - char buf[16 * 1024]; - gsize cursor; - - if (conn->message == NULL) { - conn->message = msn_soap_message_new(NULL, NULL); - } - - if (conn->buf == NULL) { - conn->buf = g_string_new_len(buf, 0); - } - - cursor = conn->buf->len; - while ((cnt = purple_ssl_read(conn->ssl, buf, sizeof(buf))) > 0) { - purple_debug_info("soap", "read %d bytes\n", cnt); - count += cnt; - g_string_append_len(conn->buf, buf, cnt); - } + char *header = g_strdup_printf("%s: %s\r\n", name, value); - perrno = errno; - if (cnt < 0 && perrno != EAGAIN) - purple_debug_info("soap", "read: %s\n", g_strerror(perrno)); - -#ifndef MSN_UNSAFE_DEBUG - if (conn->current_request->secure) - purple_debug_misc("soap", "Received secure request.\n"); - else -#endif - if (count != 0) - purple_debug_misc("soap", "current %s\n", conn->buf->str + cursor); - - /* && count is necessary for Adium, on OS X the last read always - return an error, so we want to proceed anyway. See #5212 for - discussion on this and the above buffer size issues */ - if(cnt < 0 && errno == EAGAIN && count == 0) - return; - - /* msn_soap_process could alter errno */ - msn_soap_process(conn); - - if (cnt < 0 && perrno != EAGAIN) { - /* It's possible msn_soap_process closed the ssl connection */ - if (conn->ssl) { - purple_ssl_close(conn->ssl); - conn->ssl = NULL; - msn_soap_connection_handle_next(conn); - } - } + message->headers = g_slist_prepend(message->headers, header); } static void -msn_soap_process(MsnSoapConnection *conn) { +msn_soap_process(MsnSoapConnection *conn) +{ gboolean handled = FALSE; char *cursor; char *linebreak; @@ -429,9 +474,61 @@ } static void -msn_soap_write_cb(gpointer data, gint fd, PurpleInputCondition cond) +msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond) { - msn_soap_write_cb_internal(data, fd, cond, FALSE); + MsnSoapConnection *conn = data; + int count = 0, cnt, perrno; + /* This buffer needs to be larger than any packets received from + login.live.com or Adium will fail to receive the packet + (something weird with the login.live.com server). With NSS it works + fine, so I believe it's some bug with OS X */ + char buf[16 * 1024]; + gsize cursor; + + if (conn->message == NULL) { + conn->message = msn_soap_message_new(NULL, NULL); + } + + if (conn->buf == NULL) { + conn->buf = g_string_new_len(buf, 0); + } + + cursor = conn->buf->len; + while ((cnt = purple_ssl_read(conn->ssl, buf, sizeof(buf))) > 0) { + purple_debug_info("soap", "read %d bytes\n", cnt); + count += cnt; + g_string_append_len(conn->buf, buf, cnt); + } + + perrno = errno; + if (cnt < 0 && perrno != EAGAIN) + purple_debug_info("soap", "read: %s\n", g_strerror(perrno)); + +#ifndef MSN_UNSAFE_DEBUG + if (conn->current_request->secure) + purple_debug_misc("soap", "Received secure request.\n"); + else +#endif + if (count != 0) + purple_debug_misc("soap", "current %s\n", conn->buf->str + cursor); + + /* && count is necessary for Adium, on OS X the last read always + return an error, so we want to proceed anyway. See #5212 for + discussion on this and the above buffer size issues */ + if(cnt < 0 && errno == EAGAIN && count == 0) + return; + + /* msn_soap_process could alter errno */ + msn_soap_process(conn); + + if (cnt < 0 && perrno != EAGAIN) { + /* It's possible msn_soap_process closed the ssl connection */ + if (conn->ssl) { + purple_ssl_close(conn->ssl); + conn->ssl = NULL; + msn_soap_connection_handle_next(conn); + } + } } static gboolean @@ -441,7 +538,8 @@ MsnSoapConnection *conn = data; int written; - if (cond != PURPLE_INPUT_WRITE) return TRUE; + if (cond != PURPLE_INPUT_WRITE) + return TRUE; written = purple_ssl_write(conn->ssl, conn->buf->str + conn->handled_len, conn->buf->len - conn->handled_len); @@ -451,7 +549,8 @@ else if (written <= 0) { purple_ssl_close(conn->ssl); conn->ssl = NULL; - if (!initial) msn_soap_connection_handle_next(conn); + if (!initial) + msn_soap_connection_handle_next(conn); return FALSE; } @@ -475,13 +574,54 @@ return TRUE; } +static void +msn_soap_write_cb(gpointer data, gint fd, PurpleInputCondition cond) +{ + msn_soap_write_cb_internal(data, fd, cond, FALSE); +} + +static void +msn_soap_error_cb(PurpleSslConnection *ssl, PurpleSslErrorType error, + gpointer data) +{ + MsnSoapConnection *conn = data; + + /* sslconn already frees the connection in case of error */ + conn->ssl = NULL; + + g_hash_table_remove(conn->session->soap_table, conn->host); +} + +static void +msn_soap_connected_cb(gpointer data, PurpleSslConnection *ssl, + PurpleInputCondition cond) +{ + MsnSoapConnection *conn = data; + + conn->connected = TRUE; + + if (conn->run_timer == 0) + conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, conn); +} + +MsnSoapMessage * +msn_soap_message_new(const char *action, xmlnode *xml) +{ + MsnSoapMessage *message = g_new0(MsnSoapMessage, 1); + + message->action = g_strdup(action); + message->xml = xml; + + return message; +} + static gboolean msn_soap_connection_run(gpointer data) { MsnSoapConnection *conn = data; MsnSoapRequest *req = g_queue_peek_head(conn->queue); - conn->event_handle = 0; + conn->run_timer = 0; if (req) { if (conn->ssl == NULL) { @@ -532,13 +672,13 @@ if (!msn_soap_write_cb_internal(conn, conn->ssl->fd, PURPLE_INPUT_WRITE, TRUE)) { /* Not connected => reconnect and retry */ purple_debug_info("soap", "not connected, reconnecting\n"); - + conn->connected = FALSE; conn->current_request = NULL; msn_soap_connection_sanitize(conn, FALSE); - + g_queue_push_head(conn->queue, req); - conn->event_handle = purple_timeout_add(0, msn_soap_connection_run, conn); + conn->run_timer = purple_timeout_add(0, msn_soap_connection_run, conn); } g_free(body); @@ -547,151 +687,3 @@ return FALSE; } - -void -msn_soap_message_send(MsnSession *session, MsnSoapMessage *message, - const char *host, const char *path, gboolean secure, - MsnSoapCallback cb, gpointer cb_data) -{ - msn_soap_message_send_internal(session, message, host, path, secure, - cb, cb_data, FALSE); -} - -static void -msn_soap_message_send_internal(MsnSession *session, MsnSoapMessage *message, - const char *host, const char *path, gboolean secure, - MsnSoapCallback cb, gpointer cb_data, gboolean first) -{ - MsnSoapConnection *conn = msn_soap_get_connection(session, host); - MsnSoapRequest *req = g_new0(MsnSoapRequest, 1); - - req->path = g_strdup(path); - req->message = message; - req->secure = secure; - req->cb = cb; - req->cb_data = cb_data; - - if (first) { - g_queue_push_head(conn->queue, req); - } else { - g_queue_push_tail(conn->queue, req); - } - - if (conn->event_handle == 0) - conn->event_handle = purple_timeout_add(0, msn_soap_connection_run, - conn); -} - -static void -msn_soap_connection_sanitize(MsnSoapConnection *conn, gboolean disconnect) -{ - if (conn->event_handle) { - purple_input_remove(conn->event_handle); - conn->event_handle = 0; - } - - if (conn->message) { - msn_soap_message_destroy(conn->message); - conn->message = NULL; - } - - if (conn->buf) { - g_string_free(conn->buf, TRUE); - conn->buf = NULL; - } - - if (conn->ssl && (disconnect || conn->close_when_done)) { - purple_ssl_close(conn->ssl); - conn->ssl = NULL; - } - - if (conn->current_request) { - msn_soap_request_destroy(conn->current_request, FALSE); - conn->current_request = NULL; - } -} - -static void -msn_soap_connection_handle_next(MsnSoapConnection *conn) -{ - msn_soap_connection_sanitize(conn, FALSE); - - conn->event_handle = purple_timeout_add(0, msn_soap_connection_run, conn); - - if (conn->current_request) { - MsnSoapRequest *req = conn->current_request; - conn->current_request = NULL; - msn_soap_connection_destroy_foreach_cb(req, conn); - } -} - -static void -msn_soap_connection_destroy_foreach_cb(gpointer item, gpointer data) -{ - MsnSoapRequest *req = item; - - if (req->cb) - req->cb(req->message, NULL, req->cb_data); - - msn_soap_request_destroy(req, FALSE); -} - -static void -msn_soap_connection_destroy(MsnSoapConnection *conn) -{ - if (conn->current_request) { - MsnSoapRequest *req = conn->current_request; - conn->current_request = NULL; - msn_soap_connection_destroy_foreach_cb(req, conn); - } - - msn_soap_connection_sanitize(conn, TRUE); - g_queue_foreach(conn->queue, msn_soap_connection_destroy_foreach_cb, conn); - g_queue_free(conn->queue); - - g_free(conn->host); - g_free(conn); -} - -MsnSoapMessage * -msn_soap_message_new(const char *action, xmlnode *xml) -{ - MsnSoapMessage *message = g_new0(MsnSoapMessage, 1); - - message->action = g_strdup(action); - message->xml = xml; - - return message; -} - -void -msn_soap_message_destroy(MsnSoapMessage *message) -{ - if (message) { - g_slist_foreach(message->headers, (GFunc)g_free, NULL); - g_slist_free(message->headers); - g_free(message->action); - if (message->xml) - xmlnode_free(message->xml); - g_free(message); - } -} - -void -msn_soap_message_add_header(MsnSoapMessage *message, - const char *name, const char *value) -{ - char *header = g_strdup_printf("%s: %s\r\n", name, value); - - message->headers = g_slist_prepend(message->headers, header); -} - -static void -msn_soap_request_destroy(MsnSoapRequest *req, gboolean keep_message) -{ - g_free(req->path); - if (!keep_message) - msn_soap_message_destroy(req->message); - g_free(req); -} -
--- a/libpurple/protocols/msn/soap.h Mon Nov 24 08:34:20 2008 +0000 +++ b/libpurple/protocols/msn/soap.h Thu Nov 27 02:23:57 2008 +0000 @@ -44,13 +44,8 @@ MsnSoapMessage *msn_soap_message_new(const char *action, xmlnode *xml); -void msn_soap_message_add_header(MsnSoapMessage *req, - const char *name, const char *value); - void msn_soap_message_send(MsnSession *session, MsnSoapMessage *message, const char *host, const char *path, gboolean secure, MsnSoapCallback cb, gpointer cb_data); -void msn_soap_message_destroy(MsnSoapMessage *message); - #endif
--- a/libpurple/protocols/msn/switchboard.c Mon Nov 24 08:34:20 2008 +0000 +++ b/libpurple/protocols/msn/switchboard.c Thu Nov 27 02:23:57 2008 +0000 @@ -81,6 +81,9 @@ swboard->destroying = TRUE; + if (swboard->reconn_timeout_h > 0) + purple_timeout_remove(swboard->reconn_timeout_h); + /* If it linked us is because its looking for trouble */ while (swboard->slplinks != NULL) msn_slplink_destroy(swboard->slplinks->data);
--- a/libpurple/protocols/zephyr/zephyr.c Mon Nov 24 08:34:20 2008 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Thu Nov 27 02:23:57 2008 +0000 @@ -343,15 +343,15 @@ Converts strings to utf-8 if necessary using user specified encoding */ -static gchar *zephyr_recv_convert(PurpleConnection *gc,gchar *string, int len) +static gchar *zephyr_recv_convert(PurpleConnection *gc, gchar *string) { gchar *utf8; GError *err = NULL; zephyr_account *zephyr = gc->proto_data; - if (g_utf8_validate(string, len, NULL)) { + if (g_utf8_validate(string, -1, NULL)) { return g_strdup(string); } else { - utf8 = g_convert(string, len, "UTF-8", zephyr->encoding, NULL, NULL, &err); + utf8 = g_convert(string, -1, "UTF-8", zephyr->encoding, NULL, NULL, &err); if (err) { purple_debug_error("zephyr", "recv conversion error: %s\n", err->message); utf8 = g_strdup(_("(There was an error converting this message. Check the 'Encoding' option in the Account Editor)")); @@ -820,7 +820,7 @@ PurpleConvChat *gcc; char *ptr = (char *) notice.z_message + (strlen(notice.z_message) + 1); int len; - char *sendertmp = g_strdup_printf("%s", zephyr->username); + char *stripped_sender; int signature_length = strlen(notice.z_message); int message_has_no_body = 0; PurpleMessageFlags flags = 0; @@ -843,24 +843,23 @@ tmpescape = g_markup_escape_text(buf, -1); g_free(buf); buf2 = zephyr_to_html(tmpescape); - buf3 = zephyr_recv_convert(gc,buf2, strlen(buf2)); + buf3 = zephyr_recv_convert(gc, buf2); g_free(buf2); g_free(tmpescape); } + stripped_sender = zephyr_strip_local_realm(zephyr,notice.z_sender); + if (!g_ascii_strcasecmp(notice.z_class, "MESSAGE") && !g_ascii_strcasecmp(notice.z_class_inst, "PERSONAL") && !g_ascii_strcasecmp(notice.z_recipient,zephyr->username)) { - gchar* stripped_sender; if (!g_ascii_strcasecmp(notice.z_message, "Automated reply:")) flags |= PURPLE_MESSAGE_AUTO_RESP; - stripped_sender = zephyr_strip_local_realm(zephyr,notice.z_sender); if (!g_ascii_strcasecmp(notice.z_opcode,"PING")) serv_got_typing(gc,stripped_sender,ZEPHYR_TYPING_RECV_TIMEOUT, PURPLE_TYPING); else serv_got_im(gc, stripped_sender, buf3, flags, time(NULL)); - g_free(stripped_sender); } else { zephyr_triple *zt1, *zt2; gchar *send_inst_utf8; @@ -878,15 +877,17 @@ serv_got_joined_chat(gc, zt2->id, zt2->name); zephyr_chat_set_topic(gc,zt2->id,notice.z_class_inst); } - g_free(sendertmp); /* fix memory leak? */ - /* If the person is in the default Realm, then strip the - Realm from the sender field */ - sendertmp = zephyr_strip_local_realm(zephyr,notice.z_sender); - send_inst = g_strdup_printf("%s %s",sendertmp,notice.z_class_inst); - send_inst_utf8 = zephyr_recv_convert(gc,send_inst, strlen(send_inst)); - if (!send_inst_utf8) { - purple_debug_error("zephyr","send_inst %s became null\n", send_inst); - send_inst_utf8 = "malformed instance"; + + if (!g_ascii_strcasecmp(notice.z_class_inst,"PERSONAL")) + send_inst_utf8 = g_strdup(stripped_sender); + else { + send_inst = g_strdup_printf("[%s] %s",notice.z_class_inst,stripped_sender); + send_inst_utf8 = zephyr_recv_convert(gc,send_inst); + g_free(send_inst); + if (!send_inst_utf8) { + purple_debug_error("zephyr","Failed to convert instance for sender %s.\n", stripped_sender); + send_inst_utf8 = g_strdup(stripped_sender); + } } gconv1 = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, @@ -895,24 +896,22 @@ #ifndef INET_ADDRSTRLEN #define INET_ADDRSTRLEN 16 #endif - if (!purple_conv_chat_find_user(gcc, sendertmp)) { + if (!purple_conv_chat_find_user(gcc, stripped_sender)) { gchar ipaddr[INET_ADDRSTRLEN]; #ifdef HAVE_INET_NTOP inet_ntop(AF_INET, ¬ice.z_sender_addr.s_addr, ipaddr, sizeof(ipaddr)); #else memcpy(ipaddr,inet_ntoa(notice.z_sender_addr),sizeof(ipaddr)); #endif - purple_conv_chat_add_user(gcc, sendertmp, ipaddr, PURPLE_CBFLAGS_NONE, TRUE); + purple_conv_chat_add_user(gcc, stripped_sender, ipaddr, PURPLE_CBFLAGS_NONE, TRUE); } - g_free(sendertmp); serv_got_chat_in(gc, zt2->id, send_inst_utf8, 0, buf3, time(NULL)); - g_free(send_inst); g_free(send_inst_utf8); - + free_triple(zt1); } + g_free(stripped_sender); g_free(buf3); - } } @@ -2580,7 +2579,7 @@ gc->account); gcc = purple_conversation_get_chat_data(gconv); - topic_utf8 = zephyr_recv_convert(gc,(gchar *)topic,strlen(topic)); + topic_utf8 = zephyr_recv_convert(gc,(gchar *)topic); purple_conv_chat_set_topic(gcc,sender,topic_utf8); g_free(topic_utf8); return;
--- a/pidgin/Makefile.am Mon Nov 24 08:34:20 2008 +0000 +++ b/pidgin/Makefile.am Thu Nov 27 02:23:57 2008 +0000 @@ -5,7 +5,6 @@ Makefile.mingw \ pidgin.pc.in \ pidgin-uninstalled.pc.in \ - pidginstock-artwork.c \ win32/IdleTracker/Makefile.mingw \ win32/IdleTracker/idletrack.c \ win32/IdleTracker/idletrack.h \
--- a/pidgin/win32/winpidgin.c Mon Nov 24 08:34:20 2008 +0000 +++ b/pidgin/win32/winpidgin.c Thu Nov 27 02:23:57 2008 +0000 @@ -621,9 +621,22 @@ char *tmp; int pidgin_argc = __argc; char **pidgin_argv = __argv; + int i; + BOOL debug = FALSE, help = FALSE, version = FALSE, multiple = FALSE; /* If debug or help or version flag used, create console for output */ - if (strstr(lpszCmdLine, "-d") || strstr(lpszCmdLine, "-h") || strstr(lpszCmdLine, "-v")) { + for (i = 1; i < __argc; i++) { + if (strstr(__argv[i], "-d") || strstr(__argv[i], "--debug")) + debug = TRUE; + else if (strstr(__argv[i], "-h") || strstr(__argv[i], "--help")) + help = TRUE; + else if (strstr(__argv[i], "-v") || strstr(__argv[i], "--version")) + version = TRUE; + else if (strstr(__argv[i], "-m") || strstr(__argv[i], "--multiple")) + multiple = TRUE; + } + + if (debug || help || version) { /* If stdout hasn't been redirected to a file, alloc a console * (_istty() doesn't work for stuff using the GUI subsystem) */ if (_fileno(stdout) == -1 || _fileno(stdout) == -2) { @@ -710,8 +723,8 @@ winpidgin_add_stuff_to_path(); /* If help, version or multiple flag used, do not check Mutex */ - if (!strstr(lpszCmdLine, "-h") && !strstr(lpszCmdLine, "-v")) - if (!winpidgin_set_running(getenv("PIDGIN_MULTI_INST") == NULL && strstr(lpszCmdLine, "-m") == NULL)) + if (!help && !version) + if (!winpidgin_set_running(getenv("PIDGIN_MULTI_INST") == NULL && !multiple)) return 0; /* Now we are ready for Pidgin .. */
--- a/po/de.po Mon Nov 24 08:34:20 2008 +0000 +++ b/po/de.po Thu Nov 27 02:23:57 2008 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-28 17:46+0100\n" +"POT-Creation-Date: 2008-11-25 22:03+0100\n" "PO-Revision-Date: 2008-10-28 17:46+0100\n" "Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n" "Language-Team: Deutsch <de@li.org>\n" @@ -273,7 +273,6 @@ msgid "Add Buddy Pounce" msgstr "Buddy-Alarm hinzufügen" -#. if (q_bud && is_online(q_bud->status)) { msgid "Send File" msgstr "Datei versenden" @@ -1340,7 +1339,7 @@ #. PurpleStatusPrimitive #. id - use default #. name - use default -#. savable +#. saveable #. user_settable #. not independent #. Attributes - each status can have a message. @@ -4977,7 +4976,7 @@ #. primitive #. ID #. name - use default -#. savable +#. saveable #. should be user_settable some day #. independent msgid "Artist" @@ -5190,8 +5189,7 @@ #. *< id #. *< name #. *< version -#. * summary -#. * description +#. *< summary msgid "Windows Live Messenger Protocol Plugin" msgstr "Windows Live Messenger Protokoll-Plugin" @@ -6217,7 +6215,7 @@ msgstr "Bewertung zum Client" msgid "Service unavailable" -msgstr "Dienst nicht unerreichbar" +msgstr "Dienst nicht verfügbar" msgid "Service not defined" msgstr "Dienst nicht definiert" @@ -6425,6 +6423,7 @@ "Leerzeichen enthalten oder nur aus Ziffern bestehen." #. Unregistered screen name +#. uid is not exist msgid "Invalid username." msgstr "Ungültiger Benutzername." @@ -6858,10 +6857,12 @@ "beginnen und nur Buchstaben, Ziffern und Leerzeichen enthalten oder nur aus " "Ziffern bestehen." -msgid "Unable To Add" +#, fuzzy +msgid "Unable to Add" msgstr "Kann nicht hinzufügen" -msgid "Unable To Retrieve Buddy List" +#, fuzzy +msgid "Unable to Retrieve Buddy List" msgstr "Konnte Buddy-Liste nicht laden" msgid "" @@ -7086,42 +7087,6 @@ "ist notwendig für IM-Bilder. Da Ihre IP-Adresse verwendet wird, kann dies " "eine Verletzung der Privatsphäre bedeuten." -msgid "Primary Information" -msgstr "Primäre Informationen" - -msgid "Personal Introduction" -msgstr "Persönliche Vorstellung" - -msgid "QQ Number" -msgstr "QQ-Nummer" - -msgid "Country/Region" -msgstr "Land/Region" - -msgid "Province/State" -msgstr "Provinz/Staat" - -msgid "Horoscope Symbol" -msgstr "Horoskopsymbol" - -msgid "Zodiac Sign" -msgstr "Sternzeichen" - -msgid "Blood Type" -msgstr "Blutgruppe" - -msgid "College" -msgstr "College" - -msgid "Zipcode" -msgstr "PLZ" - -msgid "Cellphone Number" -msgstr "Handy-Telefonnummer" - -msgid "Phone Number" -msgstr "Telefonnummer" - msgid "Aquarius" msgstr "Wassermann" @@ -7197,100 +7162,189 @@ msgid "Other" msgstr "Andere" -msgid "Modify information" +#, fuzzy +msgid "Visible" +msgstr "Unsichtbar" + +msgid "Firend Only" +msgstr "" + +#, fuzzy +msgid "Private" +msgstr "Privatsphäre" + +msgid "QQ Number" +msgstr "QQ-Nummer" + +msgid "Country/Region" +msgstr "Land/Region" + +msgid "Province/State" +msgstr "Provinz/Staat" + +msgid "Zipcode" +msgstr "PLZ" + +msgid "Phone Number" +msgstr "Telefonnummer" + +#, fuzzy +msgid "Authorize adding" +msgstr "Buddy autorisieren?" + +msgid "Cellphone Number" +msgstr "Handy-Telefonnummer" + +msgid "Personal Introduction" +msgstr "Persönliche Vorstellung" + +#, fuzzy +msgid "City/Area" +msgstr "Stadt" + +#, fuzzy +msgid "Publish Mobile" +msgstr "Handy (privat)" + +#, fuzzy +msgid "Publish Contact" +msgstr "Kontakt-Alias" + +msgid "College" +msgstr "College" + +#, fuzzy +msgid "Horoscope" +msgstr "Horoskopsymbol" + +#, fuzzy +msgid "Zodiac" +msgstr "Sternzeichen" + +#, fuzzy +msgid "Blood" +msgstr "Blockiert" + +#, fuzzy +msgid "True" +msgstr "Stier" + +#, fuzzy +msgid "False" +msgstr "Gescheitert" + +#, fuzzy +msgid "Modify Contact" +msgstr "Konto bearbeiten" + +#, fuzzy +msgid "Modify Address" +msgstr "Privatadresse" + +#, fuzzy +msgid "Modify Extended Information" msgstr "Informationen bearbeiten" -msgid "Update information" -msgstr "Informationen aktualisieren" - -#. TODO: We don't really need to notify the user about this, do we? -#. TODO: Does the user really need to be notified about this? -msgid "QQ Buddy" -msgstr "QQ-Buddy" - -msgid "Successed:" -msgstr "Erfolgreich:" - -msgid "Change buddy information." +#, fuzzy +msgid "Modify Information" +msgstr "Informationen bearbeiten" + +#, fuzzy +msgid "Update" +msgstr "Letzte Aktualisierung" + +#, fuzzy +msgid "Could not change buddy information." msgstr "Buddy-Informationen bearbeiten" #, c-format -msgid "" -"Setting custom faces is not currently supported. Please choose an image from " -"%s." -msgstr "" -"Das Setzen von benutzerdefinierten Gesichtern wird momentan nicht " -"unterstützt. Bitte wählen Sie ein Bild von %s." - -msgid "Invalid QQ Face" -msgstr "Ungültiges QQ-Gesicht" - -# c-format -#, c-format -msgid "You rejected %d's request" -msgstr "Sie haben die Anfrage von %d abgelehnt" - -msgid "Reject request" -msgstr "Anfrage ablehnen" - -#. title -msgid "Sorry, you are not my style..." +msgid "%d needs Q&A" +msgstr "" + +#, fuzzy +msgid "Add buddy Q&A" +msgstr "Buddy hinzufügen" + +#, fuzzy +msgid "Input answer here" +msgstr "Anfrage hier eingeben" + +msgid "Send" +msgstr "Senden" + +#, fuzzy +msgid "Invalid answer." +msgstr "Ungültiger Benutzername." + +msgid "Authorization denied message:" +msgstr "Nachricht für die Ablehnung der Autorisierung:" + +#, fuzzy +msgid "Sorry, You are not my style." msgstr "Tut mir Leid, du bist nicht mein Typ..." -msgid "Add buddy with auth request failed" -msgstr "Benutzer hinzufügen, wenn Autorisierungsanfrage fehlschlug" - -msgid "Failed:" -msgstr "Gescheitert:" - -msgid "Remove buddy" -msgstr "Buddy entfernen" - -msgid "Remove from other's buddy list" -msgstr "Von der Liste des Buddys entfernen" - #, c-format msgid "%d needs authentication" msgstr "%d benötigt Authentifizierung" +#, fuzzy +msgid "Add buddy authorize" +msgstr "Benutzer zu Ihrer Buddy-Liste hinzufügen?" + msgid "Input request here" msgstr "Anfrage hier eingeben" -#. TODO: Awkward string to fix post string freeze - standardize auth dialogues? -evands msgid "Would you be my friend?" msgstr "Möchten Sie mein Freund sein?" -#. multiline -#. masked -#. hint -msgid "Send" -msgstr "Senden" - -#, c-format -msgid "Add into %d's buddy list" -msgstr "Zu %ds Buddy-Liste hinzufügen" - -msgid "QQ Number Error" -msgstr "Fehler in QQ-Nummer" +msgid "QQ Buddy" +msgstr "QQ-Buddy" + +#, fuzzy +msgid "Add buddy" +msgstr "Buddy hinzufügen" msgid "Invalid QQ Number" msgstr "Ungültige QQ-Nummer" +#, fuzzy +msgid "Failed sending authorize" +msgstr "Bitte autorisiere mich!" + +#, fuzzy, c-format +msgid "Failed removing buddy %d" +msgstr "Kontakt konnte nicht entfernt werden" + +#, fuzzy, c-format +msgid "Failed removing me from %d's buddy list" +msgstr "Von der Liste des Buddys entfernen" + +#, fuzzy +msgid "No reason given" +msgstr "Kein Grund angegeben." + +#. only need to get value +#, c-format +msgid "You have been added by %s" +msgstr "Sie wurden von %s hinzugefügt" + +msgid "Would you like to add him?" +msgstr "Möchten Sie ihn hinzufügen?" + +#, fuzzy, c-format +msgid "Rejected by %s" +msgstr "Anfrage abgelehnt von %s" + +#, c-format +msgid "Message: %s" +msgstr "Nachricht: %s" + msgid "ID: " msgstr "ID: " msgid "Group ID" msgstr "Gruppen-ID" -msgid "Creator" -msgstr "Ersteller" - -msgid "Group Description" -msgstr "Gruppenbeschreibung" - -msgid "Auth" -msgstr "Autorisieren" - msgid "QQ Qun" msgstr "QQ-Qun" @@ -7300,75 +7354,71 @@ msgid "You can only search for permanent Qun\n" msgstr "Sie können nur nach permanenten Qun suchen\n" -#, c-format -msgid "%d request to join Qun %d" -msgstr "%d möchte dem Qun %d beitreten" - -#, c-format -msgid "Message: %s" -msgstr "Nachricht: %s" - -msgid "QQ Qun Operation" -msgstr "QQ-Qun-Operation" - -msgid "Approve" -msgstr "Akzeptieren" - -#, c-format -msgid "Failed to join Qun %d, operated by admin %d" -msgstr "Dem Qun %d, moderiert von admin %d, konnte nicht beigetreten werden" - -#, c-format -msgid "Successed to join Qun %d, operated by admin %d" -msgstr "Erfolgreicher Beitritt in den Qun %d, moderiert vom Admin %d" - -#, c-format -msgid "[%d] removed from Qun \"%d\"" -msgstr "[%d] vom Qun „%d“ entfernt" - -msgid "Notice:" +#, fuzzy +msgid "Not member" +msgstr "Ich bin kein Mitglied" + +msgid "Member" +msgstr "Mitglied" + +#, fuzzy +msgid "Requesting" +msgstr "Anfrage-Dialog" + +#, fuzzy +msgid "Admin" +msgstr "Adium" + +#, fuzzy +msgid "Notice" msgstr "Bemerkung:" -#, c-format -msgid "[%d] added to Qun \"%d\"" -msgstr "[%d] zum Qun „%d“ hinzugefügt" - -msgid "I am not a member" -msgstr "Ich bin kein Mitglied" - -msgid "I am a member" -msgstr "Ich bin Mitglied" - -msgid "I am requesting" -msgstr "Ich frage an" - -msgid "I am the admin" -msgstr "Ich bin der Admin" - -msgid "Unknown status" -msgstr "Unbekannter Status" +#, fuzzy +msgid "Detail" +msgstr "Standard" + +msgid "Creator" +msgstr "Ersteller" + +#, fuzzy +msgid "About me" +msgstr "Über %s" + +#, fuzzy +msgid "Category" +msgstr "Chatfehler" msgid "The Qun does not allow others to join" msgstr "Diesen Qun können andere nicht beitreten" -msgid "Remove from Qun" -msgstr "vom Qun entfernen" - -msgid "Join to Qun" +#, fuzzy +msgid "Join QQ Qun" msgstr "Qun betreten" #, c-format +msgid "Successfully joined Qun %s (%d)" +msgstr "" + +#, fuzzy +msgid "Successfully joined Qun" +msgstr "Sie haben einen Qun angelegt" + +#, c-format msgid "Qun %d denied to join" msgstr "Qun %d hat Ihren Beitritt abgelehnt" +msgid "QQ Qun Operation" +msgstr "QQ-Qun-Operation" + +msgid "Failed:" +msgstr "Gescheitert:" + msgid "Join Qun, Unknow Reply" msgstr "Qun-Beitritt, Unbekannte Antwort" -msgid "You entered a group ID outside the acceptable range" -msgstr "Sie haben eine Gruppen-ID außerhalb des erlaubten Bereichs angegeben" - -msgid "Are you sure you want to leave this Qun?" -msgstr "Wollen Sie dieses Qun wirklich verlassen?" +#, fuzzy +msgid "Quit Qun" +msgstr "QQ-Qun" msgid "" "Note, if you are the creator, \n" @@ -7377,43 +7427,51 @@ "Beachten Sie, dass diese Operation den Qun entfernen könnte, \n" "wenn Sie der Ersteller sind." -#. we want to see window -msgid "Do you want to approve the request?" -msgstr "Wollen sie die Anfrage akzeptieren?" - -msgid "Change Qun member" +#, fuzzy +msgid "Sorry, you are not our style ..." +msgstr "Tut mir Leid, du bist nicht mein Typ..." + +#, fuzzy +msgid "Successfully changed Qun member" msgstr "Qun-Mitglied ändern" -msgid "Change Qun information" +#, fuzzy +msgid "Successfully changed Qun information" msgstr "Qun-Informationen bearbeiten" msgid "You have successfully created a Qun" msgstr "Sie haben einen Qun angelegt" -msgid "Would you like to set up the detail information now?" +#, fuzzy +msgid "Would you like to set detailed information now?" msgstr "Möchten Sie jetzt Detail-Informationen einstellen?" msgid "Setup" msgstr "Setup" -#, c-format -msgid "" -"%s\n" -"\n" -"%s" -msgstr "" -"%s\n" -"\n" -"%s" - -msgid "QQ Server News" -msgstr "QQ-Server-News" - -msgid "System Message" -msgstr "Systemnachricht" - -msgid "Failed to send IM." -msgstr "Senden der Nachricht fehlgeschlagen." +#, fuzzy, c-format +msgid "%d requested to join Qun %d for %s" +msgstr "%d möchte dem Qun %d beitreten" + +#, c-format +msgid "%d request to join Qun %d" +msgstr "%d möchte dem Qun %d beitreten" + +#, c-format +msgid "Failed to join Qun %d, operated by admin %d" +msgstr "Dem Qun %d, moderiert von admin %d, konnte nicht beigetreten werden" + +#, c-format +msgid "<b>Joining Qun %d is approved by admin %d for %s</b>" +msgstr "" + +#, fuzzy, c-format +msgid "<b>Removed buddy %d.</b>" +msgstr "Buddy entfernen" + +#, c-format +msgid "<b>New buddy %d joined.</b>" +msgstr "" #, c-format msgid "Unknown-%d" @@ -7422,9 +7480,6 @@ msgid "Level" msgstr "Stufe" -msgid "Member" -msgstr "Mitglied" - msgid " VIP" msgstr " VIP" @@ -7452,24 +7507,36 @@ msgid "Invalid name" msgstr "QQ: Ungültiger Name" -#, c-format -msgid "<b>Current Online</b>: %d<br>\n" +#, fuzzy +msgid "Select icon..." +msgstr "Ordner auswählen..." + +#, fuzzy, c-format +msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n" +msgstr "<b>Anmeldezeit</b>: %s<br>\n" + +#, fuzzy, c-format +msgid "<b>Total Online Buddies</b>: %d<br>\n" msgstr "<b>Aktuell online:</b> %d<br>\n" -#, c-format -msgid "<b>Last Refresh</b>: %s<br>\n" +#, fuzzy, c-format +msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n" msgstr "<b>Letzte Aktualisierung</b>: %s<br>\n" #, c-format msgid "<b>Server</b>: %s<br>\n" msgstr "<b>Server</b>: %s<br>\n" +#, fuzzy, c-format +msgid "<b>Client Tag</b>: %s<br>\n" +msgstr "<b>Anmeldezeit</b>: %s<br>\n" + #, c-format msgid "<b>Connection Mode</b>: %s<br>\n" msgstr "<b>Verbindungsmodus</b>: %s<br>\n" -#, c-format -msgid "<b>My Internet Address</b>: %s<br>\n" +#, fuzzy, c-format +msgid "<b>My Internet IP</b>: %s:%d<br>\n" msgstr "<b>Meine Internet-Adresse</b>: %s<br>\n" #, c-format @@ -7492,23 +7559,44 @@ msgid "<b>Received Duplicate</b>: %lu<br>\n" msgstr "<b>Duplikat empfangen</b>: %lu<br>\n" -#, c-format -msgid "<b>Login Time</b>: %s<br>\n" +#, fuzzy, c-format +msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n" msgstr "<b>Anmeldezeit</b>: %s<br>\n" -#, c-format -msgid "<b>Last Login IP</b>: %s<br>\n" -msgstr "<b>Letzte Anmelde-IP</b>: %s<br>\n" - -#, c-format -msgid "<b>Last Login Time</b>: %s\n" -msgstr "<b>Letzte Anmeldezeit</b>: %s\n" +#, fuzzy, c-format +msgid "<b>IP</b>: %s<br>\n" +msgstr "<b>Server</b>: %s<br>\n" msgid "Login Information" msgstr "Login-Informationen" -msgid "Set My Information" -msgstr "Meine Informationen festlegen" +msgid "<p><b>Original Author</b>:<br>\n" +msgstr "" + +msgid "<p><b>Code Contributors</b>:<br>\n" +msgstr "" + +#, fuzzy +msgid "<p><b>Lovely Patch Writers</b>:<br>\n" +msgstr "<b>Letzte Aktualisierung</b>: %s<br>\n" + +#, fuzzy +msgid "<p><b>Acknowledgement</b>:<br>\n" +msgstr "<b>Gesendet</b>: %lu<br>\n" + +msgid "<p><i>And, all the boys in the backroom...</i><br>\n" +msgstr "" + +msgid "<i>Feel free to join us!</i> :)" +msgstr "" + +#, fuzzy, c-format +msgid "About OpenQ r%s" +msgstr "Über %s" + +#, fuzzy +msgid "Change Icon" +msgstr "Icon speichern" msgid "Change Password" msgstr "Passwort ändern" @@ -7516,11 +7604,12 @@ msgid "Account Information" msgstr "Kontoinformationen" -msgid "Leave the QQ Qun" -msgstr "Diesen QQ-Qun verlassen" - -msgid "Block this buddy" -msgstr "Diesen Buddy blockieren" +msgid "Update all QQ Quns" +msgstr "" + +#, fuzzy +msgid "About OpenQ" +msgstr "Über %s" #. *< type #. *< ui_requirement @@ -7532,12 +7621,27 @@ #. *< version #. * summary #. * description -msgid "QQ Protocol\tPlugin" +#, fuzzy +msgid "QQ Protocol Plugin" msgstr "QQ-Protokoll-Plugin" msgid "Auto" msgstr "Auto" +#, fuzzy +msgid "Select Server" +msgstr "Benutzer wählen" + +msgid "QQ2005" +msgstr "" + +msgid "QQ2007" +msgstr "" + +msgid "QQ2008" +msgstr "" + +#. #endif msgid "Connect by TCP" msgstr "Über TCP verbinden" @@ -7547,40 +7651,82 @@ msgid "Show server news" msgstr "Server-News anzeigen" -msgid "Keep alive interval(s)" +#, fuzzy +msgid "Keep alive interval (seconds)" msgstr "Intervall(e) zum Aufrechterhalten der Verbindung (Keep alive)" -msgid "Update interval(s)" +#, fuzzy +msgid "Update interval (seconds)" msgstr "Aktualisierungsintervall(e)" -#, c-format -msgid "Invalid token reply code, 0x%02X" -msgstr "Ungültiger Token-Antwort-Code, 0x%02X" +#, fuzzy +msgid "Can not decrypt server reply" +msgstr "Kann die Antwort der Anmeldung nicht entschlüsseln" + +#, fuzzy +msgid "Can not decrypt get server reply" +msgstr "Kann die Antwort der Anmeldung nicht entschlüsseln" + +#, c-format +msgid "Failed requesting token, 0x%02X" +msgstr "" #, c-format msgid "Invalid token len, %d" msgstr "Ungültige Länge des Tokens, %d" -msgid "Unable login for not support Redirect_EX now" -msgstr "Anmeldung nicht möglich, Redirect_EX wird noch nicht unterstützt" - -#, c-format -msgid "Error password: %s" -msgstr "Passwort-Fehler: %s" - -#, c-format -msgid "Need active: %s" -msgstr "Brauche aktiv: %s" - -#, c-format -msgid "Unable login for unknow reply code 0x%02X" +#. extend redirect used in QQ2006 +msgid "Redirect_EX is not currently supported" +msgstr "" + +#. need activation +#. need activation +#. need activation +#, fuzzy +msgid "Activation required" +msgstr "Registrierung erforderlich" + +#, fuzzy, c-format +msgid "Unknow reply code when login (0x%02X)" msgstr "Anmeldung nicht möglich, unbekannter Antwort-Code 0x%02X" msgid "Keep alive error" msgstr "Fehler beim Aufrechterhalten der Verbindung (Keep alive)" -msgid "Failed to connect all servers" -msgstr "Konnte nicht alle Server verbinden" +#, fuzzy +msgid "Requesting captcha ..." +msgstr "Bitte um %ss Aufmerksamkeit..." + +msgid "Checking code of captcha ..." +msgstr "" + +msgid "Failed captcha verify" +msgstr "" + +#, fuzzy +msgid "Captcha Image" +msgstr "Bild speichern" + +#, fuzzy +msgid "Enter code" +msgstr "Geben Sie ein Passwort ein" + +msgid "QQ Captcha Verifing" +msgstr "" + +#, fuzzy +msgid "Enter the text from the image" +msgstr "Bitte geben Sie den Namen der Gruppe ein" + +#, c-format +msgid "Unknow reply code when checking password (0x%02X)" +msgstr "" + +#, c-format +msgid "" +"Unknow reply code when login (0x%02X):\n" +"%s" +msgstr "" #. we didn't successfully connect. tdt->toc_fd is valid here msgid "Unable to connect." @@ -7606,7 +7752,10 @@ msgid "Connection lost" msgstr "Verbindung verloren" -#. Update the login progress status display +#, fuzzy +msgid "Get server ..." +msgstr "Benutzer-Info setzen..." + msgid "Request token" msgstr "Anfragekürzel" @@ -7616,13 +7765,34 @@ msgid "Invalid server or port" msgstr "Ungültiger Server oder Port" -#, c-format -msgid "Connecting server %s, retries %d" -msgstr "Verbinde zu Server %s, %d Wiederholungen" +#, fuzzy +msgid "Connecting server ..." +msgstr "Verbindungsserver" msgid "QQ Error" msgstr "QQ-Fehler" +msgid "Failed to send IM." +msgstr "Senden der Nachricht fehlgeschlagen." + +#, fuzzy, c-format +msgid "" +"Server News:\n" +"%s\n" +"%s\n" +"%s" +msgstr "QQ-Server-News" + +#, c-format +msgid "From %s:" +msgstr "Von %s:" + +#, fuzzy, c-format +msgid "" +"Server notice From %s: \n" +"%s" +msgstr "Anleitung vom Server: %s" + msgid "Unknow SERVER CMD" msgstr "Unbekanntes SERVER-CMD" @@ -7637,16 +7807,21 @@ msgid "QQ Qun Command" msgstr "QQ-Qun-Kommando" -#, c-format -msgid "You are not a member of QQ Qun \"%s\"\n" +#, fuzzy, c-format +msgid "Not a member of room \"%s\"\n" msgstr "Sie sind kein Mitglied des Qun „%s“\n" msgid "Can not decrypt login reply" msgstr "Kann die Antwort der Anmeldung nicht entschlüsseln" -msgid "Unknow reply CMD" +#, fuzzy +msgid "Unknow LOGIN CMD" msgstr "Unbekanntes Antwort-CMD" +#, fuzzy +msgid "Unknow CLIENT CMD" +msgstr "Unbekanntes SERVER-CMD" + #, c-format msgid "%d has declined the file %s" msgstr "%d hat die Datei %s abgelehnt" @@ -7658,58 +7833,6 @@ msgid "%d canceled the transfer of %s" msgstr "%d hat die Übertragung von %s abgebrochen" -msgid "Do you approve the requestion?" -msgstr "Wollen sie die Anfrage akzeptieren?" - -msgid "Do you add the buddy?" -msgstr "Möchten Sie diesen Buddy hinzufügen?" - -#. only need to get value -#, c-format -msgid "You have been added by %s" -msgstr "Sie wurden von %s hinzugefügt" - -msgid "Would you like to add him?" -msgstr "Möchten Sie ihn hinzufügen?" - -#, c-format -msgid "%s added you [%s] to buddy list" -msgstr "%s hat Sie [%s] zur Buddy-Liste hinzugefügt" - -msgid "QQ Budy" -msgstr "QQ-Buddy" - -#, c-format -msgid "Requestion rejected by %s" -msgstr "Anfrage abgelehnt von %s" - -#, c-format -msgid "Requestion approved by %s" -msgstr "Anfrage akzeptiert von %s" - -#. TODO: this should go through purple_account_request_authorization() -#, c-format -msgid "%s wants to add you [%s] as a friend" -msgstr "%s möchte Sie [%s] als Freund hinzufügen" - -#, c-format -msgid "%s is not in buddy list" -msgstr "%s ist nicht in der Buddy-Liste" - -msgid "Would you add?" -msgstr "Möchten Sie ihn hinzufügen?" - -#, c-format -msgid "From %s:" -msgstr "Von %s:" - -#, c-format -msgid "%s" -msgstr "%s" - -msgid "QQ Server Notice" -msgstr "QQ-Server-Nachricht" - msgid "Connection closed (writing)" msgstr "Verbindung geschlossen (schreibend)" @@ -9408,9 +9531,6 @@ msgid "Yahoo! system message for %s:" msgstr "Yahoo!-Systemnachricht für %s:" -msgid "Authorization denied message:" -msgstr "Nachricht für die Ablehnung der Autorisierung:" - #, c-format msgid "" "%s has (retroactively) denied your request to add them to your list for the " @@ -10297,14 +10417,14 @@ msgid "Protocol" msgstr "Protokoll" -#, c-format +#, fuzzy, c-format msgid "" "<span size='larger' weight='bold'>Welcome to %s!</span>\n" "\n" "You have no IM accounts configured. To start connecting with %s press the " -"<b>Add</b> button below and configure your first account. If you want %s to " -"connect to multiple IM accounts, press <b>Add</b> again to configure them " -"all.\n" +"<b>Add...</b> button below and configure your first account. If you want %s " +"to connect to multiple IM accounts, press <b>Add...</b> again to configure " +"them all.\n" "\n" "You can come back to this window to add, edit, or remove accounts from " "<b>Accounts->Manage Accounts</b> in the Buddy List window" @@ -10745,7 +10865,8 @@ msgid "Auto_join when account becomes online." msgstr "Automatisch _beitreten, wenn das Konto online geht." -msgid "_Hide chat when the window is closed." +#, fuzzy +msgid "_Remain in chat after window is closed." msgstr "_Chat verstecken, wenn das Fenster geschlossen wird." msgid "Please enter the name of the group to be added." @@ -12035,7 +12156,7 @@ " nur das erste Konto aktiviert).\n" " -v, --version zeigt aktuelle Version und beendet das Programm\n" -#, c-format +#, fuzzy, c-format msgid "" "%s %s has segfaulted and attempted to dump a core file.\n" "This is a bug in the software and has happened through\n" @@ -12049,11 +12170,6 @@ "and post the backtrace from the core file. If you do not know\n" "how to get the backtrace, please read the instructions at\n" "%swiki/GetABacktrace\n" -"\n" -"If you need further assistance, please IM either SeanEgn or \n" -"LSchiere (via AIM). Contact information for Sean and Luke \n" -"on other protocols is at\n" -"%swiki/DeveloperPages\n" msgstr "" "%s %s hat einen Speicherzugriffsfehler festgestellt und \n" "versucht, eine Core-Datei zu schreiben. Dies ist ein \n" @@ -12913,9 +13029,14 @@ msgid "_Invite" msgstr "_Einladen" -msgid "_Modify" +#, fuzzy +msgid "_Modify..." msgstr "_Bearbeiten" +#, fuzzy +msgid "_Add..." +msgstr "_Hinzufügen" + msgid "_Open Mail" msgstr "Mail ö_ffnen" @@ -12937,6 +13058,13 @@ msgid "none" msgstr "keine" +#, fuzzy +msgid "Small" +msgstr "E-Mail" + +msgid "Smaller versions of the default smilies" +msgstr "" + msgid "Response Probability:" msgstr "Antwortwahrscheinlichkeit:" @@ -13595,20 +13723,20 @@ "Sie das Debug-Fenster." #, c-format -msgid "" -"You are using %s version %s. The current version is %s. You can get it " -"from <a href=\"%s\">%s</a><hr>" -msgstr "" -"Sie verwenden gerade %s Version %s. Die aktuelle Version ist %s. Sie " -"können Pidgin von <a href=\"%s\">%s</a> herunterladen.<hr>" - -#, c-format -msgid "<b>ChangeLog:</b><br>%s" -msgstr "<b>Änderungen:</b><br>%s" +msgid "You can upgrade to %s %s today." +msgstr "" msgid "New Version Available" msgstr "Neue Version verfügbar" +#, fuzzy +msgid "Later" +msgstr "Datum" + +#, fuzzy +msgid "Download Now" +msgstr "Download %s: %s" + #. *< type #. *< ui_requirement #. *< flags @@ -13918,3 +14046,169 @@ msgid "This plugin is useful for debbuging XMPP servers or clients." msgstr "" "Dieses Plugin ist nützlich zur Fehlersuche in XMPP-Servern oder -Clients." + +#~ msgid "Primary Information" +#~ msgstr "Primäre Informationen" + +#~ msgid "Blood Type" +#~ msgstr "Blutgruppe" + +#~ msgid "Update information" +#~ msgstr "Informationen aktualisieren" + +#~ msgid "Successed:" +#~ msgstr "Erfolgreich:" + +#~ msgid "" +#~ "Setting custom faces is not currently supported. Please choose an image " +#~ "from %s." +#~ msgstr "" +#~ "Das Setzen von benutzerdefinierten Gesichtern wird momentan nicht " +#~ "unterstützt. Bitte wählen Sie ein Bild von %s." + +#~ msgid "Invalid QQ Face" +#~ msgstr "Ungültiges QQ-Gesicht" + +# c-format +#~ msgid "You rejected %d's request" +#~ msgstr "Sie haben die Anfrage von %d abgelehnt" + +#~ msgid "Reject request" +#~ msgstr "Anfrage ablehnen" + +#~ msgid "Add buddy with auth request failed" +#~ msgstr "Benutzer hinzufügen, wenn Autorisierungsanfrage fehlschlug" + +#~ msgid "Add into %d's buddy list" +#~ msgstr "Zu %ds Buddy-Liste hinzufügen" + +#~ msgid "QQ Number Error" +#~ msgstr "Fehler in QQ-Nummer" + +#~ msgid "Group Description" +#~ msgstr "Gruppenbeschreibung" + +#~ msgid "Auth" +#~ msgstr "Autorisieren" + +#~ msgid "Approve" +#~ msgstr "Akzeptieren" + +#~ msgid "Successed to join Qun %d, operated by admin %d" +#~ msgstr "Erfolgreicher Beitritt in den Qun %d, moderiert vom Admin %d" + +#~ msgid "[%d] removed from Qun \"%d\"" +#~ msgstr "[%d] vom Qun „%d“ entfernt" + +#~ msgid "[%d] added to Qun \"%d\"" +#~ msgstr "[%d] zum Qun „%d“ hinzugefügt" + +#~ msgid "I am a member" +#~ msgstr "Ich bin Mitglied" + +#~ msgid "I am requesting" +#~ msgstr "Ich frage an" + +#~ msgid "I am the admin" +#~ msgstr "Ich bin der Admin" + +#~ msgid "Unknown status" +#~ msgstr "Unbekannter Status" + +#~ msgid "Remove from Qun" +#~ msgstr "vom Qun entfernen" + +#~ msgid "You entered a group ID outside the acceptable range" +#~ msgstr "" +#~ "Sie haben eine Gruppen-ID außerhalb des erlaubten Bereichs angegeben" + +#~ msgid "Are you sure you want to leave this Qun?" +#~ msgstr "Wollen Sie dieses Qun wirklich verlassen?" + +#~ msgid "Do you want to approve the request?" +#~ msgstr "Wollen sie die Anfrage akzeptieren?" + +#~ msgid "" +#~ "%s\n" +#~ "\n" +#~ "%s" +#~ msgstr "" +#~ "%s\n" +#~ "\n" +#~ "%s" + +#~ msgid "System Message" +#~ msgstr "Systemnachricht" + +#~ msgid "<b>Last Login IP</b>: %s<br>\n" +#~ msgstr "<b>Letzte Anmelde-IP</b>: %s<br>\n" + +#~ msgid "<b>Last Login Time</b>: %s\n" +#~ msgstr "<b>Letzte Anmeldezeit</b>: %s\n" + +#~ msgid "Set My Information" +#~ msgstr "Meine Informationen festlegen" + +#~ msgid "Leave the QQ Qun" +#~ msgstr "Diesen QQ-Qun verlassen" + +#~ msgid "Block this buddy" +#~ msgstr "Diesen Buddy blockieren" + +#~ msgid "Invalid token reply code, 0x%02X" +#~ msgstr "Ungültiger Token-Antwort-Code, 0x%02X" + +#~ msgid "Unable login for not support Redirect_EX now" +#~ msgstr "Anmeldung nicht möglich, Redirect_EX wird noch nicht unterstützt" + +#~ msgid "Error password: %s" +#~ msgstr "Passwort-Fehler: %s" + +#~ msgid "Need active: %s" +#~ msgstr "Brauche aktiv: %s" + +#~ msgid "Failed to connect all servers" +#~ msgstr "Konnte nicht alle Server verbinden" + +#~ msgid "Connecting server %s, retries %d" +#~ msgstr "Verbinde zu Server %s, %d Wiederholungen" + +#~ msgid "Do you approve the requestion?" +#~ msgstr "Wollen sie die Anfrage akzeptieren?" + +#~ msgid "Do you add the buddy?" +#~ msgstr "Möchten Sie diesen Buddy hinzufügen?" + +#~ msgid "%s added you [%s] to buddy list" +#~ msgstr "%s hat Sie [%s] zur Buddy-Liste hinzugefügt" + +#~ msgid "QQ Budy" +#~ msgstr "QQ-Buddy" + +#~ msgid "Requestion approved by %s" +#~ msgstr "Anfrage akzeptiert von %s" + +#~ msgid "%s wants to add you [%s] as a friend" +#~ msgstr "%s möchte Sie [%s] als Freund hinzufügen" + +#~ msgid "%s is not in buddy list" +#~ msgstr "%s ist nicht in der Buddy-Liste" + +#~ msgid "Would you add?" +#~ msgstr "Möchten Sie ihn hinzufügen?" + +#~ msgid "%s" +#~ msgstr "%s" + +#~ msgid "QQ Server Notice" +#~ msgstr "QQ-Server-Nachricht" + +#~ msgid "" +#~ "You are using %s version %s. The current version is %s. You can get it " +#~ "from <a href=\"%s\">%s</a><hr>" +#~ msgstr "" +#~ "Sie verwenden gerade %s Version %s. Die aktuelle Version ist %s. Sie " +#~ "können Pidgin von <a href=\"%s\">%s</a> herunterladen.<hr>" + +#~ msgid "<b>ChangeLog:</b><br>%s" +#~ msgstr "<b>Änderungen:</b><br>%s"