Mercurial > pidgin.yaz
changeset 24252:b51732ec65e4
merge of '8abde19f1f7825af2ea2d62b7a00e1de7afd6492'
and '9af1b5054f770dc244dcad8b55bdb61c0f3347a4'
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Mon, 27 Oct 2008 00:57:04 +0000 |
parents | 5afa979d57fc (diff) 00420530cc56 (current diff) |
children | 2a4f96dc074e |
files | |
diffstat | 4 files changed, 114 insertions(+), 83 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.am Sun Oct 26 21:21:14 2008 +0000 +++ b/Makefile.am Mon Oct 27 00:57:04 2008 +0000 @@ -34,13 +34,6 @@ # We don't want to release development versions. test x`echo $(PACKAGE_VERSION) | grep dev` = x -# Make sure there is a NEWS entry for this version - head NEWS | grep "^$(PACKAGE_VERSION) (`date +%m/%d/%Y`):$$" > /dev/null - -# Ensure NEWS has no spaces at the start of a line. -# Using spaces instead of tabs there is a common mistake. - test x`grep "^ " NEWS` = x - # When doing a new minor (or major) release (X.Y.0), there must be a section in # ChangeLog.API. echo $(PACKAGE_VERSION) | grep -v "^[0-9]\+\.[0-9]\+\.0$$" >/dev/null || head ChangeLog.API | grep "^version $(PACKAGE_VERSION) (`date +%m/%d/%Y`):$$" >/dev/null
--- a/NEWS Sun Oct 26 21:21:14 2008 +0000 +++ b/NEWS Mon Oct 27 00:57:04 2008 +0000 @@ -1,5 +1,12 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +For up-to-date news, information, and sports, visit: http://planet.pidgin.im + + +=============================================================================== += OLD NEWS = +=============================================================================== + 2.5.2 (10/19/2008): Ethan: After a bit of a struggle with our services, which put this release off for an unfortunate length of time, we're
--- a/libpurple/protocols/jabber/iq.c Sun Oct 26 21:21:14 2008 +0000 +++ b/libpurple/protocols/jabber/iq.c Mon Oct 27 00:57:04 2008 +0000 @@ -105,8 +105,7 @@ void jabber_iq_set_id(JabberIq *iq, const char *id) { - if(iq->id) - g_free(iq->id); + g_free(iq->id); if(id) { xmlnode_set_attrib(iq->node, "id", id); @@ -320,9 +319,42 @@ from = xmlnode_get_attrib(packet, "from"); id = xmlnode_get_attrib(packet, "id"); + if(type == NULL || !(!strcmp(type, "get") || !strcmp(type, "set") + || !strcmp(type, "result") || !strcmp(type, "error"))) { + purple_debug_error("jabber", "IQ with invalid type ('%s') - ignoring.\n", + type ? type : "(null)"); + return; + } + + /* All IQs must have an ID, so send an error for a set/get that doesn't */ + if(!id || !*id) { + + if(!strcmp(type, "set") || !strcmp(type, "get")) { + JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR); + + xmlnode_free(iq->node); + iq->node = xmlnode_copy(packet); + xmlnode_set_attrib(iq->node, "to", from); + xmlnode_remove_attrib(iq->node, "from"); + xmlnode_set_attrib(iq->node, "type", "error"); + /* This id is clearly not useful, but we must put something there for a valid stanza */ + iq->id = jabber_get_next_id(js); + xmlnode_set_attrib(iq->node, "id", iq->id); + error = xmlnode_new_child(iq->node, "error"); + xmlnode_set_attrib(error, "type", "modify"); + x = xmlnode_new_child(error, "bad-request"); + xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas"); + + jabber_iq_send(iq); + } else + purple_debug_error("jabber", "IQ of type '%s' missing id - ignoring.\n", type); + + return; + } + /* First, lets see if a special callback got registered */ - if(type && (!strcmp(type, "result") || !strcmp(type, "error"))) { + if(!strcmp(type, "result") || !strcmp(type, "error")) { if(id && *id && (jcd = g_hash_table_lookup(js->iq_callbacks, id))) { jcd->callback(js, packet, jcd->data); jabber_iq_remove_callback_by_id(js, id); @@ -332,7 +364,7 @@ /* Apparently not, so lets see if we have a pre-defined handler */ - if(type && query && (xmlns = xmlnode_get_namespace(query))) { + if(query && (xmlns = xmlnode_get_namespace(query))) { if((jih = g_hash_table_lookup(iq_handlers, xmlns))) { jih(js, packet); return; @@ -348,7 +380,7 @@ jabber_gmail_poke(js, packet); return; } - + purple_debug_info("jabber", "jabber_iq_parse\n"); if(xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) { @@ -362,7 +394,7 @@ } /* If we get here, send the default error reply mandated by XMPP-CORE */ - if(type && (!strcmp(type, "set") || !strcmp(type, "get"))) { + if(!strcmp(type, "set") || !strcmp(type, "get")) { JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR); xmlnode_free(iq->node);
--- a/pidgin/gtkdialogs.c Sun Oct 26 21:21:14 2008 +0000 +++ b/pidgin/gtkdialogs.c Mon Oct 27 00:57:04 2008 +0000 @@ -69,29 +69,30 @@ /* Order: Alphabetical by Last Name */ static const struct developer developers[] = { - {"Daniel 'datallah' Atallah", N_("developer"), NULL}, - {"John 'rekkanoryo' Bailey", N_("developer & bug master"), NULL}, - {"Ethan 'Paco-Paco' Blanton", N_("developer"), NULL}, - {"Thomas Butter", N_("developer"), NULL}, + {"Daniel 'datallah' Atallah", NULL, NULL}, + {"John 'rekkanoryo' Bailey", N_("bug master"), NULL}, + {"Ethan 'Paco-Paco' Blanton", NULL, NULL}, + {"Hylke Bons", N_("artist"), "h.bons@student.rug.nl"}, + {"Thomas Butter", NULL, NULL}, /* feel free to not translate this */ - {N_("Ka-Hing Cheung"), N_("developer"), NULL}, - {"Sadrul Habib Chowdhury", N_("developer"), NULL}, - {"Mark 'KingAnt' Doliner", N_("developer"), "mark@kingant.net"}, - {"Sean Egan", N_("developer"), "sean.egan@gmail.com"}, - {"Casey Harkins", N_("developer"), NULL}, - {"Gary 'grim' Kramlich", N_("developer"), NULL}, - {"Richard 'rlaager' Laager", N_("developer"), NULL}, - {"Richard 'wabz' Nelson", N_("developer"), NULL}, - {"Christopher 'siege' O'Brien", N_("developer"), "taliesein@users.sf.net"}, - {"Bartosz Oler", N_("developer"), NULL}, - {"Etan 'deryni' Reisner", N_("developer"), NULL}, - {"Tim 'marv' Ringenbach", N_("developer"), NULL}, - {"Elliott 'QuLogic' Sales de Andrade", N_("developer"), NULL}, + {N_("Ka-Hing Cheung"), NULL, NULL}, + {"Sadrul Habib Chowdhury", NULL, NULL}, + {"Mark 'KingAnt' Doliner", NULL, "mark@kingant.net"}, + {"Sean Egan", NULL, "sean.egan@gmail.com"}, + {"Casey Harkins", NULL, NULL}, + {"Gary 'grim' Kramlich", NULL, NULL}, + {"Richard 'rlaager' Laager", NULL, NULL}, + {"Richard 'wabz' Nelson", NULL, NULL}, + {"Christopher 'siege' O'Brien", NULL, "taliesein@users.sf.net"}, + {"Bartosz Oler", NULL, NULL}, + {"Etan 'deryni' Reisner", NULL, NULL}, + {"Tim 'marv' Ringenbach", NULL, NULL}, + {"Elliott 'QuLogic' Sales de Andrade", NULL, NULL}, {"Luke 'LSchiere' Schierer", N_("support"), "lschiere@users.sf.net"}, - {"Evan Schoenberg", N_("developer"), NULL}, - {"Kevin 'SimGuy' Stange", N_("developer & webmaster"), NULL}, - {"Will 'resiak' Thompson", N_("developer"), NULL}, - {"Stu 'nosnilmot' Tomlinson", N_("developer"), NULL}, + {"Evan Schoenberg", NULL, NULL}, + {"Kevin 'SimGuy' Stange", N_("webmaster"), NULL}, + {"Will 'resiak' Thompson", NULL, NULL}, + {"Stu 'nosnilmot' Tomlinson", NULL, NULL}, {NULL, NULL, NULL} }; @@ -111,13 +112,13 @@ {"Jim Duchek", N_("maintainer"), "jim@linuxpimps.com"}, {"Rob Flynn", N_("maintainer"), NULL}, {"Adam Fritzler", N_("libfaim maintainer"), NULL}, - {"Christian 'ChipX86' Hammond", N_("developer & webmaster"), NULL}, + {"Christian 'ChipX86' Hammond", N_("webmaster"), NULL}, /* If "lazy bum" translates literally into a serious insult, use something else or omit it. */ {"Syd Logan", N_("hacker and designated driver [lazy bum]"), NULL}, {"Megan 'Cae' Schneider", N_("support/QA"), NULL}, - {"Jim Seymour", N_("XMPP developer"), NULL}, + {"Jim Seymour", N_("XMPP"), NULL}, {"Mark Spencer", N_("original author"), "markster@marko.net"}, - {"Nathan 'faceprint' Walp", N_("developer"), NULL}, + {"Nathan 'faceprint' Walp", NULL, NULL}, {"Eric Warmenhoven", N_("lead developer"), "warmenhoven@yahoo.com"}, {NULL, NULL, NULL} }; @@ -285,11 +286,6 @@ {NULL, NULL, NULL, NULL} }; -static const struct artist artists[] = { - {"Hylke Bons", "h.bons@student.rug.nl"}, - {NULL, NULL} -}; - void pidgin_dialogs_destroy_all() { @@ -428,12 +424,17 @@ _("Current Developers")); for (i = 0; developers[i].name != NULL; i++) { if (developers[i].email != NULL) { - g_string_append_printf(str, " %s (%s) <<a href=\"mailto:%s\">%s</a>><br/>", - _(developers[i].name), _(developers[i].role), - developers[i].email, developers[i].email); + g_string_append_printf(str, " <a href=\"mailto:%s\">%s</a>%s%s%s<br/>", + developers[i].email, _(developers[i].name), + developers[i].role ? " (" : "", + developers[i].role ? _(developers[i].role) : "", + developers[i].role ? ")" : ""); } else { - g_string_append_printf(str, " %s (%s)<br/>", - _(developers[i].name), _(developers[i].role)); + g_string_append_printf(str, " %s%s%s%s<br/>", + _(developers[i].name), + developers[i].role ? " (" : "", + developers[i].role ? _(developers[i].role) : "", + developers[i].role ? ")" : ""); } } g_string_append(str, "<BR/>"); @@ -443,12 +444,17 @@ _("Crazy Patch Writers")); for (i = 0; patch_writers[i].name != NULL; i++) { if (patch_writers[i].email != NULL) { - g_string_append_printf(str, " %s <<a href=\"mailto:%s\">%s</a>><br/>", - patch_writers[i].name, - patch_writers[i].email, patch_writers[i].email); + g_string_append_printf(str, " <a href=\"mailto:%s\">%s</a>%s%s%s<br/>", + patch_writers[i].email, _(patch_writers[i].name), + patch_writers[i].role ? " (" : "", + patch_writers[i].role ? _(patch_writers[i].role) : "", + patch_writers[i].role ? ")" : ""); } else { - g_string_append_printf(str, " %s<br/>", - patch_writers[i].name); + g_string_append_printf(str, " %s%s%s%s<br/>", + _(patch_writers[i].name), + patch_writers[i].role ? " (" : "", + patch_writers[i].role ? _(patch_writers[i].role) : "", + patch_writers[i].role ? ")" : ""); } } g_string_append(str, "<BR/>"); @@ -458,12 +464,17 @@ _("Retired Developers")); for (i = 0; retired_developers[i].name != NULL; i++) { if (retired_developers[i].email != NULL) { - g_string_append_printf(str, " %s (%s) <<a href=\"mailto:%s\">%s</a>><br/>", - retired_developers[i].name, _(retired_developers[i].role), - retired_developers[i].email, retired_developers[i].email); + g_string_append_printf(str, " <a href=\"mailto:%s\">%s</a>%s%s%s<br/>", + retired_developers[i].email, _(retired_developers[i].name), + retired_developers[i].role ? " (" : "", + retired_developers[i].role ? _(retired_developers[i].role) : "", + retired_developers[i].role ? ")" : ""); } else { - g_string_append_printf(str, " %s (%s)<br/>", - retired_developers[i].name, _(retired_developers[i].role)); + g_string_append_printf(str, " %s%s%s%s<br/>", + _(retired_developers[i].name), + retired_developers[i].role ? " (" : "", + retired_developers[i].role ? _(retired_developers[i].role) : "", + retired_developers[i].role ? ")" : ""); } } g_string_append(str, "<BR/>"); @@ -473,42 +484,31 @@ _("Retired Crazy Patch Writers")); for (i = 0; retired_patch_writers[i].name != NULL; i++) { if (retired_patch_writers[i].email != NULL) { - g_string_append_printf(str, " %s <<a href=\"mailto:%s\">%s</a>><br/>", - retired_patch_writers[i].name, - retired_patch_writers[i].email, retired_patch_writers[i].email); + g_string_append_printf(str, " <a href=\"mailto:%s\">%s</a>%s%s%s<br/>", + retired_patch_writers[i].email, _(retired_patch_writers[i].name), + retired_patch_writers[i].role ? " (" : "", + retired_patch_writers[i].role ? _(retired_patch_writers[i].role) : "", + retired_patch_writers[i].role ? ")" : ""); } else { - g_string_append_printf(str, " %s<br/>", - retired_patch_writers[i].name); + g_string_append_printf(str, " %s%s%s%s<br/>", + _(retired_patch_writers[i].name), + retired_patch_writers[i].role ? " (" : "", + retired_patch_writers[i].role ? _(retired_patch_writers[i].role) : "", + retired_patch_writers[i].role ? ")" : ""); } } g_string_append(str, "<BR/>"); - - /* Artists */ - g_string_append_printf(str, "<FONT SIZE=\"4\">%s:</FONT><BR/>", - _("Artists")); - for (i = 0; artists[i].name != NULL; i++) { - if (artists[i].email != NULL) { - g_string_append_printf(str, " %s <<a href=\"mailto:%s\">%s</a>><br/>", - artists[i].name, - artists[i].email, artists[i].email); - } else { - g_string_append_printf(str, " %s<br/>", - artists[i].name); - } - } - g_string_append(str, "<BR/>"); /* Current Translators */ g_string_append_printf(str, "<FONT SIZE=\"4\">%s:</FONT><BR/>", _("Current Translators")); for (i = 0; current_translators[i].language != NULL; i++) { if (current_translators[i].email != NULL) { - g_string_append_printf(str, " <b>%s (%s)</b> - %s <<a href=\"mailto:%s\">%s</a>><br/>", + g_string_append_printf(str, " <b>%s (%s)</b> - <a href=\"mailto:%s\">%s</a><br/>", _(current_translators[i].language), current_translators[i].abbr, - _(current_translators[i].name), current_translators[i].email, - current_translators[i].email); + _(current_translators[i].name)); } else { g_string_append_printf(str, " <b>%s (%s)</b> - %s<br/>", _(current_translators[i].language), @@ -523,12 +523,11 @@ _("Past Translators")); for (i = 0; past_translators[i].language != NULL; i++) { if (past_translators[i].email != NULL) { - g_string_append_printf(str, " <b>%s (%s)</b> - %s <<a href=\"mailto:%s\">%s</a>><br/>", + g_string_append_printf(str, " <b>%s (%s)</b> - <a href=\"mailto:%s\">%s</a><br/>", _(past_translators[i].language), past_translators[i].abbr, - _(past_translators[i].name), past_translators[i].email, - past_translators[i].email); + _(past_translators[i].name)); } else { g_string_append_printf(str, " <b>%s (%s)</b> - %s<br/>", _(past_translators[i].language),