Mercurial > pidgin
changeset 29448:db23767c5b3f
propagate from branch 'im.pidgin.pidgin' (head c2e5c6cc5feb732b79c07ae4dd8fa6bf02e05dd1)
to branch 'im.pidgin.cpw.rekkanoryo.icqxstatus' (head 0dd11b78b526e2c42337a6749d942bb0a93fe958)
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Tue, 25 Nov 2008 17:02:37 +0000 (2008-11-25) |
parents | fca74ad80194 (current diff) daefbf001774 (diff) |
children | 1f5ba7d5465d |
files | libpurple/protocols/gg/gg.c libpurple/protocols/gg/gg.h libpurple/protocols/sametime/sametime.c pidgin/pixmaps/emblems/16/mobile.png pidgin/pixmaps/emotes/default/24/eat.png pidgin/pixmaps/emotes/default/24/in-love.png pidgin/pixmaps/emotes/default/24/love.png pidgin/pixmaps/emotes/default/24/nailbiting.png pidgin/pixmaps/emotes/default/24/shock.png pidgin/pixmaps/emotes/default/24/smile-big.png pidgin/pixmaps/emotes/default/24/smile.png pidgin/pixmaps/emotes/default/24/sweat.png pidgin/pixmaps/emotes/default/24/tremble.png pidgin/pixmaps/emotes/default/24/yawn.png pidgin/pixmaps/emotes/small/16/love.png pidgin/pixmaps/emotes/small/16/shock.png pidgin/pixmaps/emotes/small/16/smile-big.png pidgin/pixmaps/emotes/small/16/smile.png pidgin/pixmaps/emotes/small/16/yawn.png |
diffstat | 29 files changed, 1360 insertions(+), 1358 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Mon Nov 17 21:07:43 2008 +0000 +++ b/COPYRIGHT Tue Nov 25 17:02:37 2008 +0000 @@ -220,6 +220,7 @@ Tuomas Kuosmanen Tero Kuusela Richard Laager +Jacky Lam Scott Lamb Dennis Lambe Jr. Joe LaPenna @@ -307,7 +308,7 @@ Ted Percival Eduardo P辿rez Matt Perry -Diego Petten� +Diego Petten Nathan Peterson Sebasti叩n E. Peyrott Celso Pinto @@ -323,7 +324,7 @@ Jory A. Pratt Brent Priddy Justin Pryzby -Florian Qu�ze +Florian Qu竪ze Ignacio Casal Quinteiro Federicco Mena Quintero Yosef Radchenko @@ -477,6 +478,7 @@ Jared Yanovich Timmy Yee Nickolai Zeldovich +Tom Zickel Marco Ziech Piotr Zielinski Jeroen Zwartepoorte
--- a/ChangeLog Mon Nov 17 21:07:43 2008 +0000 +++ b/ChangeLog Tue Nov 25 17:02:37 2008 +0000 @@ -8,6 +8,13 @@ --with-system-ssl-certs and GnuTLS need to include these in the system certs directory. * Corrected maximum message lengths for Yahoo! + * Fix some problems with Gadu-Gadu buddy icons (Adam Strzelecki) + * Enable auto-reply on Zephyr, to emulate 'zaway' (Toby Schaffer) + * The Buddy State Notification plugin no longer prints duplicate + notifications when the same buddy is in multiple groups (Florian Qu竪ze) + * The Buddy State Notification plugin no longer turns JID's, MSN Passport + ID's, etc. into links (Florian Qu竪ze) + * Fix a crash in SIMPLE when a malformed message is received. Pidgin: * On GTK+ 2.14 and higher, we're using the gtk-tooltip-delay setting @@ -18,6 +25,8 @@ To completely disable tooltips (e.g. if you had an old tooltip_delay of zero), add this to ~/.purple/gtkrc-2.0: gtk-enable-tooltips = 0 + * Moved the release notification dialog to a mini-dialog in the + buddylist. (Thanks to Casey Ho) Finch: * Allow binding meta+arrow keys for actions.
--- a/Makefile.am Mon Nov 17 21:07:43 2008 +0000 +++ b/Makefile.am Tue Nov 25 17:02:37 2008 +0000 @@ -34,6 +34,7 @@ (cd po ; intltool-update -m 2>&1 | grep -v '^mismatched quotes.*\.py$$' | sed "s|current directory|po directory|" | grep . ; if [ $$? = 0 ] ; then exit 1 ; else exit 0 ; fi) LC_ALL=C sort -c -t/ -u po/POTFILES.in LC_ALL=C sort -c -t/ -u po/POTFILES.skip + iconv -f utf8 -t utf8 COPYRIGHT | cmp COPYRIGHT - version-check: commit-check # We don't want to release development versions.
--- a/libpurple/dnsquery.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/dnsquery.c Tue Nov 25 17:02:37 2008 +0000 @@ -345,6 +345,12 @@ { g_return_if_fail(resolver != NULL); + /* Keep this before the kill() call below. */ + if (resolver->inpa != 0) { + purple_input_remove(resolver->inpa); + resolver->inpa = 0; + } + /* * We might as well attempt to kill our child process. It really * doesn't matter if this fails, because children will expire on @@ -353,9 +359,6 @@ if (resolver->dns_pid > 0) kill(resolver->dns_pid, SIGKILL); - if (resolver->inpa != 0) - purple_input_remove(resolver->inpa); - close(resolver->fd_in); close(resolver->fd_out);
--- a/libpurple/notify.h Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/notify.h Tue Nov 25 17:02:37 2008 +0000 @@ -236,7 +236,8 @@ * Adds a stock button that will be displayed in the search results dialog. * * @param results The search results object. - * @param type Type of the button. (TODO: Only one button of a given type can be displayed.) + * @param type Type of the button. (TODO: Only one button of a given type + * can be displayed.) * @param cb Function that will be called on the click event. */ void purple_notify_searchresults_button_add(PurpleNotifySearchResults *results, @@ -245,8 +246,9 @@ /** - * Adds a plain labelled button that will be displayed in the search results dialog. - * + * Adds a plain labelled button that will be displayed in the search results + * dialog. + * * @param results The search results object * @param label The label to display * @param cb Function that will be called on the click event @@ -267,7 +269,7 @@ * Returns a newly created search result column object. * * @param title Title of the column. NOTE: Title will get g_strdup()ed. - * + * * @return The new search column object. */ PurpleNotifySearchColumn *purple_notify_searchresults_column_new(const char *title); @@ -470,53 +472,58 @@ * The text is essentially a stripped-down format of HTML, the same that * IMs may send. * - * @param gc The PurpleConnection handle associated with the information. - * @param who The username associated with the information. - * @param user_info The PurpleNotifyUserInfo which contains the information - * @param cb The callback to call when the user closes - * the notification. - * @param user_data The data to pass to the callback. + * @param gc The PurpleConnection handle associated with the information. + * @param who The username associated with the information. + * @param user_info The PurpleNotifyUserInfo which contains the information + * @param cb The callback to call when the user closes the notification. + * @param user_data The data to pass to the callback. * - * @return A UI-specific handle. + * @return A UI-specific handle. */ void *purple_notify_userinfo(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info, PurpleNotifyCloseCallback cb, gpointer user_data); /** - * Create a new PurpleNotifyUserInfo which is suitable for passing to purple_notify_userinfo() + * Create a new PurpleNotifyUserInfo which is suitable for passing to + * purple_notify_userinfo() * - * @return A new PurpleNotifyUserInfo, which the caller must destroy when done + * @return A new PurpleNotifyUserInfo, which the caller must destroy when done */ PurpleNotifyUserInfo *purple_notify_user_info_new(void); /** * Destroy a PurpleNotifyUserInfo * - * @param user_info The PurpleNotifyUserInfo + * @param user_info The PurpleNotifyUserInfo */ void purple_notify_user_info_destroy(PurpleNotifyUserInfo *user_info); /** - * Retrieve the array of PurpleNotifyUserInfoEntry objects from a PurpleNotifyUserInfo - * - * This GList may be manipulated directly with normal GList functions such as g_list_insert(). Only - * PurpleNotifyUserInfoEntry are allowed in the list. If a PurpleNotifyUserInfoEntry item is added to the list, - * it should not be g_free()'d by the caller; PurpleNotifyUserInfo will g_free it when destroyed. + * Retrieve the array of PurpleNotifyUserInfoEntry objects from a + * PurpleNotifyUserInfo * - * To remove a PurpleNotifyUserInfoEntry, use purple_notify_user_info_remove_entry(). Do not use the GList directly. + * This GList may be manipulated directly with normal GList functions such + * as g_list_insert(). Only PurpleNotifyUserInfoEntry are allowed in the + * list. If a PurpleNotifyUserInfoEntry item is added to the list, it + * should not be g_free()'d by the caller; PurpleNotifyUserInfo will g_free + * it when destroyed. * - * @param user_info The PurpleNotifyUserInfo + * To remove a PurpleNotifyUserInfoEntry, use + * purple_notify_user_info_remove_entry(). Do not use the GList directly. * - * @constreturn A GList of PurpleNotifyUserInfoEntry objects + * @param user_info The PurpleNotifyUserInfo + * + * @constreturn A GList of PurpleNotifyUserInfoEntry objects */ GList *purple_notify_user_info_get_entries(PurpleNotifyUserInfo *user_info); /** - * Create a textual representation of a PurpleNotifyUserInfo, separating entries with newline + * Create a textual representation of a PurpleNotifyUserInfo, separating + * entries with newline * - * @param user_info The PurpleNotifyUserInfo - * @param newline The separation character + * @param user_info The PurpleNotifyUserInfo + * @param newline The separation character */ char *purple_notify_user_info_get_text_with_newline(PurpleNotifyUserInfo *user_info, const char *newline); @@ -524,46 +531,58 @@ * Add a label/value pair to a PurpleNotifyUserInfo object. * PurpleNotifyUserInfo keeps track of the order in which pairs are added. * - * @param user_info The PurpleNotifyUserInfo - * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. - * If NULL, value will be displayed without a label. - * @param value The value, which might be displayed by a UI after the label. - * If NULL, label will still be displayed; the UI should then treat label as independent - * and not include a colon if it would otherwise. + * @param user_info The PurpleNotifyUserInfo + * @param label A label, which for example might be displayed by a + * UI with a colon after it ("Status:"). Do not include + * a colon. If NULL, value will be displayed without a + * label. + * @param value The value, which might be displayed by a UI after + * the label. If NULL, label will still be displayed; + * the UI should then treat label as independent and not + * include a colon if it would otherwise. */ void purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value); /** * Prepend a label/value pair to a PurpleNotifyUserInfo object * - * @param user_info The PurpleNotifyUserInfo - * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. - * If NULL, value will be displayed without a label. - * @param value The value, which might be displayed by a UI after the label. - * If NULL, label will still be displayed; the UI should then treat label as independent - * and not include a colon if it would otherwise. + * @param user_info The PurpleNotifyUserInfo + * @param label A label, which for example might be displayed by a + * UI with a colon after it ("Status:"). Do not include + * a colon. If NULL, value will be displayed without a + * label. + * @param value The value, which might be displayed by a UI after + * the label. If NULL, label will still be displayed; + * the UI should then treat label as independent and not + * include a colon if it would otherwise. */ void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value); /** - * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object without freeing the entry. + * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object + * without freeing the entry. * - * @param user_info The PurpleNotifyUserInfo - * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param user_info The PurpleNotifyUserInfo + * @param user_info_entry The PurpleNotifyUserInfoEntry */ void purple_notify_user_info_remove_entry(PurpleNotifyUserInfo *user_info, PurpleNotifyUserInfoEntry *user_info_entry); + /** * Create a new PurpleNotifyUserInfoEntry * - * If added to a PurpleNotifyUserInfo object, this should not be free()'d, as PurpleNotifyUserInfo will do so - * when destroyed. purple_notify_user_info_add_pair() and purple_notify_user_info_prepend_pair() are convenience - * methods for creating entries and adding them to a PurpleNotifyUserInfo. + * If added to a PurpleNotifyUserInfo object, this should not be free()'d, + * as PurpleNotifyUserInfo will do so when destroyed. + * purple_notify_user_info_add_pair() and + * purple_notify_user_info_prepend_pair() are convenience methods for + * creating entries and adding them to a PurpleNotifyUserInfo. * - * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. - * If NULL, value will be displayed without a label. - * @param value The value, which might be displayed by a UI after the label. - * If NULL, label will still be displayed; the UI should then treat label as independent - * and not include a colon if it would otherwise. + * @param label A label, which for example might be displayed by a UI + * with a colon after it ("Status:"). Do not include a + * colon. If NULL, value will be displayed without a label. + * @param value The value, which might be displayed by a UI after the + * label. If NULL, label will still be displayed; the UI + * should then treat label as independent and not include a + * colon if it would otherwise. * * @result A new PurpleNotifyUserInfoEntry */ @@ -572,71 +591,74 @@ /** * Add a section break. A UI might display this as a horizontal line. * - * @param user_info The PurpleNotifyUserInfo + * @param user_info The PurpleNotifyUserInfo */ void purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info); /** * Prepend a section break. A UI might display this as a horizontal line. * - * @param user_info The PurpleNotifyUserInfo + * @param user_info The PurpleNotifyUserInfo * @since 2.5.0 */ void purple_notify_user_info_prepend_section_break(PurpleNotifyUserInfo *user_info); - + /** - * Add a section header. A UI might display this in a different font from other text. + * Add a section header. A UI might display this in a different font + * from other text. * - * @param user_info The PurpleNotifyUserInfo - * @param label The name of the section + * @param user_info The PurpleNotifyUserInfo + * @param label The name of the section */ void purple_notify_user_info_add_section_header(PurpleNotifyUserInfo *user_info, const char *label); - + /** - * Prepend a section header. A UI might display this in a different font from other text. + * Prepend a section header. A UI might display this in a different font + * from other text. * - * @param user_info The PurpleNotifyUserInfo - * @param label The name of the section + * @param user_info The PurpleNotifyUserInfo + * @param label The name of the section * @since 2.5.0 */ void purple_notify_user_info_prepend_section_header(PurpleNotifyUserInfo *user_info, const char *label); - + /** - * Remove the last item which was added to a PurpleNotifyUserInfo. This could be used to remove a section header which is not needed. + * Remove the last item which was added to a PurpleNotifyUserInfo. This + * could be used to remove a section header which is not needed. */ void purple_notify_user_info_remove_last_item(PurpleNotifyUserInfo *user_info); /** * Get the label for a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param user_info_entry The PurpleNotifyUserInfoEntry * - * @result The label + * @return The label */ const gchar *purple_notify_user_info_entry_get_label(PurpleNotifyUserInfoEntry *user_info_entry); /** * Set the label for a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry - * @param label The label + * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param label The label */ void purple_notify_user_info_entry_set_label(PurpleNotifyUserInfoEntry *user_info_entry, const char *label); /** * Get the value for a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param user_info_entry The PurpleNotifyUserInfoEntry * - * @result The value + * @result The value */ const gchar *purple_notify_user_info_entry_get_value(PurpleNotifyUserInfoEntry *user_info_entry); /** * Set the value for a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry - * @param value The value + * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param value The value */ void purple_notify_user_info_entry_set_value(PurpleNotifyUserInfoEntry *user_info_entry, const char *value); @@ -644,17 +666,17 @@ /** * Get the type of a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param user_info_entry The PurpleNotifyUserInfoEntry * - * @result The PurpleNotifyUserInfoEntryType + * @return The PurpleNotifyUserInfoEntryType */ PurpleNotifyUserInfoEntryType purple_notify_user_info_entry_get_type(PurpleNotifyUserInfoEntry *user_info_entry); /** * Set the type of a PurpleNotifyUserInfoEntry * - * @param user_info_entry The PurpleNotifyUserInfoEntry - * @param type The PurpleNotifyUserInfoEntryType + * @param user_info_entry The PurpleNotifyUserInfoEntry + * @param type The PurpleNotifyUserInfoEntryType */ void purple_notify_user_info_entry_set_type(PurpleNotifyUserInfoEntry *user_info_entry, PurpleNotifyUserInfoEntryType type);
--- a/libpurple/plugins/statenotify.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/plugins/statenotify.c Tue Nov 25 17:02:37 2008 +0000 @@ -32,13 +32,17 @@ return; g_return_if_fail(conv->type == PURPLE_CONV_TYPE_IM); + /* Prevent duplicate notifications for buddies in multiple groups */ + if (buddy != purple_find_buddy(buddy->account, buddy->name)) + return; + who = purple_buddy_get_alias(buddy); escaped = g_markup_escape_text(who, -1); g_snprintf(buf, sizeof(buf), message, escaped); g_free(escaped); - purple_conv_im_write(conv->u.im, NULL, buf, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_ACTIVE_ONLY, time(NULL)); + purple_conv_im_write(conv->u.im, NULL, buf, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_ACTIVE_ONLY | PURPLE_MESSAGE_NO_LINKIFY, time(NULL)); } static void
--- a/libpurple/protocols/gg/gg.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/gg/gg.c Tue Nov 25 17:02:37 2008 +0000 @@ -61,7 +61,6 @@ * * @return Zero if proxy setup is valid, otherwise -1. */ -/* static int ggp_setup_proxy(PurpleAccount *account) {{{ */ static int ggp_setup_proxy(PurpleAccount *account) { PurpleProxyInfo *gpi; @@ -88,11 +87,7 @@ return 0; } -/* }}} */ -/* - */ -/* static void ggp_async_token_handler(gpointer _gc, gint fd, PurpleInputCondition cond) {{{ */ static void ggp_async_token_handler(gpointer _gc, gint fd, PurpleInputCondition cond) { PurpleConnection *gc = _gc; @@ -157,11 +152,7 @@ token->cb = NULL; cb(gc); } -/* }}} */ -/* - */ -/* static void ggp_token_request(PurpleConnection *gc, GGPTokenCallback cb) {{{ */ static void ggp_token_request(PurpleConnection *gc, GGPTokenCallback cb) { PurpleAccount *account; @@ -199,7 +190,6 @@ * * @param Current action handler. */ -/* static void ggp_action_buddylist_get(PurplePluginAction *action) {{{ */ static void ggp_action_buddylist_get(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; @@ -209,14 +199,12 @@ gg_userlist_request(info->session, GG_USERLIST_GET, NULL); } -/* }}} */ /** * Upload the buddylist to the server. * * @param action Current action handler. */ -/* static void ggp_action_buddylist_put(PurplePluginAction *action) {{{ */ static void ggp_action_buddylist_put(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; @@ -232,14 +220,12 @@ gg_userlist_request(info->session, GG_USERLIST_PUT, buddylist); g_free(buddylist); } -/* }}} */ /** * Delete buddylist from the server. * * @param action Current action handler. */ -/* static void ggp_action_buddylist_delete(PurplePluginAction *action) {{{ */ static void ggp_action_buddylist_delete(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; @@ -249,11 +235,7 @@ gg_userlist_request(info->session, GG_USERLIST_PUT, NULL); } -/* }}} */ -/* - */ -/* static void ggp_callback_buddylist_save_ok(PurpleConnection *gc, const char *file) {{{ */ static void ggp_callback_buddylist_save_ok(PurpleConnection *gc, const char *filename) { PurpleAccount *account = purple_connection_get_account(gc); @@ -284,11 +266,7 @@ g_free(buddylist); } -/* }}} */ -/* - */ -/* static void ggp_callback_buddylist_load_ok(PurpleConnection *gc, gchar *file) {{{ */ static void ggp_callback_buddylist_load_ok(PurpleConnection *gc, gchar *file) { PurpleAccount *account = purple_connection_get_account(gc); @@ -334,11 +312,7 @@ purple_connection_get_account(gc), NULL, NULL, gc); } -/* }}} */ -/* - */ -/* static void ggp_action_buddylist_load(PurplePluginAction *action) {{{ */ static void ggp_action_buddylist_load(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; @@ -349,11 +323,7 @@ purple_connection_get_account(gc), NULL, NULL, gc); } -/* }}} */ -/* - */ -/* static void ggp_callback_register_account_ok(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */ static void ggp_callback_register_account_ok(PurpleConnection *gc, PurpleRequestFields *fields) { @@ -435,11 +405,7 @@ g_free(token->id); g_free(token); } -/* }}} */ -/* - */ -/* static void ggp_callback_register_account_cancel(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */ static void ggp_callback_register_account_cancel(PurpleConnection *gc, PurpleRequestFields *fields) { @@ -453,11 +419,7 @@ g_free(token); } -/* }}} */ -/* - */ -/* static void ggp_register_user_dialog(PurpleConnection *gc) {{{ */ static void ggp_register_user_dialog(PurpleConnection *gc) { PurpleAccount *account; @@ -510,13 +472,9 @@ purple_connection_get_account(gc), NULL, NULL, gc); } -/* }}} */ /* ----- PUBLIC DIRECTORY SEARCH ---------------------------------------- */ -/* - */ -/* static void ggp_callback_show_next(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */ static void ggp_callback_show_next(PurpleConnection *gc, GList *row, gpointer user_data) { GGPInfo *info = gc->proto_data; @@ -533,21 +491,13 @@ ggp_search_add(info->searches, seq, form); purple_debug_info("gg", "ggp_callback_show_next(): Added seq %u", seq); } -/* }}} */ -/* - */ -/* static void ggp_callback_add_buddy(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */ static void ggp_callback_add_buddy(PurpleConnection *gc, GList *row, gpointer user_data) { purple_blist_request_add_buddy(purple_connection_get_account(gc), g_list_nth_data(row, 0), NULL, NULL); } -/* }}} */ -/* - */ -/* static void ggp_callback_im(PurpleConnection *gc, GList *row, gpointer user_data) {{{ */ static void ggp_callback_im(PurpleConnection *gc, GList *row, gpointer user_data) { PurpleAccount *account; @@ -560,11 +510,7 @@ conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name); purple_conversation_present(conv); } -/* }}} */ -/* - */ -/* static void ggp_callback_find_buddies(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */ static void ggp_callback_find_buddies(PurpleConnection *gc, PurpleRequestFields *fields) { GGPInfo *info = gc->proto_data; @@ -611,11 +557,7 @@ ggp_search_add(info->searches, seq, form); purple_debug_info("gg", "ggp_callback_find_buddies(): Added seq %u", seq); } -/* }}} */ -/* - */ -/* static void ggp_find_buddies(PurplePluginAction *action) {{{ */ static void ggp_find_buddies(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; @@ -672,13 +614,9 @@ purple_connection_get_account(gc), NULL, NULL, gc); } -/* }}} */ /* ----- CHANGE PASSWORD ------------------------------------------------ */ -/* - */ -/* static void ggp_callback_change_passwd_ok(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */ static void ggp_callback_change_passwd_ok(PurpleConnection *gc, PurpleRequestFields *fields) { PurpleAccount *account; @@ -750,11 +688,7 @@ g_free(info->token->data); g_free(info->token); } -/* }}} */ -/* - */ -/* static void ggp_change_passwd_dialog(PurpleConnection *gc) {{{ */ static void ggp_change_passwd_dialog(PurpleConnection *gc) { PurpleRequestFields *fields; @@ -811,24 +745,16 @@ g_free(msg); } -/* }}} */ -/* - */ -/* static void ggp_change_passwd(PurplePluginAction *action) {{{ */ static void ggp_change_passwd(PurplePluginAction *action) { PurpleConnection *gc = (PurpleConnection *)action->context; ggp_token_request(gc, ggp_change_passwd_dialog); } -/* }}} */ /* ----- CONFERENCES ---------------------------------------------------- */ -/* - */ -/* static void ggp_callback_add_to_chat_ok(PurpleConnection *gc, PurpleRequestFields *fields) {{{ */ static void ggp_callback_add_to_chat_ok(PurpleConnection *gc, PurpleRequestFields *fields) { PurpleRequestField *field; @@ -842,11 +768,7 @@ ggp_confer_participants_add_uin(gc, sel->data, GPOINTER_TO_INT(purple_request_field_list_get_data(field, sel->data))); } -/* }}} */ -/* - */ -/* static void ggp_bmenu_add_to_chat(PurpleBlistNode *node, gpointer ignored) {{{ */ static void ggp_bmenu_add_to_chat(PurpleBlistNode *node, gpointer ignored) { PurpleBuddy *buddy; @@ -889,13 +811,9 @@ gc); g_free(msg); } -/* }}} */ /* ----- BLOCK BUDDIES -------------------------------------------------- */ -/* - */ -/* static void ggp_bmenu_block(PurpleBlistNode *node, gpointer ignored) {{{ */ static void ggp_bmenu_block(PurpleBlistNode *node, gpointer ignored) { PurpleConnection *gc; @@ -921,7 +839,6 @@ purple_debug_info("gg", "send: uin=%d; mode=BLOCKED\n", uin); } } -/* }}} */ /* ---------------------------------------------------------------------- */ /* ----- INTERNAL CALLBACKS --------------------------------------------- */ @@ -940,7 +857,6 @@ * @param status ID of the status. * @param descr Description. */ -/* static void ggp_generic_status_handler(PurpleConnection *gc, uin_t uin, int status, const char *descr) {{{ */ static void ggp_generic_status_handler(PurpleConnection *gc, uin_t uin, int status, const char *descr) { @@ -980,11 +896,7 @@ g_free(from); g_free(msg); } -/* }}} */ -/* - */ -/* static void ggp_sr_close_cb(gpointer user_data) {{{ */ static void ggp_sr_close_cb(gpointer user_data) { GGPSearchForm *form = user_data; @@ -994,7 +906,6 @@ purple_debug_info("gg", "ggp_sr_close_cb(): Removed seq %u", form->seq); ggp_search_form_destroy(form); } -/* }}} */ /** * Translate a status' ID to a more user-friendly name. @@ -1003,7 +914,6 @@ * * @return The user-friendly name of the status. */ -/* static const char *ggp_status_by_id(unsigned int id) {{{ */ static const char *ggp_status_by_id(unsigned int id) { const char *st; @@ -1026,11 +936,7 @@ return st; } -/* }}} */ -/* - */ -/* static void ggp_pubdir_handle_info(PurpleConnection *gc, gg_pubdir50_t req, GGPSearchForm *form) {{{ */ static void ggp_pubdir_handle_info(PurpleConnection *gc, gg_pubdir50_t req, GGPSearchForm *form) { @@ -1089,11 +995,7 @@ g_free(who); purple_notify_user_info_destroy(user_info); } -/* }}} */ -/* - */ -/* static void ggp_pubdir_handle_full(PurpleConnection *gc, gg_pubdir50_t req, GGPSearchForm *form) {{{ */ static void ggp_pubdir_handle_full(PurpleConnection *gc, gg_pubdir50_t req, GGPSearchForm *form) { @@ -1193,11 +1095,7 @@ purple_notify_searchresults_new_rows(gc, results, form->window); } } -/* }}} */ -/* - */ -/* static void ggp_pubdir_reply_handler(PurpleConnection *gc, gg_pubdir50_t req) {{{ */ static void ggp_pubdir_reply_handler(PurpleConnection *gc, gg_pubdir50_t req) { GGPInfo *info = gc->proto_data; @@ -1236,15 +1134,56 @@ break; } } -/* }}} */ + +static void ggp_recv_image_handler(PurpleConnection *gc, const struct gg_event *ev) +{ + gint imgid = 0; + GGPInfo *info = gc->proto_data; + GList *entry = g_list_first(info->pending_richtext_messages); + gchar *handlerid = g_strdup_printf("IMGID_HANDLER-%i", ev->event.image_reply.crc32); + + imgid = purple_imgstore_add_with_id( + g_memdup(ev->event.image_reply.image, ev->event.image_reply.size), + ev->event.image_reply.size, + ev->event.image_reply.filename); + + purple_debug_info("gg", "ggp_recv_image_handler: got image with crc32: %u\n", ev->event.image_reply.crc32); + + while(entry) { + if (strstr((gchar *)entry->data, handlerid) != NULL) { + gchar **split = g_strsplit((gchar *)entry->data, handlerid, 3); + gchar *text = g_strdup_printf("%s%i%s", split[0], imgid, split[1]); + purple_debug_info("gg", "ggp_recv_image_handler: found message matching crc32: %s\n", (gchar *)entry->data); + g_strfreev(split); + info->pending_richtext_messages = g_list_remove(info->pending_richtext_messages, entry->data); + /* We don't have any more images to download */ + if (strstr(text, "<IMG ID=\"IMGID_HANDLER") == NULL) { + gchar *buf = g_strdup_printf("%lu", (unsigned long int)ev->event.msg.sender); + serv_got_im(gc, buf, text, PURPLE_MESSAGE_IMAGES, ev->event.msg.time); + g_free(buf); + purple_debug_info("gg", "ggp_recv_image_handler: richtext message: %s\n", text); + g_free(text); + break; + } + info->pending_richtext_messages = g_list_append(info->pending_richtext_messages, text); + break; + } + entry = g_list_next(entry); + } + g_free(handlerid); + + return; +} + /** * Dispatch a message received from a buddy. * * @param gc PurpleConnection. * @param ev Gadu-Gadu event structure. + * + * Image receiving, some code borrowed from Kadu http://www.kadu.net */ -/* static void ggp_recv_message_handler(PurpleConnection *gc, const struct gg_event *ev) {{{ */ static void ggp_recv_message_handler(PurpleConnection *gc, const struct gg_event *ev) { GGPInfo *info = gc->proto_data; @@ -1261,7 +1200,109 @@ msg = g_markup_escape_text(tmp, -1); g_free(tmp); - purple_debug_info("gg", "msg form (%s): %s (class = %d; rcpt_count = %d)\n", + /* We got richtext message */ + if (ev->event.msg.formats_length) + { + gboolean got_image = FALSE, bold = FALSE, italic = FALSE, under = FALSE; + char *cformats = (char *)ev->event.msg.formats; + char *cformats_end = cformats + ev->event.msg.formats_length; + gint increased_len = 0; + struct gg_msg_richtext_format *actformat; + struct gg_msg_richtext_image *actimage; + GString *message = g_string_new(msg); + gchar *handlerid; + + purple_debug_info("gg", "ggp_recv_message_handler: richtext msg from (%s): %s %i formats\n", from, msg, ev->event.msg.formats_length); + + while (cformats < cformats_end) + { + gint byteoffset; + actformat = (struct gg_msg_richtext_format *)cformats; + cformats += sizeof(struct gg_msg_richtext_format); + byteoffset = g_utf8_offset_to_pointer(message->str, actformat->position + increased_len) - message->str; + + if(actformat->position == 0 && actformat->font == 0) { + purple_debug_warning("gg", "ggp_recv_message_handler: bogus formatting (inc: %i)\n", increased_len); + continue; + } + purple_debug_info("gg", "ggp_recv_message_handler: format at pos: %i, image:%i, bold:%i, italic: %i, under:%i (inc: %i)\n", + actformat->position, + (actformat->font & GG_FONT_IMAGE) != 0, + (actformat->font & GG_FONT_BOLD) != 0, + (actformat->font & GG_FONT_ITALIC) != 0, + (actformat->font & GG_FONT_UNDERLINE) != 0, + increased_len); + + if (actformat->font & GG_FONT_IMAGE) { + got_image = TRUE; + actimage = (struct gg_msg_richtext_image*)(cformats); + cformats += sizeof(struct gg_msg_richtext_image); + purple_debug_info("gg", "ggp_recv_message_handler: image received, size: %d, crc32: %i\n", actimage->size, actimage->crc32); + + /* Checking for errors, image size shouldn't be + * larger than 255.000 bytes */ + if (actimage->size > 255000) { + purple_debug_warning("gg", "ggp_recv_message_handler: received image large than 255 kb\n"); + continue; + } + + gg_image_request(info->session, ev->event.msg.sender, + actimage->size, actimage->crc32); + + handlerid = g_strdup_printf("<IMG ID=\"IMGID_HANDLER-%i\">", actimage->crc32); + g_string_insert(message, byteoffset, handlerid); + increased_len += strlen(handlerid); + g_free(handlerid); + continue; + } + + if (actformat->font & GG_FONT_BOLD) { + if (bold == FALSE) { + g_string_insert(message, byteoffset, "<b>"); + increased_len += 3; + bold = TRUE; + } + } else if (bold) { + g_string_insert(message, byteoffset, "</b>"); + increased_len += 4; + bold = FALSE; + } + + if (actformat->font & GG_FONT_ITALIC) { + if (italic == FALSE) { + g_string_insert(message, byteoffset, "<i>"); + increased_len += 3; + italic = TRUE; + } + } else if (italic) { + g_string_insert(message, byteoffset, "</i>"); + increased_len += 4; + italic = FALSE; + } + + if (actformat->font & GG_FONT_UNDERLINE) { + if (under == FALSE) { + g_string_insert(message, byteoffset, "<u>"); + increased_len += 3; + under = TRUE; + } + } else if (under) { + g_string_insert(message, byteoffset, "</u>"); + increased_len += 4; + under = FALSE; + } + } + + msg = message->str; + g_string_free(message, FALSE); + + if (got_image) { + info->pending_richtext_messages = g_list_append(info->pending_richtext_messages, msg); + return; + } + } + + purple_debug_info("gg", "ggp_recv_message_handler: msg from (%s): %s (class = %d; rcpt_count = %d)\n", from, msg, ev->event.msg.msgclass, ev->event.msg.recipients_count); @@ -1298,11 +1339,32 @@ g_free(msg); g_free(from); } -/* }}} */ + +static void ggp_send_image_handler(PurpleConnection *gc, const struct gg_event *ev) +{ + GGPInfo *info = gc->proto_data; + PurpleStoredImage *image; + gint imgid = GPOINTER_TO_INT(g_hash_table_lookup(info->pending_images, &ev->event.image_request.crc32)); + + purple_debug_info("gg", "ggp_send_image_handler: image request received, crc32: %u\n", ev->event.image_request.crc32); -/* - */ -/* static void ggp_callback_recv(gpointer _gc, gint fd, PurpleInputCondition cond) {{{ */ + if(imgid) + { + if((image = purple_imgstore_find_by_id(imgid))) { + gint image_size = purple_imgstore_get_size(image); + gconstpointer image_bin = purple_imgstore_get_data(image); + const char *image_filename = purple_imgstore_get_filename(image); + + purple_debug_info("gg", "ggp_send_image_handler: sending image imgid: %i, crc: %u\n", imgid, ev->event.image_request.crc32); + gg_image_reply(info->session, (unsigned long int)ev->event.image_request.sender, image_filename, image_bin, image_size); + purple_imgstore_unref(image); + } else { + purple_debug_error("gg", "ggp_send_image_handler: image imgid: %i, crc: %u in hash but not found in imgstore!\n", imgid, ev->event.image_request.crc32); + } + g_hash_table_remove(info->pending_images, &ev->event.image_request.crc32); + } +} + static void ggp_callback_recv(gpointer _gc, gint fd, PurpleInputCondition cond) { PurpleConnection *gc = _gc; @@ -1327,11 +1389,18 @@ ggp_recv_message_handler(gc, ev); break; case GG_EVENT_ACK: + /* Changing %u to %i fixes compiler warning */ purple_debug_info("gg", - "message sent to: %u, delivery status=%d, seq=%d\n", + "ggp_callback_recv: message sent to: %i, delivery status=%d, seq=%d\n", ev->event.ack.recipient, ev->event.ack.status, ev->event.ack.seq); break; + case GG_EVENT_IMAGE_REPLY: + ggp_recv_image_handler(gc, ev); + break; + case GG_EVENT_IMAGE_REQUEST: + ggp_send_image_handler(gc, ev); + break; case GG_EVENT_NOTIFY: case GG_EVENT_NOTIFY_DESCR: { @@ -1423,11 +1492,7 @@ gg_free_event(ev); } -/* }}} */ -/* - */ -/* static void ggp_async_login_handler(gpointer _gc, gint fd, PurpleInputCondition cond) {{{ */ static void ggp_async_login_handler(gpointer _gc, gint fd, PurpleInputCondition cond) { PurpleConnection *gc = _gc; @@ -1516,20 +1581,16 @@ gg_free_event(ev); } -/* }}} */ /* ---------------------------------------------------------------------- */ /* ----- PurplePluginProtocolInfo ----------------------------------------- */ /* ---------------------------------------------------------------------- */ -/* static const char *ggp_list_icon(PurpleAccount *account, PurpleBuddy *buddy) {{{ */ static const char *ggp_list_icon(PurpleAccount *account, PurpleBuddy *buddy) { return "gadu-gadu"; } -/* }}} */ -/* static char *ggp_status_text(PurpleBuddy *b) {{{ */ static char *ggp_status_text(PurpleBuddy *b) { PurpleStatus *status; @@ -1555,20 +1616,21 @@ return text; } } -/* }}} */ -/* static void ggp_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) {{{ */ static void ggp_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) { PurpleStatus *status; char *text, *tmp; - const char *msg, *name; + const char *msg, *name, *alias; g_return_if_fail(b != NULL); status = purple_presence_get_active_status(purple_buddy_get_presence(b)); msg = purple_status_get_attr_string(status, "message"); name = purple_status_get_name(status); + alias = purple_buddy_get_alias(b); + + purple_notify_user_info_add_pair (user_info, _("Alias"), alias); if (msg != NULL) { text = g_markup_escape_text(msg, -1); @@ -1585,9 +1647,7 @@ purple_notify_user_info_add_pair(user_info, _("Status"), name); } } -/* }}} */ -/* static GList *ggp_status_types(PurpleAccount *account) {{{ */ static GList *ggp_status_types(PurpleAccount *account) { PurpleStatusType *type; @@ -1631,9 +1691,7 @@ return types; } -/* }}} */ -/* static GList *ggp_blist_node_menu(PurpleBlistNode *node) {{{ */ static GList *ggp_blist_node_menu(PurpleBlistNode *node) { PurpleMenuAction *act; @@ -1663,9 +1721,7 @@ return m; } -/* }}} */ -/* static GList *ggp_chat_info(PurpleConnection *gc) {{{ */ static GList *ggp_chat_info(PurpleConnection *gc) { GList *m = NULL; @@ -1679,9 +1735,7 @@ return m; } -/* }}} */ -/* static void ggp_login(PurpleAccount *account) {{{ */ static void ggp_login(PurpleAccount *account) { PurpleConnection *gc; @@ -1703,11 +1757,14 @@ info->chats_count = 0; info->token = NULL; info->searches = ggp_search_new(); + info->pending_richtext_messages = NULL; + info->pending_images = g_hash_table_new(g_int_hash, g_int_equal); gc->proto_data = info; glp->uin = ggp_get_uin(account); glp->password = (char *)purple_account_get_password(account); + glp->image_size = 255; presence = purple_account_get_presence(account); status = purple_presence_get_active_status(presence); @@ -1727,9 +1784,7 @@ gc->inpa = purple_input_add(info->session->fd, PURPLE_INPUT_READ, ggp_async_login_handler, gc); } -/* }}} */ -/* static void ggp_close(PurpleConnection *gc) {{{ */ static void ggp_close(PurpleConnection *gc) { @@ -1757,6 +1812,8 @@ purple_notify_close_with_handle(gc); ggp_search_destroy(info->searches); + g_list_free(info->pending_richtext_messages); + g_hash_table_destroy(info->pending_images); g_free(info); gc->proto_data = NULL; } @@ -1768,25 +1825,108 @@ purple_debug_info("gg", "Connection closed.\n"); } -/* }}} */ -/* static int ggp_send_im(PurpleConnection *gc, const char *who, const char *msg, PurpleMessageFlags flags) {{{ */ static int ggp_send_im(PurpleConnection *gc, const char *who, const char *msg, PurpleMessageFlags flags) { GGPInfo *info = gc->proto_data; char *tmp, *plain; - int ret = 0; + int ret = 1; + unsigned char format[1024]; + unsigned int format_length = sizeof(struct gg_msg_richtext); + gint pos = 0; + GData *attribs; + const char *start, *end = NULL, *last; - if (strlen(msg) == 0) { + if (msg == NULL || *msg == '\0') { return 0; } - purple_debug_info("gg", "ggp_send_im: msg = %s\n", msg); - plain = purple_unescape_html(msg); + last = msg; + + /* Check if the message is richtext */ + /* TODO: Check formatting, too */ + if(purple_markup_find_tag("img", last, &start, &end, &attribs)) { + + GString *string_buffer = g_string_new(NULL); + struct gg_msg_richtext fmt; + + do { + PurpleStoredImage *image; + const char *id; + + /* Add text before the image */ + if(start - last) { + pos = pos + g_utf8_strlen(last, start - last); + g_string_append_len(string_buffer, last, start - last); + } + + if((id = g_datalist_get_data(&attribs, "id")) && (image = purple_imgstore_find_by_id(atoi(id)))) { + struct gg_msg_richtext_format actformat; + struct gg_msg_richtext_image actimage; + gint image_size = purple_imgstore_get_size(image); + gconstpointer image_bin = purple_imgstore_get_data(image); + const char *image_filename = purple_imgstore_get_filename(image); + uint32_t crc32 = gg_crc32(0, image_bin, image_size); + + g_hash_table_insert(info->pending_images, &crc32, GINT_TO_POINTER(atoi(id))); + purple_imgstore_ref(image); + purple_debug_info("gg", "ggp_send_im_richtext: got crc: %i for imgid: %i\n", crc32, atoi(id)); + + actformat.font = GG_FONT_IMAGE; + actformat.position = pos; + + actimage.unknown1 = 0x0109; + actimage.size = gg_fix32(image_size); + actimage.crc32 = gg_fix32(crc32); + + if (actimage.size > 255000) { + purple_debug_warning("gg", "ggp_send_im_richtext: image over 255kb!\n"); + continue; + } + + purple_debug_info("gg", "ggp_send_im_richtext: adding images to richtext, size: %i, crc32: %u, name: %s\n", actimage.size, actimage.crc32, image_filename); + + memcpy(format + format_length, &actformat, sizeof(actformat)); + format_length += sizeof(actformat); + memcpy(format + format_length, &actimage, sizeof(actimage)); + format_length += sizeof(actimage); + } else { + purple_debug_error("gg", "ggp_send_im_richtext: image not found in the image store!"); + } + + last = end + 1; + g_datalist_clear(&attribs); + + } while(purple_markup_find_tag("img", last, &start, &end, &attribs)); + + /* Add text after the images */ + if(last && *last) { + pos = pos + g_utf8_strlen(last, -1); + g_string_append(string_buffer, last); + } + + fmt.flag = 2; + fmt.length = format_length - sizeof(fmt); + memcpy(format, &fmt, sizeof(fmt)); + + purple_debug_info("gg", "ggp_send_im: richtext msg = %s\n", string_buffer->str); + plain = purple_unescape_html(string_buffer->str); + g_string_free(string_buffer, TRUE); + } else { + purple_debug_info("gg", "ggp_send_im: msg = %s\n", msg); + plain = purple_unescape_html(msg); + } + tmp = charset_convert(plain, "UTF-8", "CP1250"); - if (NULL == tmp || strlen(tmp) == 0) { + if (tmp && (format_length - sizeof(struct gg_msg_richtext))) { + if(gg_send_message_richtext(info->session, GG_CLASS_CHAT, ggp_str_to_uin(who), (unsigned char *)tmp, format, format_length) < 0) { + ret = -1; + } else { + ret = 1; + } + } else if (NULL == tmp || *tmp == 0) { ret = 0; } else if (strlen(tmp) > GG_MSG_MAXSIZE) { ret = -E2BIG; @@ -1802,9 +1942,7 @@ return ret; } -/* }}} */ -/* static void ggp_get_info(PurpleConnection *gc, const char *name) { {{{ */ static void ggp_get_info(PurpleConnection *gc, const char *name) { GGPInfo *info = gc->proto_data; @@ -1822,9 +1960,7 @@ ggp_search_add(info->searches, seq, form); purple_debug_info("gg", "ggp_get_info(): Added seq %u", seq); } -/* }}} */ -/* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */ static int ggp_to_gg_status(PurpleStatus *status, char **msg) { const char *status_id = purple_status_get_id(status); @@ -1869,9 +2005,7 @@ return new_status; } } -/* }}} */ -/* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */ static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) { PurpleConnection *gc; @@ -1897,9 +2031,7 @@ ggp_status_fake_to_self(account); } -/* }}} */ -/* static void ggp_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {{{ */ static void ggp_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { PurpleAccount *account; @@ -1912,9 +2044,7 @@ ggp_status_fake_to_self(account); } } -/* }}} */ -/* static void ggp_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {{{ */ static void ggp_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { @@ -1922,9 +2052,7 @@ gg_remove_notify(info->session, ggp_str_to_uin(buddy->name)); } -/* }}} */ -/* static void ggp_join_chat(PurpleConnection *gc, GHashTable *data) {{{ */ static void ggp_join_chat(PurpleConnection *gc, GHashTable *data) { GGPInfo *info = gc->proto_data; @@ -1957,15 +2085,11 @@ purple_account_get_username(account), NULL, PURPLE_CBFLAGS_NONE, TRUE); } -/* }}} */ -/* static char *ggp_get_chat_name(GHashTable *data) { {{{ */ static char *ggp_get_chat_name(GHashTable *data) { return g_strdup(g_hash_table_lookup(data, "name")); } -/* }}} */ -/* static int ggp_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) {{{ */ static int ggp_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) { PurpleConversation *conv; @@ -2017,9 +2141,7 @@ return 0; } -/* }}} */ -/* static void ggp_keepalive(PurpleConnection *gc) {{{ */ static void ggp_keepalive(PurpleConnection *gc) { GGPInfo *info = gc->proto_data; @@ -2034,9 +2156,7 @@ _("Not connected to the server.")); } } -/* }}} */ -/* static void ggp_register_user(PurpleAccount *account) {{{ */ static void ggp_register_user(PurpleAccount *account) { PurpleConnection *gc = purple_account_get_connection(account); @@ -2046,9 +2166,7 @@ ggp_token_request(gc, ggp_register_user_dialog); } -/* }}} */ -/* static GList *ggp_actions(PurplePlugin *plugin, gpointer context) {{{ */ static GList *ggp_actions(PurplePlugin *plugin, gpointer context) { GList *m = NULL; @@ -2088,19 +2206,15 @@ return m; } -/* }}} */ -/* static gboolean ggp_offline_message(const PurpleBuddy *buddy) {{{ */ static gboolean ggp_offline_message(const PurpleBuddy *buddy) { return TRUE; } -/* }}} */ -/* prpl_info setup {{{ */ static PurplePluginProtocolInfo prpl_info = { - OPT_PROTO_REGISTER_NOSCREENNAME, + OPT_PROTO_REGISTER_NOSCREENNAME | OPT_PROTO_IM_IMAGE, NULL, /* user_splits */ NULL, /* protocol_options */ {"png", 32, 32, 96, 96, 0, PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */ @@ -2170,36 +2284,34 @@ sizeof(PurplePluginProtocolInfo), /* struct_size */ NULL }; -/* }}} */ -/* PurplePluginInfo setup {{{ */ static PurplePluginInfo info = { - PURPLE_PLUGIN_MAGIC, /* magic */ - PURPLE_MAJOR_VERSION, /* major_version */ - PURPLE_MINOR_VERSION, /* minor_version */ - PURPLE_PLUGIN_PROTOCOL, /* plugin type */ - NULL, /* ui_requirement */ - 0, /* flags */ - NULL, /* dependencies */ + PURPLE_PLUGIN_MAGIC, /* magic */ + PURPLE_MAJOR_VERSION, /* major_version */ + PURPLE_MINOR_VERSION, /* minor_version */ + PURPLE_PLUGIN_PROTOCOL, /* plugin type */ + NULL, /* ui_requirement */ + 0, /* flags */ + NULL, /* dependencies */ PURPLE_PRIORITY_DEFAULT, /* priority */ - "prpl-gg", /* id */ - "Gadu-Gadu", /* name */ - DISPLAY_VERSION, /* version */ + "prpl-gg", /* id */ + "Gadu-Gadu", /* name */ + DISPLAY_VERSION, /* version */ N_("Gadu-Gadu Protocol Plugin"), /* summary */ N_("Polish popular IM"), /* description */ - "boler@sourceforge.net", /* author */ - PURPLE_WEBSITE, /* homepage */ + "boler@sourceforge.net", /* author */ + PURPLE_WEBSITE, /* homepage */ - NULL, /* load */ - NULL, /* unload */ - NULL, /* destroy */ + NULL, /* load */ + NULL, /* unload */ + NULL, /* destroy */ - NULL, /* ui_info */ - &prpl_info, /* extra_info */ - NULL, /* prefs_info */ - ggp_actions, /* actions */ + NULL, /* ui_info */ + &prpl_info, /* extra_info */ + NULL, /* prefs_info */ + ggp_actions, /* actions */ /* padding */ NULL, @@ -2207,9 +2319,7 @@ NULL, NULL }; -/* }}} */ -/* static void purple_gg_debug_handler(int level, const char * format, va_list args) {{{ */ static void purple_gg_debug_handler(int level, const char * format, va_list args) { PurpleDebugLevel purple_level; char *msg = g_strdup_vprintf(format, args); @@ -2232,11 +2342,7 @@ purple_debug(purple_level, "gg", "%s", msg); g_free(msg); } -/* }}} */ -/* - */ -/* static void init_plugin(PurplePlugin *plugin) {{{ */ static void init_plugin(PurplePlugin *plugin) { PurpleAccountOption *option; @@ -2250,7 +2356,6 @@ gg_debug_handler = purple_gg_debug_handler; } -/* }}} */ PURPLE_INIT_PLUGIN(gg, init_plugin, info);
--- a/libpurple/protocols/gg/gg.h Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/gg/gg.h Tue Nov 25 17:02:37 2008 +0000 @@ -64,9 +64,10 @@ int chats_count; + GList *pending_richtext_messages; + GHashTable *pending_images; } GGPInfo; - #endif /* _PURPLE_GG_H */ /* vim: set ts=8 sts=0 sw=8 noet: */
--- a/libpurple/protocols/irc/cmds.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/irc/cmds.c Tue Nov 25 17:02:37 2008 +0000 @@ -71,7 +71,7 @@ int irc_cmd_ctcp(struct irc_conn *irc, const char *cmd, const char *target, const char **args) { /* we have defined args as args[0] is target and args[1] is ctcp command */ - char *buf; + char *buf; GString *string; /* check if we have args */ @@ -141,11 +141,11 @@ action[strlen(action) - 1] = '\0'; if (purple_conversation_get_type(convo) == PURPLE_CONV_TYPE_CHAT) serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo)), - purple_connection_get_display_name(gc), - 0, action, time(NULL)); + purple_connection_get_display_name(gc), + 0, action, time(NULL)); else purple_conv_im_write(PURPLE_CONV_IM(convo), purple_connection_get_display_name(gc), - action, 0, time(NULL)); + action, 0, time(NULL)); g_free(action); } @@ -156,7 +156,6 @@ { char *buf; - if (!args || !args[0]) return 0;
--- a/libpurple/protocols/irc/dcc_send.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/irc/dcc_send.c Tue Nov 25 17:02:37 2008 +0000 @@ -302,7 +302,7 @@ if (sock < 0) { purple_notify_error(gc, NULL, _("File Transfer Failed"), - _("Could not open a listening port.")); + _("Could not open a listening port.")); purple_xfer_cancel_local(xfer); return; } @@ -313,14 +313,14 @@ purple_debug_misc("irc", "port is %hu\n", port); /* Monitor the listening socket */ xfer->watcher = purple_input_add(sock, PURPLE_INPUT_READ, - irc_dccsend_send_connected, xfer); + irc_dccsend_send_connected, xfer); /* Send the intended recipient the DCC request */ arg[0] = xfer->who; inet_aton(purple_network_get_my_ip(irc->fd), &addr); arg[1] = tmp = g_strdup_printf("\001DCC SEND \"%s\" %u %hu %" G_GSIZE_FORMAT "\001", - xfer->filename, ntohl(addr.s_addr), - port, xfer->size); + xfer->filename, ntohl(addr.s_addr), + port, xfer->size); irc_cmd_privmsg(gc->proto_data, "msg", NULL, arg); g_free(tmp); @@ -343,7 +343,7 @@ if (xd->listen_data == NULL) { purple_xfer_unref(xfer); purple_notify_error(gc, NULL, _("File Transfer Failed"), - _("Could not open a listening port.")); + _("Could not open a listening port.")); purple_xfer_cancel_local(xfer); }
--- a/libpurple/protocols/irc/msgs.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/irc/msgs.c Tue Nov 25 17:02:37 2008 +0000 @@ -123,10 +123,10 @@ void irc_msg_default(struct irc_conn *irc, const char *name, const char *from, char **args) { char *clean; - /* This, too, should be escaped somehow (smarter) */ - clean = purple_utf8_salvage(args[0]); + /* This, too, should be escaped somehow (smarter) */ + clean = purple_utf8_salvage(args[0]); purple_debug(PURPLE_DEBUG_INFO, "irc", "Unrecognized message: %s\n", clean); - g_free(clean); + g_free(clean); } void irc_msg_features(struct irc_conn *irc, const char *name, const char *from, char **args) @@ -814,8 +814,8 @@ purple_conversation_set_data(convo, IRC_NAMES_FLAG, GINT_TO_POINTER(FALSE)); /* Until purple_conversation_present does something that - * one would expect in Pidgin, this call produces buggy - * behavior both for the /join and auto-join cases. */ + * one would expect in Pidgin, this call produces buggy + * behavior both for the /join and auto-join cases. */ /* purple_conversation_present(convo); */ return; } @@ -1043,7 +1043,7 @@ return; /* Undernet likes to :-quote the channel name, for no good reason - * that I can see. This catches that. */ + * that I can see. This catches that. */ channel = (args[0][0] == ':') ? &args[0][1] : args[0]; convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, channel, irc->account); @@ -1056,8 +1056,8 @@ if (!purple_utf8_strcasecmp(nick, purple_connection_get_display_name(gc))) { char *escaped = g_markup_escape_text(args[1], -1); msg = g_strdup_printf(_("You have parted the channel%s%s"), - (args[1] && *args[1]) ? ": " : "", - (escaped && *escaped) ? escaped : ""); + (args[1] && *args[1]) ? ": " : "", + (escaped && *escaped) ? escaped : ""); g_free(escaped); purple_conv_chat_write(PURPLE_CONV_CHAT(convo), channel, msg, PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(msg); @@ -1168,7 +1168,7 @@ serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo)), nick, 0, msg, time(NULL)); else purple_debug_error("irc", "Got a %s on %s, which does not exist\n", - notice ? "NOTICE" : "PRIVMSG", to); + notice ? "NOTICE" : "PRIVMSG", to); } g_free(msg); g_free(nick);
--- a/libpurple/protocols/irc/parse.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/irc/parse.c Tue Nov 25 17:02:37 2008 +0000 @@ -494,7 +494,7 @@ } } result[j] = '\0'; - return result; + return result; } const char *irc_nick_skip_mode(struct irc_conn *irc, const char *nick) @@ -732,9 +732,9 @@ static void irc_parse_error_cb(struct irc_conn *irc, char *input) { char *clean; - /* This really should be escaped somehow that you can tell what - * the junk was -- but as it is, it can crash glib. */ - clean = purple_utf8_salvage(input); + /* This really should be escaped somehow that you can tell what + * the junk was -- but as it is, it can crash glib. */ + clean = purple_utf8_salvage(input); purple_debug(PURPLE_DEBUG_WARNING, "irc", "Unrecognized string: %s\n", clean); - g_free(clean); + g_free(clean); }
--- a/libpurple/protocols/jabber/message.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/jabber/message.c Tue Nov 25 17:02:37 2008 +0000 @@ -913,19 +913,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 NULL; + } break; default: return FALSE;
--- a/libpurple/protocols/jabber/parser.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/jabber/parser.c Tue Nov 25 17:02:37 2008 +0000 @@ -114,7 +114,8 @@ xmlnode *packet = js->current; js->current = NULL; jabber_process_packet(js, &packet); - xmlnode_free(packet); + if (packet != NULL) + xmlnode_free(packet); } } @@ -137,11 +138,19 @@ { JabberStream *js = user_data; + if (error->level == XML_ERR_WARNING && error->message != NULL + && strcmp(error->message, "xmlns: URI vcard-temp is not absolute\n") == 0) + /* + * This message happens when parsing vcards, and is normal, so don't + * bother logging it because people scare easily. + */ + return; + purple_debug_error("jabber", "XML parser error for JabberStream %p: " - "Domain %i, code %i, level %i: %s\n", + "Domain %i, code %i, level %i: %s", js, error->domain, error->code, error->level, - (error->message ? error->message : "(null)")); + (error->message ? error->message : "(null)\n")); } static xmlSAXHandler jabber_parser_libxml = {
--- a/libpurple/protocols/jabber/presence.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/jabber/presence.c Tue Nov 25 17:02:37 2008 +0000 @@ -459,7 +459,7 @@ if (buddy) { jb = jabber_buddy_find(js, from, TRUE); - if ((jb->subscription & JABBER_SUB_TO)) + if ((jb->subscription & (JABBER_SUB_TO | JABBER_SUB_PENDING))) onlist = TRUE; }
--- a/libpurple/protocols/jabber/si.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/jabber/si.c Tue Nov 25 17:02:37 2008 +0000 @@ -798,7 +798,7 @@ if (!(sh->jid && sh->host && sh->port > 0)) continue; - purple_debug_info("jabber", "jabber_si_xfer_bytestreams_listen_cb() will be looking at jsx %p: jsx->streamhosts %p and sh->jid %p", + purple_debug_info("jabber", "jabber_si_xfer_bytestreams_listen_cb() will be looking at jsx %p: jsx->streamhosts %p and sh->jid %p\n", jsx, jsx->streamhosts, sh->jid); if(g_list_find_custom(jsx->streamhosts, sh->jid, jabber_si_compare_jid) != NULL) continue;
--- a/libpurple/protocols/msn/msn.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/msn.c Tue Nov 25 17:02:37 2008 +0000 @@ -1196,6 +1196,9 @@ purple_debug_info("msn", "prepare to send online Message\n"); if (g_ascii_strcasecmp(who, username)) { + if (flags & PURPLE_MESSAGE_AUTO_RESP) { + msn_message_set_flag(msg, 'U'); + } if (msn_user_is_yahoo(account, who)) { /*we send the online and offline Message to Yahoo User via UBM*/ purple_debug_info("msn", "send to Yahoo User\n");
--- a/libpurple/protocols/msn/notification.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/notification.c Tue Nov 25 17:02:37 2008 +0000 @@ -491,7 +491,7 @@ * command and we are processing it */ if (cmd->payload == NULL) { cmdproc->last_cmd->payload_cb = msg_cmd_post; - cmd->payload_len = atoi(cmd->params[4]); + cmd->payload_len = atoi(cmd->params[3]); } else { g_return_if_fail(cmd->payload_cb != NULL);
--- a/libpurple/protocols/msn/servconn.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/servconn.c Tue Nov 25 17:02:37 2008 +0000 @@ -69,8 +69,7 @@ return; } - if (servconn->connected) - msn_servconn_disconnect(servconn); + msn_servconn_disconnect(servconn); if (servconn->destroy_cb) servconn->destroy_cb(servconn);
--- a/libpurple/protocols/msn/soap.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/soap.c Tue Nov 25 17:02:37 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) @@ -113,8 +191,8 @@ &t); if (g_hash_table_size(sess->soap_table) == 0) { - purple_timeout_remove(sess->soap_cleanup_handle); sess->soap_cleanup_handle = 0; + return FALSE; } } @@ -147,38 +225,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 +353,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 +475,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 +539,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 +550,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 +575,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 +673,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 +688,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 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/soap.h Tue Nov 25 17:02:37 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 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/msn/switchboard.c Tue Nov 25 17:02:37 2008 +0000 @@ -577,6 +577,7 @@ MsnTransaction *trans; char *payload; gsize payload_len; + char flag; g_return_if_fail(swboard != NULL); g_return_if_fail(msg != NULL); @@ -590,32 +591,35 @@ msn_message_show_readable(msg, "SB SEND", FALSE); #endif + flag = msn_message_get_flag(msg); trans = msn_transaction_new(cmdproc, "MSG", "%c %" G_GSIZE_FORMAT, - msn_message_get_flag(msg), payload_len); + flag, payload_len); /* Data for callbacks */ msn_transaction_set_data(trans, msg); - if (msg->type == MSN_MSG_TEXT) - { - msg->ack_ref = TRUE; - msn_message_ref(msg); - swboard->ack_list = g_list_append(swboard->ack_list, msg); - msn_transaction_set_timeout_cb(trans, msg_timeout); - } - else if (msg->type == MSN_MSG_SLP) - { - msg->ack_ref = TRUE; - msn_message_ref(msg); - swboard->ack_list = g_list_append(swboard->ack_list, msg); - msn_transaction_set_timeout_cb(trans, msg_timeout); + if (flag != 'U') { + if (msg->type == MSN_MSG_TEXT) + { + msg->ack_ref = TRUE; + msn_message_ref(msg); + swboard->ack_list = g_list_append(swboard->ack_list, msg); + msn_transaction_set_timeout_cb(trans, msg_timeout); + } + else if (msg->type == MSN_MSG_SLP) + { + msg->ack_ref = TRUE; + msn_message_ref(msg); + swboard->ack_list = g_list_append(swboard->ack_list, msg); + msn_transaction_set_timeout_cb(trans, msg_timeout); #if 0 - if (msg->ack_cb != NULL) - { - msn_transaction_add_cb(trans, "ACK", msg_ack); - msn_transaction_add_cb(trans, "NAK", msg_nak); + if (msg->ack_cb != NULL) + { + msn_transaction_add_cb(trans, "ACK", msg_ack); + msn_transaction_add_cb(trans, "NAK", msg_nak); + } +#endif } -#endif } trans->payload = payload; @@ -806,7 +810,7 @@ ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { purple_debug_misc("msn", "get UBM...\n"); - cmd->payload_len = atoi(cmd->params[4]); + cmd->payload_len = atoi(cmd->params[3]); cmdproc->last_cmd->payload_cb = msg_cmd_post; }
--- a/libpurple/protocols/sametime/sametime.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/sametime/sametime.c Tue Nov 25 17:02:37 2008 +0000 @@ -1445,7 +1445,7 @@ MW_PLUGIN_DEFAULT_HOST); if(purple_account_get_bool(account, MW_KEY_FORCE, FALSE) || - (! strcmp(current_host, host)) || + !host || (! strcmp(current_host, host)) || (purple_proxy_connect(NULL, account, host, port, connect_cb, pd) == NULL)) { /* if we're configured to force logins, or if we're being
--- a/libpurple/protocols/simple/simple.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/simple/simple.c Tue Nov 25 17:02:37 2008 +0000 @@ -1630,6 +1630,13 @@ cur[0] = '\0'; purple_debug_info("simple", "\n\nreceived - %s\n######\n%s\n#######\n\n", ctime(&currtime), conn->inbuf); msg = sipmsg_parse_header(conn->inbuf); + + if(!msg) { + /* Should we re-use this error message (from lower in the function)? */ + purple_debug_misc("simple", "received a incomplete sip msg: %s\n", conn->inbuf); + return; + } + cur[0] = '\r'; cur += 2; restlen = conn->inbufused - (cur - conn->inbuf);
--- a/libpurple/protocols/zephyr/zephyr.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Tue Nov 25 17:02:37 2008 +0000 @@ -1571,7 +1571,7 @@ #ifdef WIN32 username = purple_account_get_username(account); #endif - gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC; + gc->flags |= PURPLE_CONNECTION_AUTO_RESP | PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC; gc->proto_data = zephyr=g_new0(zephyr_account,1); zephyr->account = account;
--- a/libpurple/proxy.c Mon Nov 17 21:07:43 2008 +0000 +++ b/libpurple/proxy.c Tue Nov 25 17:02:37 2008 +0000 @@ -944,12 +944,15 @@ } else if((header = g_strrstr((const char *)connect_data->read_buffer, "Proxy-Authenticate: Basic"))) { gchar *t1, *t2; + const char *username, *password; + + username = purple_proxy_info_get_username(connect_data->gpi); + password = purple_proxy_info_get_password(connect_data->gpi); t1 = g_strdup_printf("%s:%s", - purple_proxy_info_get_username(connect_data->gpi), - purple_proxy_info_get_password(connect_data->gpi) ? - purple_proxy_info_get_password(connect_data->gpi) : ""); - t2 = purple_base64_encode((const guchar *)t1, strlen(t1)); + username ? username : "", + password ? password : ""); + t2 = purple_base64_encode((guchar *)t1, strlen(t1)); g_free(t1); request = g_strdup_printf(
--- a/pidgin/plugins/relnot.c Mon Nov 17 21:07:43 2008 +0000 +++ b/pidgin/plugins/relnot.c Tue Nov 25 17:02:37 2008 +0000 @@ -34,7 +34,10 @@ #include "connection.h" #include "core.h" #include "debug.h" +#include "gtkblist.h" +#include "gtkutils.h" #include "notify.h" +#include "pidginstock.h" #include "prefs.h" #include "util.h" #include "version.h" @@ -45,12 +48,26 @@ #define MIN_CHECK_INTERVAL 60 * 60 * 24 static void +release_hide() +{ + /* No-op. We may use this method in the future to avoid showing + * the popup twice */ +} + +static void +release_show() +{ + purple_notify_uri(NULL, PURPLE_WEBSITE); +} + +static void version_fetch_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *response, size_t len, const gchar *error_message) { - gchar *cur_ver, *formatted; + gchar *cur_ver; const char *tmp, *changelog; char response_code[4]; + GtkWidget *release_dialog; GString *message; int i = 0; @@ -89,27 +106,21 @@ return; cur_ver = g_strndup(changelog, i); - changelog += i; - - while(*changelog == '\n') changelog++; message = g_string_new(""); - g_string_append_printf(message, _("You are using %s version %s. The " - "current version is %s. You can get it from " - "<a href=\"%s\">%s</a><hr>"), - PIDGIN_NAME, purple_core_get_version(), cur_ver, - PURPLE_WEBSITE, PURPLE_WEBSITE); + g_string_append_printf(message, _("You can upgrade to %s %s today."), + PIDGIN_NAME, cur_ver); - if(*changelog) { - formatted = purple_strdup_withhtml(changelog); - g_string_append_printf(message, _("<b>ChangeLog:</b><br>%s"), - formatted); - g_free(formatted); - } + release_dialog = pidgin_make_mini_dialog( + NULL, PIDGIN_STOCK_DIALOG_INFO, + _("New Version Available"), + message->str, + NULL, + _("Later"), PURPLE_CALLBACK(release_hide), + _("Download Now"), PURPLE_CALLBACK(release_show), + NULL); - purple_notify_formatted(NULL, _("New Version Available"), - _("New Version Available"), NULL, message->str, - NULL, NULL); + pidgin_blist_add_alert(release_dialog); g_string_free(message, TRUE); g_free(cur_ver);
--- a/pidgin/win32/winpidgin.c Mon Nov 17 21:07:43 2008 +0000 +++ b/pidgin/win32/winpidgin.c Tue Nov 25 17:02:37 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/hu.po Mon Nov 17 21:07:43 2008 +0000 +++ b/po/hu.po Tue Nov 25 17:02:37 2008 +0000 @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: pidgin 2.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-16 00:55-0700\n" -"PO-Revision-Date: 2008-10-02 18:55+0200\n" +"POT-Creation-Date: 2008-11-23 21:15+0100\n" +"PO-Revision-Date: 2008-11-23 21:16+0100\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <gnome@fsf.hu>\n" "MIME-Version: 1.0\n" @@ -73,7 +73,6 @@ msgid "Remember password" msgstr "Eml辿kezzen a jelsz坦ra" -#, fuzzy msgid "There are no protocol plugins installed." msgstr "Nincsenek protokollb�v鱈tm辿nyek telep鱈tve." @@ -146,8 +145,7 @@ #, c-format msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s" -msgstr "" -"%s%s%s%s felhaszn叩l坦 szeretn辿 %s partnert felvenni a partnerlist叩j叩ra%s%s" +msgstr "%s%s%s%s felhaszn叩l坦 szeretn辿 %s partnert felvenni a partnerlist叩j叩ra%s%s" msgid "Authorize buddy?" msgstr "Enged辿lyezi a partnert?" @@ -242,9 +240,6 @@ msgid "You must give a name for the group to add." msgstr "Meg kell adnia a felvenni k鱈v叩nt csoport nev辿t." -msgid "A group with the name already exists." -msgstr "Ilyen�nev撤 csoport m叩r l辿tezik." - msgid "Add Group" msgstr "Csoport felv辿tele" @@ -275,15 +270,14 @@ msgid "Add Buddy Pounce" msgstr "Partnerfigyelmeztet辿s felv辿tele" -#. if (q_bud && is_online(q_bud->status)) { msgid "Send File" msgstr "F叩jl k端ld辿se" msgid "Blocked" msgstr "Tiltott" -msgid "View Log" -msgstr "Napl坦 megtekint辿se" +msgid "Show when offline" +msgstr "Megjelen鱈t辿s, ha el辿rhet�" #, c-format msgid "Please enter the new name for %s" @@ -302,8 +296,7 @@ msgstr "A kapcsolat elt叩vol鱈t叩sa a kapcsolat partnereit is elt叩vol鱈tja" msgid "Removing this group will also remove all the buddies in the group" -msgstr "" -"A csoport elt叩vol鱈t叩sa a csoportban tal叩lhat坦 partnereket is elt叩vol鱈tja" +msgstr "A csoport elt叩vol鱈t叩sa a csoportban tal叩lhat坦 partnereket is elt叩vol鱈tja" #, c-format msgid "Are you sure you want to remove %s?" @@ -326,6 +319,9 @@ msgid "Toggle Tag" msgstr "C鱈mke 叩tv叩lt叩sa" +msgid "View Log" +msgstr "Napl坦 megtekint辿se" + #. General msgid "Nickname" msgstr "Becen辿v" @@ -373,8 +369,7 @@ msgstr "�j azonnali 端zenet" msgid "Please enter the username or alias of the person you would like to IM." -msgstr "" -"Adja meg azon szem辿ly felhaszn叩l坦nev辿t vagy 叩lnev辿t, akinek 端zenni szeretne." +msgstr "Adja meg azon szem辿ly felhaszn叩l坦nev辿t vagy 叩lnev辿t, akinek 端zenni szeretne." msgid "Channel" msgstr "Csatorna" @@ -600,13 +595,10 @@ msgstr "Elhagyta ezt a cseveg辿st." msgid "Logging started. Future messages in this conversation will be logged." -msgstr "" -"A napl坦z叩s elkezd�d旦tt. A t叩rsalg叩s j旦v�beli 端zenetei napl坦zva lesznek." - -msgid "" -"Logging stopped. Future messages in this conversation will not be logged." -msgstr "" -"A napl坦z叩s befejez�d旦tt. A t叩rsalg叩s j旦v�beli 端zenetei nem lesznek napl坦zva." +msgstr "A napl坦z叩s elkezd�d旦tt. A t叩rsalg叩s j旦v�beli 端zenetei napl坦zva lesznek." + +msgid "Logging stopped. Future messages in this conversation will not be logged." +msgstr "A napl坦z叩s befejez�d旦tt. A t叩rsalg叩s j旦v�beli 端zenetei nem lesznek napl坦zva." msgid "Send To" msgstr "K端ld辿s ennek" @@ -678,8 +670,7 @@ #, c-format msgid "%s is not a valid color. See '/help msgcolor' for valid colors." -msgstr "" -"%s nem 辿rv辿nyes sz鱈n. Az 辿rv辿nyes sz鱈nek辿rt l叩sd a ��help msgcolor�� kimenet辿t." +msgstr "%s nem 辿rv辿nyes sz鱈n. Az 辿rv辿nyes sz鱈nek辿rt l叩sd a ��help msgcolor�� kimenet辿t." msgid "" "say <message>: Send a message normally as if you weren't using a " @@ -852,8 +843,7 @@ "Az azonnali 端zenetek csak akkor lesznek napl坦zva, ha az ���sszes azonnali " "端zenet napl坦z叩sa�� tulajdons叩g be van 叩ll鱈tva." -msgid "" -"Chats will only be logged if the \"Log all chats\" preference is enabled." +msgid "Chats will only be logged if the \"Log all chats\" preference is enabled." msgstr "" "A cseveg辿sek csak akkor lesznek napl坦zva, ha az ���sszes cseveg辿s napl坦z叩sa�� " "tulajdons叩g be van 叩ll鱈tva." @@ -959,8 +949,7 @@ msgid "The selected file is not a valid plugin." msgstr "A kiv叩lasztott f叩jl nem egy 辿rv辿nyes b�v鱈tm辿ny." -msgid "" -"Please open the debug window and try again to see the exact error message." +msgid "Please open the debug window and try again to see the exact error message." msgstr "" "Nyissa meg a hibakeres� ablakot 辿s pr坦b叩lkozzon 炭jra a pontos hiba端zenet " "megjelen鱈t辿s辿hez." @@ -1332,7 +1321,7 @@ #. PurpleStatusPrimitive #. id - use default #. name - use default -#. savable +#. saveable #. user_settable #. not independent #. Attributes - each status can have a message. @@ -1393,8 +1382,7 @@ msgstr "Az ablak nem tal叩lhat坦" msgid "This plugin cannot be loaded because it was not built with X11 support." -msgstr "" -"A b�v鱈tm辿ny nem t旦lthet� be, mivel X11 t叩mogat叩s n辿lk端l ker端lt leford鱈t叩sra." +msgstr "A b�v鱈tm辿ny nem t旦lthet� be, mivel X11 t叩mogat叩s n辿lk端l ker端lt leford鱈t叩sra." msgid "GntClipboard" msgstr "GntClipboard" @@ -1675,8 +1663,7 @@ "ellen�rizhet�." #. vrq will be completed by user_auth -msgid "" -"The root certificate this one claims to be issued by is unknown to Pidgin." +msgid "The root certificate this one claims to be issued by is unknown to Pidgin." msgstr "A tan炭s鱈tv叩nyt kiad坦 gy旦k辿rtan炭s鱈tv叩nyt a Pidgin nem ismeri." #, c-format @@ -2087,8 +2074,7 @@ msgstr "A megadott parancs kezelje-e az ��ymsgr�� URL c鱈meket" msgid "<b><font color=\"red\">The logger has no read function</font></b>" -msgstr "" -"<b><font color=\"red\">A napl坦z坦nak nincsen olvas叩s funkci坦ja</font></b>" +msgstr "<b><font color=\"red\">A napl坦z坦nak nincsen olvas叩s funkci坦ja</font></b>" msgid "HTML" msgstr "HTML" @@ -2148,8 +2134,7 @@ msgid "ABI version mismatch %d.%d.x (need %d.%d.x)" msgstr "Az ABI verzi坦ja nem egyezik: %d.%d.x (sz端ks辿ges: %d.%d.x)" -msgid "" -"Plugin does not implement all required functions (list_icon, login and close)" +msgid "Plugin does not implement all required functions (list_icon, login and close)" msgstr "" "A b�v鱈tm辿ny nem val坦s鱈tja meg az 旦sszes k鱈v叩nt f端ggv辿nyt (list_icon, login " "辿s close)" @@ -2158,8 +2143,7 @@ msgid "" "The required plugin %s was not found. Please install this plugin and try " "again." -msgstr "" -"A sz端ks辿ges %s b�v鱈tm辿ny nem tal叩lhat坦. K辿rem telep鱈tse, majd pr坦b叩lja 炭jra." +msgstr "A sz端ks辿ges %s b�v鱈tm辿ny nem tal叩lhat坦. K辿rem telep鱈tse, majd pr坦b叩lja 炭jra." msgid "Unable to load the plugin" msgstr "A b�v鱈tm辿ny nem t旦lthet� be" @@ -2224,8 +2208,7 @@ "(Teljes el辿r辿si utat adjon meg)" msgid "Automatically reject from users not in buddy list" -msgstr "" -"Automatikus visszautas鱈t叩s a partnerlist叩n nem szerepl� felhaszn叩l坦kt坦l" +msgstr "Automatikus visszautas鱈t叩s a partnerlist叩n nem szerepl� felhaszn叩l坦kt坦l" msgid "" "Notify with a popup when an autoaccepted file transfer is complete\n" @@ -2454,8 +2437,7 @@ msgid "" "You are currently disconnected. Messages will not be received unless you are " "logged in." -msgstr "" -"Jelenleg nincs csatlakozva. Nem fogadhat 端zeneteket, am鱈g nem jelentkezik be." +msgstr "Jelenleg nincs csatlakozva. Nem fogadhat 端zeneteket, am鱈g nem jelentkezik be." msgid "Message could not be sent because the maximum length was exceeded." msgstr "Az 端zenet nem k端ldhet� el, mivel a maxim叩lis hossz el lett 辿rve." @@ -2829,10 +2811,8 @@ msgid "Unable to listen for incoming IM connections\n" msgstr "Nem lehets辿ges a bej旦v� azonnali 端zen� kapcsolatokat figyelni\n" -msgid "" -"Unable to establish connection with the local mDNS server. Is it running?" -msgstr "" -"Nem hozhat坦 l辿tre kapcsolat a helyi mDNS kiszolg叩l坦val. Egy叩ltal叩n fut?" +msgid "Unable to establish connection with the local mDNS server. Is it running?" +msgstr "Nem hozhat坦 l辿tre kapcsolat a helyi mDNS kiszolg叩l坦val. Egy叩ltal叩n fut?" #. Creating the options for the protocol msgid "First name" @@ -3499,8 +3479,7 @@ msgstr "nickserv: parancs k端ld辿se a nickserv kiszolg叩l坦nak" msgid "notice <target<: Send a notice to a user or channel." -msgstr "" -"notice <c辿l<: �rtes鱈t辿s k端ld辿se egy felhaszn叩l坦nak vagy csatorn叩nak." +msgstr "notice <c辿l<: �rtes鱈t辿s k端ld辿se egy felhaszn叩l坦nak vagy csatorn叩nak." msgid "" "op <nick1> [nick2] ...: Grant channel operator status to someone. You " @@ -3584,8 +3563,7 @@ "tudja." msgid "whois [server] <nick>: Get information on a user." -msgstr "" -"whois [kiszolg叩l坦] <becen辿v>: Inform叩ci坦k lek辿r辿se egy felhaszn叩l坦r坦l." +msgstr "whois [kiszolg叩l坦] <becen辿v>: Inform叩ci坦k lek辿r辿se egy felhaszn叩l坦r坦l." msgid "whowas <nick>: Get information on a user that has logged off." msgstr "" @@ -3623,8 +3601,7 @@ msgstr "Titkos鱈t叩st k辿r, de a TLS/SSL t叩mogat叩sa nem tal叩lhat坦." msgid "Server requires plaintext authentication over an unencrypted stream" -msgstr "" -"A kiszolg叩l坦 sz旦veges hiteles鱈t辿st k旦vetel meg egy nem titkos鱈tott csatorn叩n" +msgstr "A kiszolg叩l坦 sz旦veges hiteles鱈t辿st k旦vetel meg egy nem titkos鱈tott csatorn叩n" #, c-format msgid "" @@ -3957,8 +3934,7 @@ msgstr "Kiszolg叩l坦utas鱈t叩sok: %s" msgid "Fill in one or more fields to search for any matching XMPP users." -msgstr "" -"T旦lts旦n ki legal叩bb egy mez�t a megfelel� XMPP felhaszn叩l坦k keres辿s辿hez." +msgstr "T旦lts旦n ki legal叩bb egy mez�t a megfelel� XMPP felhaszn叩l坦k keres辿s辿hez." msgid "Email Address" msgstr "E-mail c鱈m" @@ -4116,8 +4092,7 @@ msgid "Unregister" msgstr "Regisztr叩ci坦 megsz端ntet辿se" -msgid "" -"Please fill out the information below to change your account registration." +msgid "Please fill out the information below to change your account registration." msgstr "Adja meg a k旦vetkez� inform叩ci坦kat a regisztr叩lt fi坦k m坦dos鱈t叩s叩hoz." msgid "Please fill out the information below to register your new account." @@ -4491,8 +4466,7 @@ msgid "kick <user> [reason]: Kick a user from the room." msgstr "kick <felhaszn叩l坦> [ok]: Felhaszn叩l坦 kir炭g叩sa a szob叩b坦l." -msgid "" -"msg <user> <message>: Send a private message to another user." +msgid "msg <user> <message>: Send a private message to another user." msgstr "" "msg <felhaszn叩l坦> <端zenet>: Mag叩n端zenet k端ld辿se m叩sik " "felhaszn叩l坦nak." @@ -4543,7 +4517,6 @@ #. this should probably be part of global smiley theme settings later on, #. shared with MSN -#, fuzzy msgid "Show Custom Smileys" msgstr "Egy辿ni hangulatjelek megjelen鱈t辿se" @@ -4915,13 +4888,11 @@ msgid "MSN Error: %s\n" msgstr "MSN hiba: %s\n" -#, fuzzy msgid "Other Contacts" -msgstr "El�nyben r辿szes鱈tett kapcsolat" - -#, fuzzy +msgstr "Egy辿b partnerek" + msgid "Non-IM Contacts" -msgstr "Kapcsolat elt叩vol鱈t叩sa" +msgstr "Nem azonnali 端zenetv叩lt叩si partnerek" msgid "Nudge" msgstr "B旦k辿s" @@ -4979,8 +4950,7 @@ msgstr "Nincs tiltott sz旦veg ehhez a fi坦khoz." #, c-format -msgid "" -"MSN servers are currently blocking the following regular expressions:<br/>%s" +msgid "MSN servers are currently blocking the following regular expressions:<br/>%s" msgstr "" "Az MSN kiszolg叩l坦k jelenleg a k旦vetkez� regul叩ris kifejez辿seket tiltj叩k:<br/>" "%s" @@ -5021,7 +4991,7 @@ #. primitive #. ID #. name - use default -#. savable +#. saveable #. should be user_settable some day #. independent msgid "Artist" @@ -5234,8 +5204,7 @@ #. *< id #. *< name #. *< version -#. * summary -#. * description +#. *< summary msgid "Windows Live Messenger Protocol Plugin" msgstr "Windows Live Messenger protokollb�v鱈tm辿ny" @@ -5272,6 +5241,7 @@ msgid "%s just sent you a Nudge!" msgstr "%s megb旦kte!" +#. char *adl = g_strndup(payload, len); #, c-format msgid "Unknown error (%d)" msgstr "Ismeretlen hiba (%d)" @@ -5279,9 +5249,8 @@ msgid "Unable to add user" msgstr "Nem vehet� fel a felhaszn叩l坦" -#, fuzzy msgid "The following users are missing from your addressbook" -msgstr "A keres辿s eredm辿nyei a k旦vetkez�k" +msgstr "A k旦vetkez� felhaszn叩l坦k hi叩nyoznak a c鱈mjegyz辿k辿b�l" #, c-format msgid "Unable to add user on %s (%s)" @@ -5397,8 +5366,7 @@ msgid "Unable to authenticate: %s" msgstr "Nem siker端lt a hiteles鱈t辿s: %s" -msgid "" -"Your MSN buddy list is temporarily unavailable. Please wait and try again." +msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again." msgstr "" "Az �n MSN partnerlist叩ja 叩tmenetileg nem 辿rhet� el. K辿rem v叩rjon 辿s pr坦b叩lja " "炭jra k辿s�bb." @@ -5431,8 +5399,7 @@ msgstr "Eb辿delni mentem" msgid "Message may have not been sent because a timeout occurred:" -msgstr "" -"Id�t炭ll辿p辿s k旦vetkezett be, emiatt az 端zenet lehet, hogy nem lett elk端ldve:" +msgstr "Id�t炭ll辿p辿s k旦vetkezett be, emiatt az 端zenet lehet, hogy nem lett elk端ldve:" msgid "Message could not be sent, not allowed while invisible:" msgstr "Az 端zenet nem k端ldhet� el, l叩thatatlan m坦dban nem enged辿lyezett:" @@ -5454,8 +5421,7 @@ "kiszolg叩l坦val. Ez val坦sz鱈n撤leg kiszolg叩l坦hiba, p叩r perc m炭lva pr坦b叩lkozzon " "炭jra:" -msgid "" -"Message could not be sent because an error with the switchboard occurred:" +msgid "Message could not be sent because an error with the switchboard occurred:" msgstr "Az 端zenet nem k端ldhet� el, mivel hiba l辿pett fel a k旦zvet鱈t辿s k旦zben:" msgid "Message may have not been sent because an unknown error occurred:" @@ -5469,13 +5435,11 @@ msgid "%s has removed you from his or her buddy list." msgstr "%s elt叩vol鱈totta �nt a partnerlist叩j叩r坦l." -#, fuzzy msgid "Delete Buddy from Address Book?" -msgstr "Hozz叩ad叩s a c鱈mjegyz辿khez" - -#, fuzzy +msgstr "T旦rli a partnert a c鱈mjegyz辿kb�l?" + msgid "Do you want to delete this buddy from your address book as well?" -msgstr "Fel k鱈v叩nja venni ezt a partnert a list叩j叩ra?" +msgstr "T旦r旦lni k鱈v叩nja a partnert a c鱈mjegyz辿k辿b�l is?" #. only notify the user about problems adding to the friends list #. * maybe we should do something else for other lists, but it probably @@ -5953,8 +5917,7 @@ msgid "" "This evaluation version does not allow more than ten users to log in at one " "time" -msgstr "" -"Ez a pr坦baverzi坦 nem enged辿lyezi t鱈zn辿l t旦bb felhaszn叩l坦 egyidej撤 bel辿p辿s辿t" +msgstr "Ez a pr坦baverzi坦 nem enged辿lyezi t鱈zn辿l t旦bb felhaszn叩l坦 egyidej撤 bel辿p辿s辿t" msgid "The user is either offline or you are blocked" msgstr "A felhaszn叩l坦 kil辿pett, vagy �n le van tiltva" @@ -5994,8 +5957,7 @@ #, c-format msgid "Unable to send message. Could not create the conference (%s)." -msgstr "" -"Az 端zenetet nem lehet elk端ldeni. Nem siker端lt l辿trehozni a konferenci叩t (%s)." +msgstr "Az 端zenetet nem lehet elk端ldeni. Nem siker端lt l辿trehozni a konferenci叩t (%s)." #, c-format msgid "" @@ -6035,8 +5997,7 @@ #, c-format msgid "Unable to change server side privacy settings (%s)." -msgstr "" -"Nem lehet megv叩ltoztatni a kiszolg叩l坦oldali mag叩nszf辿ra-be叩ll鱈t叩sokat (%s)." +msgstr "Nem lehet megv叩ltoztatni a kiszolg叩l坦oldali mag叩nszf辿ra-be叩ll鱈t叩sokat (%s)." #, c-format msgid "Unable to create conference (%s)." @@ -6100,12 +6061,10 @@ msgstr "Szeretne csatlakozni a t叩rsalg叩shoz?" msgid "You have been logged out because you logged in at another workstation." -msgstr "" -"Ki lett jelentkeztetve, mivel bejelentkezett egy m叩sik munka叩llom叩sr坦l." - -#, c-format -msgid "" -"%s appears to be offline and did not receive the message that you just sent." +msgstr "Ki lett jelentkeztetve, mivel bejelentkezett egy m叩sik munka叩llom叩sr坦l." + +#, c-format +msgid "%s appears to be offline and did not receive the message that you just sent." msgstr "�gy t撤nik, %s kil辿pett, 辿s nem kapta meg az utolj叩ra k端ld旦tt 端zenetet." msgid "" @@ -6449,6 +6408,7 @@ "tartalmazhatnak." #. Unregistered screen name +#. uid is not exist msgid "Invalid username." msgstr "�rv辿nytelen felhaszn叩l坦n辿v." @@ -6556,8 +6516,7 @@ #. Someone has granted you authorization #, c-format msgid "The user %u has granted your request to add them to your buddy list." -msgstr "" -"%u felhaszn叩l坦 elfogadta a k辿r辿s辿t, 鱈gy felveheti �t a partnerlist叩j叩ra." +msgstr "%u felhaszn叩l坦 elfogadta a k辿r辿s辿t, 鱈gy felveheti �t a partnerlist叩j叩ra." #, c-format msgid "" @@ -6611,27 +6570,21 @@ #, c-format msgid "You missed %hu message from %s because it was invalid." msgid_plural "You missed %hu messages from %s because they were invalid." -msgstr[0] "" -"Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az 辿rv辿nytelen volt." -msgstr[1] "" -"Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az 辿rv辿nytelen volt." +msgstr[0] "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az 辿rv辿nytelen volt." +msgstr[1] "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az 辿rv辿nytelen volt." #, c-format msgid "You missed %hu message from %s because it was too large." msgid_plural "You missed %hu messages from %s because they were too large." -msgstr[0] "" -"Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az t炭l nagy volt." -msgstr[1] "" -"Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az t炭l nagy volt." +msgstr[0] "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az t炭l nagy volt." +msgstr[1] "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az t炭l nagy volt." # #: ../src/protocols/oscar/oscar.c:1605 # #, c-format # msgid "You missed %d message from %s because the rate limit has been exceeded." #, c-format -msgid "" -"You missed %hu message from %s because the rate limit has been exceeded." -msgid_plural "" -"You missed %hu messages from %s because the rate limit has been exceeded." +msgid "You missed %hu message from %s because the rate limit has been exceeded." +msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded." msgstr[0] "" "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert t炭ll辿pte a k端ld辿s " "gyakoris叩g叩nak a korl叩tj叩t." @@ -6640,10 +6593,8 @@ "gyakoris叩g叩nak a korl叩tj叩t." #, c-format -msgid "" -"You missed %hu message from %s because his/her warning level is too high." -msgid_plural "" -"You missed %hu messages from %s because his/her warning level is too high." +msgid "You missed %hu message from %s because his/her warning level is too high." +msgid_plural "You missed %hu messages from %s because his/her warning level is too high." msgstr[0] "" "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert a felad坦 " "figyelmeztet辿si szintje t炭l magas volt." @@ -6653,8 +6604,7 @@ #, c-format msgid "You missed %hu message from %s because your warning level is too high." -msgid_plural "" -"You missed %hu messages from %s because your warning level is too high." +msgid_plural "You missed %hu messages from %s because your warning level is too high." msgstr[0] "" "Nem kapott meg %hu 端zenetet a k旦vetkez�t�l: %s, mert az �n figyelmeztet辿si " "szintje t炭l magas." @@ -6818,8 +6768,7 @@ msgid "Account Info" msgstr "Fi坦kinform叩ci坦k" -msgid "" -"Your IM Image was not sent. You must be Direct Connected to send IM Images." +msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images." msgstr "" "Az �n IM k辿pe nem lett elk端ldve. IM k辿pek k端ld辿s辿hez k旦zvetlen kapcsolatban " "kell lennie." @@ -6843,10 +6792,8 @@ msgid_plural "" "The maximum profile length of %d bytes has been exceeded. It has been " "truncated for you." -msgstr[0] "" -"A profil m辿rete t炭ll辿pte a maxim叩lis %d b叩jtot. Ez csonk鱈t叩sra ker端lt." -msgstr[1] "" -"A profil m辿rete t炭ll辿pte a maxim叩lis %d b叩jtot. Ez csonk鱈t叩sra ker端lt." +msgstr[0] "A profil m辿rete t炭ll辿pte a maxim叩lis %d b叩jtot. Ez csonk鱈t叩sra ker端lt." +msgstr[1] "A profil m辿rete t炭ll辿pte a maxim叩lis %d b叩jtot. Ez csonk鱈t叩sra ker端lt." msgid "Profile too long." msgstr "A profil t炭l hossz炭." @@ -6879,10 +6826,10 @@ "kezd�dni端k, 辿s bet撤ket, sz叩mokat 辿s sz坦k旦z旦ket, vagy csak sz叩mokb坦l " "叩llhatnak." -msgid "Unable To Add" +msgid "Unable to Add" msgstr "Nem siker端lt felvenni" -msgid "Unable To Retrieve Buddy List" +msgid "Unable to Retrieve Buddy List" msgstr "Nem lehet lek辿rni a partnerek list叩j叩t" msgid "" @@ -6948,8 +6895,7 @@ msgstr "_V叩lt叩s:" msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats." -msgstr "" -"Az �n IM k辿pe nem lett elk端ldve. Nem k端ldhet IM k辿peket AIM cseveg辿sekbe." +msgstr "Az �n IM k辿pe nem lett elk端ldve. Nem k端ldhet IM k辿peket AIM cseveg辿sekbe." msgid "iTunes Music Store Link" msgstr "iTunes zenebolt hivatkoz叩s" @@ -7081,8 +7027,7 @@ #, c-format msgid "Asking %s to connect to us at %s:%hu for Direct IM." -msgstr "" -"%s felk辿r辿se, hogy kapcsol坦djon hozz叩nk ezen: %s:%hu k旦zvetlen kapcsolattal." +msgstr "%s felk辿r辿se, hogy kapcsol坦djon hozz叩nk ezen: %s:%hu k旦zvetlen kapcsolattal." #, c-format msgid "Attempting to connect to %s:%hu." @@ -7105,42 +7050,6 @@ "k辿pekhez. Ezzel l叩that坦v叩 v叩lik az IP c鱈me, ami vesz辿lyeztetheti a " "mag叩nszf辿r叩ja biztons叩g叩t." -msgid "Primary Information" -msgstr "Els�dleges inform叩ci坦k" - -msgid "Personal Introduction" -msgstr "Szem辿lyes bemutatkoz叩s" - -msgid "QQ Number" -msgstr "QQ sz叩m" - -msgid "Country/Region" -msgstr "Orsz叩g/ter端let" - -msgid "Province/State" -msgstr "Megye/叩llam" - -msgid "Horoscope Symbol" -msgstr "Horoszk坦p szimb坦lum" - -msgid "Zodiac Sign" -msgstr "Zodi叩kus jel" - -msgid "Blood Type" -msgstr "V辿rcsoport" - -msgid "College" -msgstr "F�iskola" - -msgid "Zipcode" -msgstr "Ir叩ny鱈t坦sz叩m" - -msgid "Cellphone Number" -msgstr "Mobil telefonsz叩m" - -msgid "Phone Number" -msgstr "Telefonsz叩m" - msgid "Aquarius" msgstr "V鱈z旦nt�" @@ -7216,186 +7125,228 @@ msgid "Other" msgstr "Egy辿b" -#, fuzzy -msgid "Modify information" +msgid "Visible" +msgstr "L叩that坦" + +msgid "Firend Only" +msgstr "Csak bar叩t" + +msgid "Private" +msgstr "Mag叩njelleg撤" + +msgid "QQ Number" +msgstr "QQ sz叩m" + +msgid "Country/Region" +msgstr "Orsz叩g/ter端let" + +msgid "Province/State" +msgstr "Megye/叩llam" + +msgid "Zipcode" +msgstr "Ir叩ny鱈t坦sz叩m" + +msgid "Phone Number" +msgstr "Telefonsz叩m" + +msgid "Authorize adding" +msgstr "Felv辿tel enged辿lyez辿se" + +msgid "Cellphone Number" +msgstr "Mobil telefonsz叩m" + +msgid "Personal Introduction" +msgstr "Szem辿lyes bemutatkoz叩s" + +msgid "City/Area" +msgstr "V叩ros/ter端let" + +msgid "Publish Mobile" +msgstr "Mobil k旦zz辿t辿tele" + +msgid "Publish Contact" +msgstr "Kapcsolat k旦zz辿t辿tele" + +msgid "College" +msgstr "F�iskola" + +msgid "Horoscope" +msgstr "Horoszk坦p" + +msgid "Zodiac" +msgstr "Zodi叩kus" + +msgid "Blood" +msgstr "V辿rcsoport" + +msgid "True" +msgstr "Igaz" + +msgid "False" +msgstr "Hamis" + +msgid "Modify Contact" +msgstr "Partner m坦dos鱈t叩sa" + +msgid "Modify Address" +msgstr "C鱈m m坦dos鱈t叩sa" + +msgid "Modify Extended Information" +msgstr "B�v鱈tett inform叩ci坦k m坦dos鱈t叩sa" + +msgid "Modify Information" msgstr "Inform叩ci坦k m坦dos鱈t叩sa" -#, fuzzy -msgid "Update information" -msgstr "Inform叩ci坦k friss鱈t辿se" - -#. 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 partner" - -msgid "Successed:" -msgstr "Sikeres:" - -msgid "Change buddy information." -msgstr "Partnerinform叩ci坦k m坦dos鱈t叩sa." - -#, c-format -msgid "" -"Setting custom faces is not currently supported. Please choose an image from " -"%s." -msgstr "" -"Az egy辿ni arck辿pek be叩ll鱈t叩sa jelenleg nem t叩mogatott. V叩lasszon egy k辿pet " -"innen: %s." - -msgid "Invalid QQ Face" -msgstr "�rv辿nytelen QQ arck辿p" - -#, c-format -msgid "You rejected %d's request" -msgstr "Visszautas鱈totta %d k辿r辿s辿t" - -msgid "Reject request" -msgstr "K辿r辿s visszautas鱈t叩sa" - -#. title -#, fuzzy -msgid "Sorry, you are not my style..." +msgid "Update" +msgstr "Friss鱈t辿s" + +msgid "Could not change buddy information." +msgstr "A partnerinform叩ci坦k nem m坦dos鱈that坦k." + +#, c-format +msgid "%d needs Q&A" +msgstr "%d Q&A-t ig辿nyel" + +msgid "Add buddy Q&A" +msgstr "Partner Q&A hozz叩ad叩sa" + +msgid "Input answer here" +msgstr "�rja be ide a v叩lasz叩t" + +msgid "Send" +msgstr "K端ld辿s" + +msgid "Invalid answer." +msgstr "�rv辿nytelen v叩lasz." + +msgid "Authorization denied message:" +msgstr "Hozz叩f辿r辿s elutas鱈tva 端zenet:" + +msgid "Sorry, You are not my style." msgstr "Bocs, nem vagy az esetem��" -msgid "Add buddy with auth request failed" -msgstr "A partner felv辿tele felhatalmaz叩si k辿r辿ssel meghi炭sult" - -msgid "Failed:" -msgstr "Sikertelen:" - -msgid "Remove buddy" -msgstr "Partner t旦rl辿se" - -msgid "Remove from other's buddy list" -msgstr "Elt叩vol鱈t叩s m叩sok partnerlist叩j叩r坦l" - -#, fuzzy, c-format +#, c-format msgid "%d needs authentication" msgstr "A(z) %d felhaszn叩l坦 felhatalmaz叩st k辿r" +msgid "Add buddy authorize" +msgstr "Partnerenged辿lyez辿s felv辿tele" + msgid "Input request here" msgstr "�rja be ide k辿r辿s辿t" -#. TODO: Awkward string to fix post string freeze - standardize auth dialogues? -evands msgid "Would you be my friend?" msgstr "Lesz端nk bar叩tok?" -#. multiline -#. masked -#. hint -msgid "Send" -msgstr "K端ld辿s" - -#, c-format -msgid "Add into %d's buddy list" -msgstr "Hozz叩ad叩s %d partnerlist叩j叩hoz" - -msgid "QQ Number Error" -msgstr "QQ sz叩mhiba" +msgid "QQ Buddy" +msgstr "QQ partner" + +msgid "Add buddy" +msgstr "Partner hozz叩ad叩sa" msgid "Invalid QQ Number" msgstr "�rv辿nytelen QQ sz叩m" +msgid "Failed sending authorize" +msgstr "Az enged辿ly k端ld辿se meghi炭sult" + +#, c-format +msgid "Failed removing buddy %d" +msgstr "A partner (%d) elt叩vol鱈t叩sa meghi炭sult" + +#, c-format +msgid "Failed removing me from %d's buddy list" +msgstr "Az elt叩vol鱈t叩som %d partnerlist叩j叩r坦l meghi炭sult" + +msgid "No reason given" +msgstr "Nincs ok megadva" + +#. only need to get value +#, c-format +msgid "You have been added by %s" +msgstr "%s felvette" + +msgid "Would you like to add him?" +msgstr "Szeretn辿 felvenni?" + +#, c-format +msgid "Rejected by %s" +msgstr "%s visszautas鱈totta" + +#, c-format +msgid "Message: %s" +msgstr "�zenet: %s" + msgid "ID: " msgstr "Azonos鱈t坦: " msgid "Group ID" msgstr "Csoportazonos鱈t坦" -msgid "Creator" -msgstr "L辿trehoz坦" - -msgid "Group Description" -msgstr "Csoportle鱈r叩s" - -msgid "Auth" -msgstr "Enged辿lyez辿s" - msgid "QQ Qun" msgstr "QQ Qun" msgid "Please enter Qun number" msgstr "Adja meg a Qun sz叩mot" -#, fuzzy msgid "You can only search for permanent Qun\n" msgstr "Csak 叩lland坦 Qun-t kereshet\n" -#, fuzzy, c-format -msgid "%d request to join Qun %d" -msgstr "A(z) %d felhaszn叩l坦 csatlakozni szeretne a(z) %d Qun-hoz" - -#, c-format -msgid "Message: %s" -msgstr "�zenet: %s" +msgid "Not member" +msgstr "Nem tag" + +msgid "Member" +msgstr "Tag" + +msgid "Requesting" +msgstr "K辿r辿s" + +msgid "Admin" +msgstr "Rendszergazda" + +msgid "Notice" +msgstr "Megjegyz辿s" + +msgid "Detail" +msgstr "R辿szletek" + +msgid "Creator" +msgstr "L辿trehoz坦" + +msgid "About me" +msgstr "A n辿vjegyem" + +msgid "Category" +msgstr "Kateg坦ria" + +msgid "The Qun does not allow others to join" +msgstr "Ez a Qun nem enged辿lyezi m叩sok csatlakoz叩s叩t" + +msgid "Join QQ Qun" +msgstr "Csatlakoz叩s QQ Qun-hoz" + +#, c-format +msgid "Successfully joined Qun %s (%d)" +msgstr "Sikeresen csatlakozott a(z) %s Qun-hoz (%d)" + +msgid "Successfully joined Qun" +msgstr "Sikeresen csatlakozott a Qun-hoz" + +#, c-format +msgid "Qun %d denied to join" +msgstr "A Qun (%d) megtagadta a csatlakoz叩st" msgid "QQ Qun Operation" msgstr "QQ Qun m撤velet" -msgid "Approve" -msgstr "J坦v叩hagy叩s" - -#, fuzzy, c-format -msgid "Failed to join Qun %d, operated by admin %d" -msgstr "Partner csatlakoztat叩sa a cseveg辿shez sikertelen" - -#, fuzzy, c-format -msgid "Successed to join Qun %d, operated by admin %d" -msgstr "Partner csatlakoztat叩sa a cseveg辿shez sikertelen" - -#, fuzzy, c-format -msgid "[%d] removed from Qun \"%d\"" -msgstr "�n [%d] kil辿pett a k旦vetkez� csoportb坦l: ��%d��" - -#, fuzzy -msgid "Notice:" -msgstr "Megjegyz辿s" - -#, fuzzy, c-format -msgid "[%d] added to Qun \"%d\"" -msgstr "�n [%d] kil辿pett a k旦vetkez� csoportb坦l: ��%d��" - -msgid "I am not a member" -msgstr "Nem vagyok tag" - -msgid "I am a member" -msgstr "Tag vagyok" - -#, fuzzy -msgid "I am requesting" -msgstr "Hib叩s k辿r辿s" - -msgid "I am the admin" -msgstr "Admin vagyok" - -msgid "Unknown status" -msgstr "Ismeretlen 叩llapot" - -#, fuzzy -msgid "The Qun does not allow others to join" -msgstr "Ez a csoport nem enged辿lyezi m叩sok csatlakoz叩s叩t" - -#, fuzzy -msgid "Remove from Qun" -msgstr "Csoport t旦rl辿se" - -#, fuzzy -msgid "Join to Qun" -msgstr "Csatlakoz叩s cseveg辿shez" - -#, c-format -msgid "Qun %d denied to join" -msgstr "" +msgid "Failed:" +msgstr "Sikertelen:" msgid "Join Qun, Unknow Reply" -msgstr "" - -msgid "You entered a group ID outside the acceptable range" -msgstr "Az elfogadhat坦 tartom叩nyon k鱈v端li csoportazonos鱈t坦t adott meg" - -msgid "Are you sure you want to leave this Qun?" -msgstr "Biztos, hogy el k鱈v叩nja hagyni ezt a Qun-t?" +msgstr "Csatlakoz叩s Qun-hoz, ismeretlen v叩lasz" + +msgid "Quit Qun" +msgstr "Kil辿p辿s a Qun-b坦l" msgid "" "Note, if you are the creator, \n" @@ -7404,44 +7355,47 @@ "Ne feledje, ha �n hozta l辿tre,\n" "akkor ez a m撤velet t旦rli a Qun-t." -#. we want to see window -msgid "Do you want to approve the request?" -msgstr "J坦v叩 k鱈v叩nja hagyni a k辿r辿st?" - -#, fuzzy -msgid "Change Qun member" -msgstr "Telefonsz叩m" - -#, fuzzy -msgid "Change Qun information" -msgstr "Csatornainform叩ci坦k" +msgid "Sorry, you are not our style ..." +msgstr "Bocs, nem vagy az eset端nk��" + +msgid "Successfully changed Qun member" +msgstr "Sikeresen m坦dos鱈tott egy Qun tagot" + +msgid "Successfully changed Qun information" +msgstr "Sikeresen m坦dos鱈totta a Qun inform叩ci坦kat" msgid "You have successfully created a Qun" msgstr "Sikeresen l辿trehozott egy Qun-t" -#, fuzzy -msgid "Would you like to set up the detail information now?" -msgstr "Be k鱈v叩nja 叩ll鱈tani most a Qun r辿szleteit?" +msgid "Would you like to set detailed information now?" +msgstr "Be k鱈v叩nja 叩ll鱈tani most a r辿szletes inform叩ci坦kat?" msgid "Setup" msgstr "Be叩ll鱈t叩s" -#, fuzzy, c-format -msgid "" -"%s\n" -"\n" -"%s" -msgstr "%s (%s)" - -#, fuzzy -msgid "QQ Server News" -msgstr "ICQ k旦zvet鱈t� kiszolg叩l坦" - -msgid "System Message" -msgstr "Rendszer端zenet" - -msgid "Failed to send IM." -msgstr "Az azonnali 端zenet k端ld辿se meghi炭sult." +#, c-format +msgid "%d requested to join Qun %d for %s" +msgstr "A(z) %d felhaszn叩l坦 csatlakozni szeretne a(z) %d Qun-hoz, ok: %s" + +#, c-format +msgid "%d request to join Qun %d" +msgstr "A(z) %d felhaszn叩l坦 csatlakozni szeretne a(z) %d Qun-hoz" + +#, c-format +msgid "Failed to join Qun %d, operated by admin %d" +msgstr "A csatlakoz叩s sikertelen a(z) %d Qun-hoz, amelyet %d admin m撤k旦dtet" + +#, c-format +msgid "<b>Joining Qun %d is approved by admin %d for %s</b>" +msgstr "<b>A csatlakoz叩st a Qun-hoz (%d) j坦v叩hagyta %d admin %s sz叩m叩ra</b>" + +#, c-format +msgid "<b>Removed buddy %d.</b>" +msgstr "<b>%d partner elt叩vol鱈tva.</b>" + +#, c-format +msgid "<b>New buddy %d joined.</b>" +msgstr "<b>�j partner (%d) csatlakozott.</b>" #, c-format msgid "Unknown-%d" @@ -7450,9 +7404,6 @@ msgid "Level" msgstr "Szint" -msgid "Member" -msgstr "Tag" - msgid " VIP" msgstr " VIP" @@ -7468,9 +7419,8 @@ msgid " Video" msgstr " Vide坦" -#, fuzzy msgid " Zone" -msgstr "Nincs" +msgstr " z坦na" msgid "Flag" msgstr "Jelz�" @@ -7481,77 +7431,104 @@ msgid "Invalid name" msgstr "�rv辿nytelen n辿v" -#, c-format -msgid "<b>Current Online</b>: %d<br>\n" -msgstr "<b>Jelenleg el辿rhet�</b>: %d<br>\n" - -#, c-format -msgid "<b>Last Refresh</b>: %s<br>\n" -msgstr "<b>Utols坦 friss鱈t辿s</b>: %s<br>\n" - -#, fuzzy, c-format +msgid "Select icon..." +msgstr "V叩lasszon ikont��" + +#, c-format +msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n" +msgstr "<b>Bejelentkez辿s ideje</b>: %d-%d-%d, %d:%d:%d<br>\n" + +#, c-format +msgid "<b>Total Online Buddies</b>: %d<br>\n" +msgstr "<b>El辿rhet� partnerek 旦sszesen</b>: %d<br>\n" + +#, c-format +msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n" +msgstr "<b>Utols坦 friss鱈t辿s</b>: %d-%d-%d, %d:%d:%d<br><br>\n" + +#, c-format msgid "<b>Server</b>: %s<br>\n" -msgstr "<b>Kiszolg叩l坦</b>: %s: %d<br>\n" +msgstr "<b>Kiszolg叩l坦</b>: %s<br>\n" + +#, c-format +msgid "<b>Client Tag</b>: %s<br>\n" +msgstr "<b>Kliensc鱈mke</b>: %s<br>\n" #, c-format msgid "<b>Connection Mode</b>: %s<br>\n" msgstr "<b>Kapcsolat m坦dja</b>: %s<br>\n" -#, fuzzy, c-format -msgid "<b>My Internet Address</b>: %s<br>\n" -msgstr "<b>Kapcsolat m坦dja</b>: %s<br>\n" - -#, fuzzy, c-format +#, c-format +msgid "<b>My Internet IP</b>: %s:%d<br>\n" +msgstr "<b>IP-c鱈mem</b>: %s:%d<br>\n" + +#, c-format msgid "<b>Sent</b>: %lu<br>\n" -msgstr "<b>Kiszolg叩l坦</b>: %s: %d<br>\n" - -#, fuzzy, c-format +msgstr "<b>Elk端ldve</b>: %lu<br>\n" + +#, c-format msgid "<b>Resend</b>: %lu<br>\n" -msgstr "<b>Kiszolg叩l坦</b>: %s: %d<br>\n" - -#, fuzzy, c-format +msgstr "<b>�jrak端ld辿s</b>: %lu<br>\n" + +#, c-format msgid "<b>Lost</b>: %lu<br>\n" -msgstr "<b>Utols坦 friss鱈t辿s</b>: %s<br>\n" - -#, fuzzy, c-format +msgstr "<b>Elveszett</b>: %lu<br>\n" + +#, c-format msgid "<b>Received</b>: %lu<br>\n" -msgstr "<b>Kiszolg叩l坦</b>: %s: %d<br>\n" - -#, fuzzy, c-format +msgstr "<b>Fogadott</b>: %lu<br>\n" + +#, c-format msgid "<b>Received Duplicate</b>: %lu<br>\n" -msgstr "<b>Nyilv叩nos IP c鱈mem</b>: %s<br>\n" - -#, c-format -msgid "<b>Login Time</b>: %s<br>\n" -msgstr "<b>Bejelentkez辿s ideje</b>: %s<br>\n" - -#, c-format -msgid "<b>Last Login IP</b>: %s<br>\n" -msgstr "<b>Utols坦 bejelentkez辿si IP</b>: %s<br>\n" - -#, c-format -msgid "<b>Last Login Time</b>: %s\n" -msgstr "<b>Utols坦 bejelentkez辿s ideje</b>: %s\n" +msgstr "<b>M叩sodp辿ld叩ny 辿rkezett</b>: %lu<br>\n" + +#, c-format +msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n" +msgstr "<b>Id�</b>: %d-%d-%d, %d:%d:%d<br>\n" + +#, c-format +msgid "<b>IP</b>: %s<br>\n" +msgstr "<b>IP</b>: %s<br>\n" msgid "Login Information" msgstr "Bejelentkez辿si inform叩ci坦k" -msgid "Set My Information" -msgstr "Saj叩t inform叩ci坦k be叩ll鱈t叩sa" +msgid "<p><b>Original Author</b>:<br>\n" +msgstr "<p><b>Eredeti szerz�</b>:<br>\n" + +msgid "<p><b>Code Contributors</b>:<br>\n" +msgstr "<p><b>K旦zrem撤k旦d�k</b>:<br>\n" + +msgid "<p><b>Lovely Patch Writers</b>:<br>\n" +msgstr "<p><b>Jav鱈t叩sok</b>:<br>\n" + +msgid "<p><b>Acknowledgement</b>:<br>\n" +msgstr "<p><b>K旦sz旦netnyilv叩n鱈t叩s</b>:<br>\n" + +msgid "<p><i>And, all the boys in the backroom...</i><br>\n" +msgstr "<p><i>辿s a h叩tt辿remberek...</i><br>\n" + +msgid "<i>Feel free to join us!</i> :)" +msgstr "<i>csatlakozzon b叩tran</i> :)" + +#, c-format +msgid "About OpenQ r%s" +msgstr "Az OpenQ r%s n辿vjegye" + +msgid "Change Icon" +msgstr "Ikon m坦dos鱈t叩sa" msgid "Change Password" msgstr "Jelsz坦 m坦dos鱈t叩sa" -#, fuzzy msgid "Account Information" -msgstr "Az azonos鱈t坦 jellemz�i" - -#, fuzzy -msgid "Leave the QQ Qun" -msgstr "Kil辿p辿s ebb�l a QQ Qun-b�l" - -msgid "Block this buddy" -msgstr "A partner tilt叩sa" +msgstr "Fi坦kinform叩ci坦k" + +msgid "Update all QQ Quns" +msgstr "Minden QQ Qun friss鱈t辿se" + +msgid "About OpenQ" +msgstr "Az OpenQ n辿vjegye" #. *< type #. *< ui_requirement @@ -7563,60 +7540,103 @@ #. *< version #. * summary #. * description -msgid "QQ Protocol\tPlugin" -msgstr "QQ protokoll\tb�v鱈tm辿ny" - -#, fuzzy +msgid "QQ Protocol Plugin" +msgstr "QQ protokollb�v鱈tm辿ny" + msgid "Auto" msgstr "Auto" -#, fuzzy +msgid "Select Server" +msgstr "V叩lassza ki a kiszolg叩l坦t" + +msgid "QQ2005" +msgstr "QQ2005" + +msgid "QQ2007" +msgstr "QQ2007" + +msgid "QQ2008" +msgstr "QQ2008" + +#. #endif msgid "Connect by TCP" msgstr "Kapcsol坦d叩s TCP seg鱈ts辿g辿vel" -#, fuzzy msgid "Show server notice" -msgstr "Kiszolg叩l坦 portja" - -#, fuzzy +msgstr "Kiszolg叩l坦megjegyz辿s megjelen鱈t辿se" + msgid "Show server news" -msgstr "Kiszolg叩l坦 c鱈me" - -msgid "Keep alive interval(s)" -msgstr "Kapcsolat-fenntart叩si id�k旦z" - -msgid "Update interval(s)" -msgstr "Friss鱈t辿si id�k旦z" - -#, c-format -msgid "Invalid token reply code, 0x%02X" -msgstr "�rv辿nytelen jelsorv叩laszk坦d, 0x%02X" +msgstr "Kiszolg叩l坦h鱈rek megjelen鱈t辿se" + +msgid "Keep alive interval (seconds)" +msgstr "Kapcsolat-fenntart叩si id�k旦z (mp)" + +msgid "Update interval (seconds)" +msgstr "Friss鱈t辿si id�k旦z (mp)" + +msgid "Can not decrypt server reply" +msgstr "Nem fejthet� vissza a kiszolg叩l坦 v叩lasza" + +msgid "Can not decrypt get server reply" +msgstr "Nem fejthet� vissza a kiszolg叩l坦lek辿rdez辿s v叩lasza" + +#, c-format +msgid "Failed requesting token, 0x%02X" +msgstr "A jelsor lek辿r辿se meghi炭sult: 0x%02X" #, c-format msgid "Invalid token len, %d" msgstr "�rv辿nytelen jelsorhossz: %d" -msgid "Unable login for not support Redirect_EX now" -msgstr "" - -#, fuzzy, c-format -msgid "Error password: %s" -msgstr "Hiba a jelsz坦 m坦dos鱈t叩sakor" - -#, c-format -msgid "Need active: %s" -msgstr "" - -#, fuzzy, c-format -msgid "Unable login for unknow reply code 0x%02X" -msgstr "�rv辿nytelen jelsorv叩laszk坦d, 0x%02X" +#. extend redirect used in QQ2006 +msgid "Redirect_EX is not currently supported" +msgstr "A Redirect_EX jelenleg nem t叩mogatott" + +#. need activation +#. need activation +#. need activation +msgid "Activation required" +msgstr "Aktiv叩l叩s sz端ks辿ges" + +#, c-format +msgid "Unknow reply code when login (0x%02X)" +msgstr "Ismeretlen v叩laszk坦d bejelentkez辿skor (0x%02X)" msgid "Keep alive error" msgstr "Kapcsolat-fenntart叩si hiba" -#, fuzzy -msgid "Failed to connect all servers" -msgstr "Nem siker端lt a kiszolg叩l坦hoz kapcsol坦dni" +msgid "Requesting captcha ..." +msgstr "Captcha k辿r辿se��" + +msgid "Checking code of captcha ..." +msgstr "A captcha k坦dj叩nak ellen�rz辿se��" + +msgid "Failed captcha verify" +msgstr "A captcha ellen�rz辿se meghi炭sult" + +msgid "Captcha Image" +msgstr "Captcha k辿p" + +msgid "Enter code" +msgstr "Adja meg a k坦dot" + +msgid "QQ Captcha Verifing" +msgstr "QQ captcha ellen�rz辿s" + +msgid "Enter the text from the image" +msgstr "Adja meg a sz旦veget a k辿pr�l" + +#, c-format +msgid "Unknow reply code when checking password (0x%02X)" +msgstr "Ismeretlen v叩laszk坦d a jelsz坦 ellen�rz辿sekor (0x%02X)" + +#, c-format +msgid "" +"Unknow reply code when login (0x%02X):\n" +"%s" +msgstr "" +"Ismeretlen v叩laszk坦d bejelentkez辿skor (0x%02X):\n" +"%s" #. we didn't successfully connect. tdt->toc_fd is valid here msgid "Unable to connect." @@ -7642,54 +7662,77 @@ msgid "Connection lost" msgstr "A kapcsolat elveszett" -#. Update the login progress status display -#, fuzzy, c-format +msgid "Get server ..." +msgstr "Kiszolg叩l坦 lek辿rdez辿se��" + msgid "Request token" -msgstr "K辿r辿s elutas鱈tva" +msgstr "Jelsor k辿r辿se" msgid "Couldn't resolve host" msgstr "Nem siker端lt a kiszolg叩l坦 felold叩sa" -#, fuzzy msgid "Invalid server or port" -msgstr "�rv辿nytelen hiba" - -#, c-format -msgid "Connecting server %s, retries %d" -msgstr "Kapcsol坦d叩si a(z) %s kiszolg叩l坦hoz, 炭jrapr坦b叩lkoz叩s: %d" - -#, fuzzy +msgstr "�rv辿nytelen kiszolg叩l坦 vagy port" + +msgid "Connecting server ..." +msgstr "Kapcsol坦d叩s kiszolg叩l坦hoz��" + msgid "QQ Error" -msgstr "QQid hiba" - -#, fuzzy +msgstr "QQ hiba" + +msgid "Failed to send IM." +msgstr "Az azonnali 端zenet k端ld辿se meghi炭sult." + +#, c-format +msgid "" +"Server News:\n" +"%s\n" +"%s\n" +"%s" +msgstr "" +"Kiszolg叩l坦 h鱈rei:\n" +"%s\n" +"%s\n" +"%s" + +#, c-format +msgid "From %s:" +msgstr "Felad坦: %s:" + +#, c-format +msgid "" +"Server notice From %s: \n" +"%s" +msgstr "" +"Kiszolg叩l坦megjegyz辿s ett�l: %s\n" +"%s" + msgid "Unknow SERVER CMD" -msgstr "Ismeretlen ok" - -#, fuzzy, c-format +msgstr "Ismeretlen kiszolg叩l坦parancs" + +#, c-format msgid "" "Error reply of %s(0x%02X)\n" "Room %d, reply 0x%02X" msgstr "" -"V叩lasz: %s(0x%02X )\n" -"Elk端ldve: %s(0x%02X )\n" -"Szobaazonos鱈t坦: %d, v叩lasz: [0x%02X]: \n" -"%s" - -#, fuzzy +"Hiba %s(0x%02X) v叩lasz叩ban\n" +"Szoba: %d, v叩lasz: 0x%02X" + msgid "QQ Qun Command" -msgstr "Parancs" - -#, fuzzy, c-format -msgid "You are not a member of QQ Qun \"%s\"\n" -msgstr "�n nem tagja a k旦vetkez� csoportnak: ��%s��\n" +msgstr "QQ Qun parancs" + +#, c-format +msgid "Not a member of room \"%s\"\n" +msgstr "�n nem tagja a k旦vetkez� szob叩nak: ��%s��\n" msgid "Can not decrypt login reply" msgstr "Nem fejthet� vissza a bejelentkez辿si v叩lasz" -#, fuzzy -msgid "Unknow reply CMD" -msgstr "Ismeretlen ok" +msgid "Unknow LOGIN CMD" +msgstr "Ismeretlen bejelentkez辿si parancs" + +msgid "Unknow CLIENT CMD" +msgstr "Ismeretlen kliensparancs" #, c-format msgid "%d has declined the file %s" @@ -7702,63 +7745,6 @@ msgid "%d canceled the transfer of %s" msgstr "%d megszak鱈totta a(z) %s 叩tvitel辿t" -#, fuzzy -msgid "Do you approve the requestion?" -msgstr "J坦v叩 k鱈v叩nja hagyni a k辿r辿st?" - -#, fuzzy -msgid "Do you add the buddy?" -msgstr "Fel k鱈v叩nja venni ezt a partnert?" - -#. only need to get value -#, c-format -msgid "You have been added by %s" -msgstr "%s felvette" - -msgid "Would you like to add him?" -msgstr "Szeretn辿 felvenni?" - -#, fuzzy, c-format -msgid "%s added you [%s] to buddy list" -msgstr "%s felvette �nt a partnerlist叩j叩ra." - -#, fuzzy -msgid "QQ Budy" -msgstr "Partner" - -#, c-format -msgid "Requestion rejected by %s" -msgstr "" - -#, c-format -msgid "Requestion approved by %s" -msgstr "" - -#. TODO: this should go through purple_account_request_authorization() -#, c-format -msgid "%s wants to add you [%s] as a friend" -msgstr "%s fel k鱈v叩nja venni �nt [%s] bar叩tk辿nt" - -#, fuzzy, c-format -msgid "%s is not in buddy list" -msgstr "%s nincs a partnerlist叩j叩n" - -#, fuzzy -msgid "Would you add?" -msgstr "Szeretn辿 felvenni?" - -#, fuzzy, c-format -msgid "From %s:" -msgstr "Felad坦 %s:" - -#, c-format -msgid "%s" -msgstr "%s" - -#, fuzzy -msgid "QQ Server Notice" -msgstr "Kiszolg叩l坦 portja" - msgid "Connection closed (writing)" msgstr "Kapcsolat lez叩rva (鱈r叩s)" @@ -7808,8 +7794,7 @@ msgstr "Szolg叩ltat叩sok ind鱈t叩sa" #, c-format -msgid "" -"A Sametime administrator has issued the following announcement on server %s" +msgid "A Sametime administrator has issued the following announcement on server %s" msgstr "" "Egy Sametime adminisztr叩tor a k旦vetkez� bejelent辿st adta ki a(z) %s " "kiszolg叩l坦n" @@ -8460,8 +8445,7 @@ msgstr "Titkos csatorna be叩ll鱈t叩sa" #, c-format -msgid "" -"You have to join the %s channel before you are able to join the private group" +msgid "You have to join the %s channel before you are able to join the private group" msgstr "" "Miel�tt csatlakozhatna a mag叩ncsoporthoz, csatlakoznia kell a(z) %s " "csatorn叩hoz" @@ -8529,8 +8513,7 @@ #, c-format msgid "<I>%s</I> set channel <I>%s</I> modes to: %s" -msgstr "" -"<I>%s</I> 叩t叩ll鱈totta a(z) <I>%s</I> csatorna 端zemm坦djait a k旦vetkez�kre: %s" +msgstr "<I>%s</I> 叩t叩ll鱈totta a(z) <I>%s</I> csatorna 端zemm坦djait a k旦vetkez�kre: %s" #, c-format msgid "<I>%s</I> removed all channel <I>%s</I> modes" @@ -8713,8 +8696,7 @@ #, c-format msgid "Received %s's public key. Would you like to accept this public key?" -msgstr "" -"%s nyilv叩nos kulcsa meg辿rkezett. El k鱈v叩nja fogadni ezt a nyilv叩nos kulcsot?" +msgstr "%s nyilv叩nos kulcsa meg辿rkezett. El k鱈v叩nja fogadni ezt a nyilv叩nos kulcsot?" #, c-format msgid "" @@ -8746,8 +8728,7 @@ msgid "Key Exchange failed" msgstr "Kulcscsere sikertelen" -msgid "" -"Resuming detached session failed. Press Reconnect to create new connection." +msgid "Resuming detached session failed. Press Reconnect to create new connection." msgstr "" "A lev叩lasztott folyamat folytat叩sa sikertelen. Kattintson az �jrakapcsol坦d叩s " "gombra egy 炭j kapcsolat l辿trehoz叩s叩hoz." @@ -8930,8 +8911,7 @@ msgstr "whois <becen辿v>: A becen辿vhez tartoz坦 inform叩ci坦k megjelen鱈t辿se" msgid "msg <nick> <message>: Send a private message to a user" -msgstr "" -"msg <becen辿v> <message>: Mag叩n端zenet k端ld辿se a felhaszn叩l坦nak" +msgstr "msg <becen辿v> <message>: Mag叩n端zenet k端ld辿se a felhaszn叩l坦nak" msgid "query <nick> [<message>]: Send a private message to a user" msgstr "" @@ -9000,12 +8980,10 @@ "csatorn叩r坦l" msgid "info [server]: View server administrative details" -msgstr "" -"info [kiszolg叩l坦]: A kiszolg叩l坦 adminisztr叩ci坦s r辿szleteinek megjelen鱈t辿se" +msgstr "info [kiszolg叩l坦]: A kiszolg叩l坦 adminisztr叩ci坦s r辿szleteinek megjelen鱈t辿se" msgid "ban [<channel> +|-<nick>]: Ban client from channel" -msgstr "" -"ban [<csatorna> +|-<becen辿v>]: Kliens kitilt叩sa a csatorn叩r坦l" +msgstr "ban [<csatorna> +|-<becen辿v>]: Kliens kitilt叩sa a csatorn叩r坦l" msgid "getkey <nick|server>: Retrieve client's or server's public key" msgstr "" @@ -9182,8 +9160,7 @@ #, c-format msgid "Failure: Remote does not trust/support your public key" -msgstr "" -"Hiba: A t叩voli f辿l nem b鱈zik meg vagy nem t叩mogatja az �n nyilv叩nos kulcs叩t" +msgstr "Hiba: A t叩voli f辿l nem b鱈zik meg vagy nem t叩mogatja az �n nyilv叩nos kulcs叩t" #, c-format msgid "Failure: Remote does not support proposed KE group" @@ -9314,8 +9291,7 @@ #, c-format msgid "A message has been dropped, you are exceeding the server speed limit." -msgstr "" -"Egy 端zenet el lett dobva, �n t炭ll辿pte a kiszolg叩l坦 叩tviteli sebess辿ghat叩r叩t." +msgstr "Egy 端zenet el lett dobva, �n t炭ll辿pte a kiszolg叩l坦 叩tviteli sebess辿ghat叩r叩t." #, c-format msgid "Chat in %s is not available." @@ -9477,9 +9453,6 @@ msgid "Yahoo! system message for %s:" msgstr "Yahoo! rendszer端zenet %s sz叩m叩ra:" -msgid "Authorization denied message:" -msgstr "Hozz叩f辿r辿s elutas鱈tva 端zenet:" - #, c-format msgid "" "%s has (retroactively) denied your request to add them to your list for the " @@ -9777,8 +9750,7 @@ #, c-format msgid "%s declined your conference invitation to room \"%s\" because \"%s\"." -msgstr "" -"%s visszal辿pett az �n megh鱈v叩s叩t坦l a(z) ��%s�� konferenciaszob叩ba, mivel: ��%s��." +msgstr "%s visszal辿pett az �n megh鱈v叩s叩t坦l a(z) ��%s�� konferenciaszob叩ba, mivel: ��%s��." msgid "Invitation Rejected" msgstr "Megh鱈v叩s visszautas鱈tva" @@ -9895,8 +9867,7 @@ "sub <oszt叩ly> <p辿ld叩ny> <c鱈mzett>: Csatlakoz叩s 炭j " "cseveg辿shez" -msgid "" -"zi <instance>: Send a message to <message,<i>instance</i>,*>" +msgid "zi <instance>: Send a message to <message,<i>instance</i>,*>" msgstr "" "zi <p辿ld叩ny>: �zenet k端ld辿se a k旦vetkez�nek: <端zenet,<i>p辿ld叩ny</i>," "*>" @@ -10373,9 +10344,9 @@ "<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" @@ -10385,7 +10356,7 @@ "Nincsenek be叩ll鱈tva azonnali端zen�-fi坦kjai. A %s haszn叩lat叩nak megkezd辿s辿hez " "kattintson az al叩bbi <b>Hozz叩ad叩s</b> gombra 辿s 叩ll鱈tsa be els� fi坦kj叩t. Ha " "azt szeretn辿 hogy a %s t旦bb fi坦khoz csatlakozzon, kattintson 炭jra a " -"<b>Hozz叩ad叩s</b> gombra 辿s 叩ll鱈tsa be mindet.\n" +"<b>Hozz叩ad叩s��</b> gombra 辿s 叩ll鱈tsa be mindet.\n" "\n" "A Partnerlista ablak <b>Fi坦kok -> Fi坦kok kezel辿se</b> men端pontja " "seg鱈ts辿g辿vel visszat辿rhet ehhez az ablakhoz fi坦kok hozz叩ad叩s叩hoz, " @@ -10393,8 +10364,7 @@ #, c-format msgid "You have %d contact named %s. Would you like to merge them?" -msgid_plural "" -"You currently have %d contacts named %s. Would you like to merge them?" +msgid_plural "You currently have %d contacts named %s. Would you like to merge them?" msgstr[0] "Jelenleg %d %s nev撤 partnere van. �ssze k鱈v叩nja vonni ezeket?" msgstr[1] "Jelenleg %d %s nev撤 partnere van. �ssze k鱈v叩nja vonni ezeket?" @@ -10450,9 +10420,6 @@ msgid "Hide when offline" msgstr "Elrejt辿s, ha nem 辿rhet� el" -msgid "Show when offline" -msgstr "Megjelen鱈t辿s, ha el辿rhet�" - msgid "_Alias..." msgstr "�l_n辿v��" @@ -10499,8 +10466,7 @@ msgid "/Tools/Mute Sounds" msgstr "/Eszk旦z旦k/Hangok n辿m鱈t叩sa" -msgid "" -"You are not currently signed on with an account that can add that buddy." +msgid "You are not currently signed on with an account that can add that buddy." msgstr "" "Jelenleg nincs bejelentkezve olyan h叩l坦zatra, amelyen felvehetn辿 ezt a " "partnert." @@ -10728,8 +10694,7 @@ #, c-format msgid "%d account was disabled because you signed on from another location:" -msgid_plural "" -"%d accounts were disabled because you signed on from another location:" +msgid_plural "%d accounts were disabled because you signed on from another location:" msgstr[0] "%d fi坦k letiltva, mivel bejelentkezett egy m叩sik helyr�l:" msgstr[1] "%d fi坦k letiltva, mivel bejelentkezett egy m叩sik helyr�l:" @@ -10814,8 +10779,8 @@ msgid "Auto_join when account becomes online." msgstr "Automatikus _csatlakoz叩s a fi坦k el辿rhet�v辿 v叩l叩sakor." -msgid "_Hide chat when the window is closed." -msgstr "Cse_veg辿s elrejt辿se az ablak bez叩r叩sakor." +msgid "_Remain in chat after window is closed." +msgstr "Cseveg辿sben mara_d叩s az ablak bez叩r叩sakor." msgid "Please enter the name of the group to be added." msgstr "Adja meg a felvenni k鱈v叩nt csoport nev辿t." @@ -10848,18 +10813,13 @@ msgid "SSL Servers" msgstr "SSL kiszolg叩l坦k" -#, fuzzy -msgid "Network disconnected" -msgstr "A t叩voli f辿l bontotta a kapcsolatot" - msgid "Unknown command." msgstr "Ismeretlen parancs." msgid "That buddy is not on the same protocol as this chat." msgstr "A partner nem ugyanazt a protokollt haszn叩lja, mint ez a cseveg辿s." -msgid "" -"You are not currently signed on with an account that can invite that buddy." +msgid "You are not currently signed on with an account that can invite that buddy." msgstr "" "Jelenleg nincs bejelentkezve olyan fi坦kkal, mellyel megh鱈vhatn叩 ezt a " "partnert." @@ -11193,8 +11153,12 @@ msgid "Fatal Error" msgstr "V辿gzetes hiba" -msgid "developer" -msgstr "fejleszt�" +# fixme: jobb 旦tlet? +msgid "bug master" +msgstr "hibaritk鱈t坦" + +msgid "artist" +msgstr "grafikus" #. feel free to not translate this msgid "Ka-Hing Cheung" @@ -11203,11 +11167,8 @@ msgid "support" msgstr "t叩mogat坦" -msgid "support/QA" -msgstr "t叩mogat坦/QA" - -msgid "developer & webmaster" -msgstr "fejleszt� 辿s webmester" +msgid "webmaster" +msgstr "webmester" msgid "Senior Contributor/QA" msgstr "Veter叩n k旦zrem撤k旦d�/QA" @@ -11225,8 +11186,11 @@ msgid "hacker and designated driver [lazy bum]" msgstr "hacker 辿s kijel旦lt vezet�" -msgid "XMPP developer" -msgstr "XMPP fejleszt�" +msgid "support/QA" +msgstr "t叩mogat坦/QA" + +msgid "XMPP" +msgstr "XMPP" msgid "original author" msgstr "eredeti szerz�" @@ -11475,8 +11439,7 @@ #, c-format msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>" -msgstr "" -"<FONT SIZE=\"4\">IRC:</FONT> #pidgin az irc.freenode.net h叩l坦zaton<BR><BR>" +msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin az irc.freenode.net h叩l坦zaton<BR><BR>" msgid "Current Developers" msgstr "Jelenlegi fejleszt�k" @@ -11490,9 +11453,6 @@ msgid "Retired Crazy Patch Writers" msgstr "Visszavonult �r端lt patch szerz�k" -msgid "Artists" -msgstr "Grafikusok" - msgid "Current Translators" msgstr "Jelenlegi ford鱈t坦k" @@ -11589,8 +11549,7 @@ msgstr "_Csoport elt叩vol鱈t叩sa" #, c-format -msgid "" -"You are about to remove %s from your buddy list. Do you want to continue?" +msgid "You are about to remove %s from your buddy list. Do you want to continue?" msgstr "%s elt叩vol鱈t叩s叩ra k辿sz端l a partnerlist叩j叩r坦l. Folytatni akarja?" msgid "Remove Buddy" @@ -11603,8 +11562,7 @@ msgid "" "You are about to remove the chat %s from your buddy list. Do you want to " "continue?" -msgstr "" -"%s cseveg辿s elt叩vol鱈t叩s叩ra k辿sz端l a partnerlist叩j叩r坦l. Folytatni akarja?" +msgstr "%s cseveg辿s elt叩vol鱈t叩s叩ra k辿sz端l a partnerlist叩j叩r坦l. Folytatni akarja?" msgid "Remove Chat" msgstr "Cseveg辿s elt叩vol鱈t叩sa" @@ -11736,8 +11694,7 @@ msgstr "Hiperhivatkoz叩s el�f辿nysz鱈ne" msgid "Color to draw hyperlinks when mouse is over them." -msgstr "" -"Hiperhivatkoz叩sok rajzol叩s叩hoz haszn叩lt sz鱈n, amikor az eg辿r r叩juk mutat." +msgstr "Hiperhivatkoz叩sok rajzol叩s叩hoz haszn叩lt sz鱈n, amikor az eg辿r r叩juk mutat." msgid "Sent Message Name Color" msgstr "Elk端ld旦tt 端zenet n辿vsz鱈ne" @@ -11860,8 +11817,7 @@ msgid "" "Please enter the URL and description of the link that you want to insert. " "The description is optional." -msgstr "" -"Adja meg a besz炭rand坦 hivatkoz叩s URL c鱈m辿t 辿s le鱈r叩s叩t. A le鱈r叩s opcion叩lis." +msgstr "Adja meg a besz炭rand坦 hivatkoz叩s URL c鱈m辿t 辿s le鱈r叩s叩t. A le鱈r叩s opcion叩lis." msgid "Please enter the URL of the link that you want to insert." msgstr "Adja meg a besz炭rand坦 hivatkoz叩s URL c鱈m辿t." @@ -12013,8 +11969,7 @@ msgid "" "Are you sure you want to permanently delete the system log which started at %" "s?" -msgstr "" -"Biztos, hogy t旦r旦lni akarja a(z) %s id�pontban kezd�d旦tt rendszernapl坦t?" +msgstr "Biztos, hogy t旦r旦lni akarja a(z) %s id�pontban kezd�d旦tt rendszernapl坦t?" msgid "Delete Log?" msgstr "T旦rli a napl坦t?" @@ -12028,8 +11983,7 @@ #, c-format msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>" -msgstr "" -"<span size='larger' weight='bold'>T叩rsalg叩s ezzel: %s, ekkor: %s</span>" +msgstr "<span size='larger' weight='bold'>T叩rsalg叩s ezzel: %s, ekkor: %s</span>" #. Steal the "HELP" response and use it to trigger browsing to the logs folder msgid "_Browse logs folder" @@ -12109,11 +12063,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 "" "A %s %s 旦sszeomlott 辿s megpr坦b叩lt ki鱈rni egy magf叩jlt.\n" "Ez a szoftver 辿s nem az �n hib叩ja miatt t旦rt辿nt.\n" @@ -12127,12 +12076,6 @@ "szerezze be a visszak旦vet辿st, akkor olvassa el a k旦vetkez� c鱈men tal叩lhat坦\n" "utas鱈t叩sokat:\n" "%swiki/GetABacktrace\n" -"\n" -"Ha tov叩bbi seg鱈ts辿gre van sz端ks辿ge, akkor k端ldj旦n azonnali 端zenetet (AIM " -"protokollon, angolul)\n" -"SeanEgn-nak vagy LSchiere-nek. Sean 辿s Luke kapcsolatinform叩ci坦i m叩s\n" -"protokollokhoz el辿rhet�k a k旦vetkez� oldalon:\n" -"%swiki/DeveloperPages\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -12168,8 +12111,7 @@ msgid "Error launching \"%s\": %s" msgstr "Hiba ��%s�� ind鱈t叩sakor: %s" -msgid "" -"The 'Manual' browser command has been chosen, but no command has been set." +msgid "The 'Manual' browser command has been chosen, but no command has been set." msgstr "A ��K辿zi�� b旦ng辿sz�parancsot v叩lasztotta, de nem adott meg parancsot." msgid "The following plugins will be unloaded." @@ -12604,11 +12546,9 @@ msgid "Sounds when conversation has _focus" msgstr "Hangok lej叩tsz叩sa, ha a t叩rsalg叩s ablaka a_kt鱈v" -#, fuzzy msgid "_Enable sounds:" msgstr "Hangok _enged辿lyez辿se:" -#, fuzzy msgid "V_olume:" msgstr "H_anger�:" @@ -12833,13 +12773,11 @@ msgid "Custom Smiley Manager" msgstr "Egy辿nihangulatjel-kezel�" -#, fuzzy msgid "Click to change your buddyicon for this account." -msgstr "Ezen _partnerikon haszn叩lata a fi坦khoz:" - -#, fuzzy +msgstr "Kattintson a fi坦k partnerikonj叩nak m坦dos鱈t叩s叩hoz." + msgid "Click to change your buddyicon for all accounts." -msgstr "Ezen _partnerikon haszn叩lata a fi坦khoz:" +msgstr "Kattintson az 旦sszes fi坦k partnerikonj叩nak m坦dos鱈t叩s叩hoz." msgid "Waiting for network connection" msgstr "V叩rakoz叩s a h叩l坦zati kapcsolatra" @@ -12938,8 +12876,7 @@ #, c-format msgid "The file '%s' is too large for %s. Please try a smaller image.\n" -msgstr "" -"A(z) ��%s�� f叩jl t炭l nagy a k旦vetkez�h旦z: %s. Pr坦b叩lkozzon kisebb k辿ppel.\n" +msgstr "A(z) ��%s�� f叩jl t炭l nagy a k旦vetkez�h旦z: %s. Pr坦b叩lkozzon kisebb k辿ppel.\n" msgid "Icon Error" msgstr "Ikonhiba" @@ -12952,8 +12889,7 @@ msgstr "Nem siker端lt megnyitni a(z) ��%s�� f叩jlt: %s" #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "" "A(z) ��%s�� k辿p bet旦lt辿se sikertelen: az ok nem ismert, val坦sz鱈n撤leg s辿r端lt a " "k辿pf叩jl" @@ -12976,8 +12912,11 @@ msgid "_Invite" msgstr "Meg_h鱈v叩s" -msgid "_Modify" -msgstr "_M坦dos鱈t叩s" +msgid "_Modify..." +msgstr "_M坦dos鱈t叩s��" + +msgid "_Add..." +msgstr "Hozz叩_ad叩s��" msgid "_Open Mail" msgstr "_Lev辿l megnyit叩sa" @@ -13000,6 +12939,12 @@ msgid "none" msgstr "nincs" +msgid "Small" +msgstr "Kicsi" + +msgid "Smaller versions of the default smilies" +msgstr "Az alap辿rtelmezett hangulatjelek kisebb v叩ltozatai" + msgid "Response Probability:" msgstr "V叩lasz val坦sz鱈n撤s辿ge:" @@ -13083,8 +13028,7 @@ #. *< name #. *< version #. *< summary -msgid "" -"Allows for controlling the values associated with different buddy states." +msgid "Allows for controlling the values associated with different buddy states." msgstr "" "Lehet�v辿 teszi a partnerek k端l旦nb旦z� 叩llapotaihoz rendelt 辿rt辿kek " "be叩ll鱈t叩s叩t." @@ -13149,8 +13093,7 @@ msgstr "T叩rsalg叩sok sz叩ma ablakonk辿nt" msgid "Separate IM and Chat windows when placing by number" -msgstr "" -"Azonnali 端zen�- 辿s cseveg�ablakok elk端l旦n鱈t辿se sz叩m szerinti elhelyez辿sn辿l" +msgstr "Azonnali 端zen�- 辿s cseveg�ablakok elk端l旦n鱈t辿se sz叩m szerinti elhelyez辿sn辿l" #. *< type #. *< ui_requirement @@ -13359,8 +13302,7 @@ #. * summary #. * description msgid "Iconifies the buddy list and your conversations when you go away." -msgstr "" -"Ikon叩llapotba helyezi a partnerlist叩t 辿s a t叩rsalg叩sokat, amikor t叩vol van." +msgstr "Ikon叩llapotba helyezi a partnerlist叩t 辿s a t叩rsalg叩sokat, amikor t叩vol van." msgid "Mail Checker" msgstr "Lev辿lfigyel�" @@ -13369,8 +13311,7 @@ msgstr "�j helyi lev辿l 辿rkez辿s辿t ellen�rzi." msgid "Adds a small box to the buddy list that shows if you have new mail." -msgstr "" -"Kis dobozt ad a partnerlist叩hoz, amely megjelenik 炭j lev辿l 辿rkez辿sekor." +msgstr "Kis dobozt ad a partnerlist叩hoz, amely megjelenik 炭j lev辿l 辿rkez辿sekor." msgid "Markerline" msgstr "Jel旦l� vonal" @@ -13470,6 +13411,9 @@ msgid "Set window manager \"_URGENT\" hint" msgstr "��_S�RG�S�� tipp be叩ll鱈t叩sa az ablakkezel� sz叩m叩ra" +msgid "_Flash window" +msgstr "_Ablak villogtat叩sa" + #. Raise window method button msgid "R_aise conversation window" msgstr "_T叩rsalg叩si ablak el�t辿rbe hoz叩sa" @@ -13516,8 +13460,7 @@ #. * summary #. * description msgid "Provides a variety of ways of notifying you of unread messages." -msgstr "" -"K端l旦nb旦z� lehet�s辿geket ny炭jt az olvasatlan 端zenetekre figyelmeztet辿sre." +msgstr "K端l旦nb旦z� lehet�s辿geket ny炭jt az olvasatlan 端zenetekre figyelmeztet辿sre." #. *< type #. *< ui_requirement @@ -13934,8 +13877,7 @@ msgid "Options specific to Pidgin for Windows." msgstr "A windowsos Pidginre jellemz� be叩ll鱈t叩sok." -msgid "" -"Provides options specific to Pidgin for Windows , such as buddy list docking." +msgid "Provides options specific to Pidgin for Windows , such as buddy list docking." msgstr "" "A windowsos Pidginre jellemz� be叩ll鱈t叩sokat biztos鱈t, mint p辿ld叩ul a " "partnerlista dokkol叩sa." @@ -13979,122 +13921,3 @@ "Ez a b�v鱈tm辿ny XMPP kiszolg叩l坦kban vagy kliensekben v辿gzett hibakeres辿shez " "hasznos." -#, fuzzy -#~ msgid "EOF while reading from resolver process" -#~ msgstr "" -#~ "Hiba a felold坦 folyamatb坦l olvas叩s k旦zben:\n" -#~ "%s" - -#, fuzzy -#~ msgid "Your information has been updated" -#~ msgstr "A jelszava meg lett v叩ltoztatva." - -#, fuzzy -#~ msgid "You have successfully removed a buddy" -#~ msgstr "Sikeresen l辿trehozott egy Qun-t" - -#, fuzzy -#~ msgid "You have successfully removed yourself from your friend's buddy list" -#~ msgstr "%s elt叩vol鱈totta �nt a partnerlist叩j叩r坦l." - -#, fuzzy -#~ msgid "You have added %d to buddy list" -#~ msgstr "%s felvette �nt [%s] a partnerlist叩j叩ra" - -#, fuzzy -#~ msgid "Invalid QQid" -#~ msgstr "�rv辿nytelen authzid" - -#, fuzzy -#~ msgid "Please enter external group ID" -#~ msgstr "Adja meg %s 炭j nev辿t" - -#, fuzzy -#~ msgid "Reason: %s" -#~ msgstr "Verzi坦: \t%s\n" - -#, fuzzy -#~ msgid "Your request to join group %d has been rejected by admin %d" -#~ msgstr "" -#~ "A csatlakoz叩si k辿relm辿t a(z) %d csoporthoz %d admin visszautas鱈totta" - -#, fuzzy -#~ msgid "Your request to join group %d has been approved by admin %d" -#~ msgstr "" -#~ "A csatlakoz叩si k辿relm辿t a(z) %d csoporthoz %d admin visszautas鱈totta" - -#, fuzzy -#~ msgid "You [%d] have left group \"%d\"" -#~ msgstr "�n [%d] fel lett v辿ve a k旦vetkez� csoportba: ��%d��" - -#, fuzzy -#~ msgid "You [%d] have been added to group \"%d\"" -#~ msgstr "%s felvette" - -#, fuzzy -#~ msgid "This group has been added to your buddy list" -#~ msgstr "%s felvette �nt a partnerlist叩j叩ra." - -#, fuzzy -#~ msgid "You have successfully left the group" -#~ msgstr "Sikeresen l辿trehozott egy Qun-t" - -#, fuzzy -#~ msgid "Enter your reason:" -#~ msgstr "�rja be al叩bb a jegyzetet��" - -#, fuzzy -#~ msgid "You have successfully modified Qun member" -#~ msgstr "Sikeresen l辿trehozott egy Qun-t" - -#, fuzzy -#~ msgid "You have successfully modified Qun information" -#~ msgstr "Sikeresen l辿trehozott egy Qun-t" - -#, fuzzy -#~ msgid " Space" -#~ msgstr "MySpace" - -#, fuzzy -#~ msgid "<b>Real hostname</b>: %s: %d<br>\n" -#~ msgstr "<b>Utols坦 friss鱈t辿s</b>: %s<br>\n" - -#, fuzzy -#~ msgid "<b>My Public IP</b>: %s<br>\n" -#~ msgstr "<b>Utols坦 bejelentkez辿si IP</b>: %s<br>\n" - -#, fuzzy -#~ msgid "Show Login Information" -#~ msgstr "Bejelentkez辿si inform叩ci坦k" - -#, fuzzy -#~ msgid "resend interval(s)" -#~ msgstr "Friss鱈t辿si id�k旦z" - -#, fuzzy -#~ msgid "Failed to connect server" -#~ msgstr "Nem siker端lt a kiszolg叩l坦hoz kapcsol坦dni." - -#, fuzzy -#~ msgid "Unable to login. Check debug log." -#~ msgstr "A b�v鱈tm辿ny nem t旦lthet� be" - -#, fuzzy -#~ msgid "Unable to login" -#~ msgstr "A b�v鱈tm辿ny nem t旦lthet� be" - -#, fuzzy -#~ msgid "Failed room reply" -#~ msgstr "A partner elt叩vol鱈t叩sa sikertelen" - -#, fuzzy -#~ msgid "User %s rejected your request" -#~ msgstr "Visszautas鱈totta %d k辿r辿s辿t" - -#, fuzzy -#~ msgid "User %s approved your request" -#~ msgstr "J坦v叩 k鱈v叩nja hagyni a k辿r辿st?" - -#, fuzzy -#~ msgid "Notice from: %s" -#~ msgstr "Megjegyz辿s"