# HG changeset patch # User Paul Aurich # Date 1240712283 0 # Node ID 8a77e6cd7eacd5f937df0a92c4a0612d599e8fe1 # Parent 4a3a0c47dfe10783432be3d622c7ee83b32396ba# Parent ef1616b50974af2da6e6c590d1cfa070924d32f9 merge of 'ac3524a1092f2874db1b7f443cd91144bbd8a3a4' and 'bcb04d16f3ca4e36afd84bde4ebe44396dc6c2b3' diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac ChangeLog --- a/ChangeLog Sat Apr 25 23:21:31 2009 +0000 +++ b/ChangeLog Sun Apr 26 02:18:03 2009 +0000 @@ -18,10 +18,12 @@ * Add voice & video support with Jingle (XEP-0166, 0167, 0176, & 0177), and voice support with GTalk and GMail. (Mike "Maiku" Ruprecht) * Add support for in-band bytestreams for file transfers (XEP-0047). - * Add support for sending and receiving attentions (equivalent to "buzz" + * Add support for sending and receiving attentions (equivalent to "buzz" and "nudge") using the command /buzz (XEP-0224). * A buddy's local time is displayed in the Get Info dialog if the remote client supports it. + * The set_chat_topic function can unset the chat topic. + * Fix crash on connection with recent gstreamer0.10-plugins-bad. IRC: * Correctly handle WHOIS for users who are joined to a large number of @@ -40,7 +42,7 @@ the next line. * Created a unified Buddy Pounce notification window for all pounces where "Pop up a notification" is selected, which avoids having a - new dialog box every time a pounce is triggered. (Jorge VillaseƱor) + new dialog box every time a pounce is triggered. (Jorge VillaseƱor) * The New Account dialog is now broken into three tabs. Proxy configuration has been moved from the Advanced tab to the new tab. * The nicks of the persons who leave the chatroom are italicized in the diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/blist.h --- a/libpurple/blist.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/blist.h Sun Apr 26 02:18:03 2009 +0000 @@ -118,8 +118,8 @@ /** * A Buddy list node. This can represent a group, a buddy, or anything else. - * This is a base class for struct buddy and struct group and for anything - * else that wants to put itself in the buddy list. */ + * This is a base class for PurpleBuddy, PurpleContact, PurpleGroup, and for + * anything else that wants to put itself in the buddy list. */ struct _PurpleBlistNode { PurpleBlistNodeType type; /**< The type of node this is */ PurpleBlistNode *prev; /**< The sibling before this buddy. */ @@ -207,7 +207,7 @@ PurpleBlistNode *node); /**< This will update a node in the buddy list. */ void (*remove)(PurpleBuddyList *list, PurpleBlistNode *node); /**< This removes a node from the list */ - void (*destroy)(PurpleBuddyList *list); /**< When the list gets destroyed, this gets called to destroy the UI. */ + void (*destroy)(PurpleBuddyList *list); /**< When the list is destroyed, this is called to destroy the UI. */ void (*set_visible)(PurpleBuddyList *list, gboolean show); /**< Hides or unhides the buddy list */ void (*request_add_buddy)(PurpleAccount *account, const char *username, @@ -276,7 +276,7 @@ * * @since 2.6.0 */ -void *purple_blist_get_ui_data(void); +gpointer purple_blist_get_ui_data(void); /** * Sets the UI data for the list. @@ -285,7 +285,7 @@ * * @since 2.6.0 */ -void purple_blist_set_ui_data(void *ui_data); +void purple_blist_set_ui_data(gpointer ui_data); /** * Returns the next node of a given node. This function is to be used to iterate @@ -360,7 +360,7 @@ * @return The UI data. * @since 2.6.0 */ -void *purple_blist_node_get_ui_data(const PurpleBlistNode *node); +gpointer purple_blist_node_get_ui_data(const PurpleBlistNode *node); /** * Sets the UI data of a given node. @@ -370,7 +370,7 @@ * * @since 2.6.0 */ -void purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data); +void purple_blist_node_set_ui_data(PurpleBlistNode *node, gpointer ui_data); /** * Shows the buddy list, creating a new one if necessary. @@ -393,6 +393,8 @@ /** * Updates a buddy's status. * + * This should only be called from within Purple. + * * @param buddy The buddy whose status has changed. * @param old_status The status from which we are changing. */ @@ -499,12 +501,19 @@ void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode *node); /** - * Creates a new buddy + * Creates a new buddy. + * + * This function only creates the PurpleBuddy. Use purple_blist_add_buddy + * to add the buddy to the list and purple_account_add_buddy to sync up + * with the server. * * @param account The account this buddy will get added to * @param name The name of the new buddy * @param alias The alias of the new buddy (or NULL if unaliased) * @return A newly allocated buddy + * + * @see purple_account_add_buddy + * @see purple_blist_add_buddy */ PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias); @@ -618,7 +627,7 @@ * Creates a new group * * You can't have more than one group with the same name. Sorry. If you pass - * this the * name of a group that already exists, it will return that group. + * this the name of a group that already exists, it will return that group. * * @param name The name of the new group * @return A new group struct @@ -727,18 +736,22 @@ /** * Removes a buddy from the buddy list and frees the memory allocated to it. - * This doesn't actually try to remove the buddy from the server list, nor does - * it clean up the prpl_data. + * This doesn't actually try to remove the buddy from the server list. * * @param buddy The buddy to be removed + * + * @see purple_account_remove_buddy */ void purple_blist_remove_buddy(PurpleBuddy *buddy); /** * Removes a contact, and any buddies it contains, and frees the memory - * allocated to it. + * allocated to it. This calls purple_blist_remove_buddy and therefore + * doesn't remove the buddies from the server list. * * @param contact The contact to be removed + * + * @see purple_blist_remove_buddy */ void purple_blist_remove_contact(PurpleContact *contact); @@ -850,7 +863,7 @@ * Finds all PurpleBuddy structs given a name and an account * * @param account The account this buddy belongs to - * @param name The buddy's name (or NULL to return all buddies in the account) + * @param name The buddy's name (or NULL to return all buddies for the account) * * @return A GSList of buddies (which must be freed), or NULL if the buddy doesn't exist */ @@ -945,7 +958,7 @@ const char *purple_group_get_name(PurpleGroup *group); /** - * Called when an account gets signed on. Tells the UI to update all the + * Called when an account connects. Tells the UI to update all the * buddies. * * @param account The account @@ -954,7 +967,7 @@ /** - * Called when an account gets signed off. Sets the presence of all the buddies to 0 + * Called when an account disconnects. Sets the presence of all the buddies to 0 * and tells the UI to update them. * * @param account The account diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/mediamanager.h --- a/libpurple/mediamanager.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/mediamanager.h Sun Apr 26 02:18:03 2009 +0000 @@ -52,7 +52,7 @@ #endif /**************************************************************************/ -/** @cname Media Manager API */ +/** @name Media Manager API */ /**************************************************************************/ /*@{*/ diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/bonjour/parser.c --- a/libpurple/protocols/bonjour/parser.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/bonjour/parser.c Sun Apr 26 02:18:03 2009 +0000 @@ -153,6 +153,18 @@ xmlnode_insert_data(bconv->current, (const char*) text, text_len); } +static void +bonjour_parser_structured_error_handler(void *user_data, xmlErrorPtr error) +{ + BonjourJabberConversation *bconv = user_data; + + purple_debug_error("jabber", "XML parser error for BonjourJabberConversation %p: " + "Domain %i, code %i, level %i: %s", + bconv, + error->domain, error->code, error->level, + (error->message ? error->message : "(null)\n")); +} + static xmlSAXHandler bonjour_parser_libxml = { NULL, /*internalSubset*/ NULL, /*isStandalone*/ @@ -185,7 +197,7 @@ NULL, /*_private*/ bonjour_parser_element_start_libxml, /*startElementNs*/ bonjour_parser_element_end_libxml, /*endElementNs*/ - NULL /*serror*/ + bonjour_parser_structured_error_handler /*serror*/ }; void diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/jabber/chat.c --- a/libpurple/protocols/jabber/chat.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/jabber/chat.c Sun Apr 26 02:18:03 2009 +0000 @@ -597,37 +597,25 @@ /* merge this with the function below when we get everyone on the same page wrt /commands */ void jabber_chat_change_topic(JabberChat *chat, const char *topic) { - if(topic && *topic) { - JabberMessage *jm; - jm = g_new0(JabberMessage, 1); - jm->js = chat->js; - jm->type = JABBER_MESSAGE_GROUPCHAT; - jm->subject = purple_markup_strip_html(topic); - jm->to = g_strdup_printf("%s@%s", chat->room, chat->server); - jabber_message_send(jm); - jabber_message_free(jm); - } else { - const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(chat->conv)); - char *buf, *tmp, *tmp2; + JabberMessage *jm; + + jm = g_new0(JabberMessage, 1); + jm->js = chat->js; + jm->type = JABBER_MESSAGE_GROUPCHAT; + jm->to = g_strdup_printf("%s@%s", chat->room, chat->server); - if(cur) { - tmp = g_markup_escape_text(cur, -1); - tmp2 = purple_markup_linkify(tmp); - buf = g_strdup_printf(_("current topic is: %s"), tmp2); - g_free(tmp); - g_free(tmp2); - } else - buf = g_strdup(_("No topic is set")); - purple_conv_chat_write(PURPLE_CONV_CHAT(chat->conv), "", buf, - PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL)); - g_free(buf); - } + if (topic && *topic) + jm->subject = purple_markup_strip_html(topic); + else + jm->subject = g_strdup(""); + jabber_message_send(jm); + jabber_message_free(jm); } void jabber_chat_set_topic(PurpleConnection *gc, int id, const char *topic) { - JabberStream *js = gc->proto_data; + JabberStream *js = purple_connection_get_protocol_data(gc); JabberChat *chat = jabber_chat_find_by_id(js, id); if(!chat) diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/jabber/jabber.c Sun Apr 26 02:18:03 2009 +0000 @@ -79,6 +79,10 @@ "xmlns:stream='http://etherx.jabber.org/streams' " "version='1.0'>", js->user->domain); + if (js->reinit) + /* Close down the current stream to keep the XML parser happy */ + jabber_parser_close_stream(js); + /* setup the parser fresh for each stream */ jabber_parser_setup(js); jabber_send_raw(js, open_stream, -1); @@ -628,6 +632,9 @@ static void tls_init(JabberStream *js) { + /* Close down the current stream to keep the XML parser happy */ + jabber_parser_close_stream(js); + purple_input_remove(js->gc->inpa); js->gc->inpa = 0; js->gsc = purple_ssl_connect_with_host_fd(js->gc->account, js->fd, @@ -1335,6 +1342,16 @@ if (!gc->disconnect_timeout) jabber_send_raw(js, "", -1); + if (!purple_account_get_current_error(purple_connection_get_account(gc))) { + /* + * The common case is user-triggered, so we never receive a + * from the server when disconnecting, so silence the + * parser's warnings. On errors, though, the server terminated the + * connection, so we should have received a real . + */ + jabber_parser_close_stream(js); + } + if (js->srv_query_data) purple_srv_cancel(js->srv_query_data); @@ -2305,7 +2322,25 @@ if (!chat) return PURPLE_CMD_RET_FAILED; - jabber_chat_change_topic(chat, args ? args[0] : NULL); + if (args && args[0] && *args[0]) + jabber_chat_change_topic(chat, args[0]); + else { + const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv)); + char *buf, *tmp, *tmp2; + + if (cur) { + tmp = g_markup_escape_text(cur, -1); + tmp2 = purple_markup_linkify(tmp); + buf = g_strdup_printf(_("current topic is: %s"), tmp2); + g_free(tmp); + g_free(tmp2); + } else + buf = g_strdup(_("No topic is set")); + purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf, + PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL)); + g_free(buf); + } + return PURPLE_CMD_RET_OK; } diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/jabber/message.c --- a/libpurple/protocols/jabber/message.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/jabber/message.c Sun Apr 26 02:18:03 2009 +0000 @@ -597,8 +597,11 @@ /* The following tests expect xmlns != NULL */ continue; } else if(!strcmp(child->name, "subject") && !strcmp(xmlns,"jabber:client")) { - if(!jm->subject) + if(!jm->subject) { jm->subject = xmlnode_get_data(child); + if(!jm->subject) + jm->subject = g_strdup(""); + } } else if(!strcmp(child->name, "thread") && !strcmp(xmlns,"jabber:client")) { if(!jm->thread_id) jm->thread_id = xmlnode_get_data(child); diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/jabber/parser.c --- a/libpurple/protocols/jabber/parser.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/jabber/parser.c Sun Apr 26 02:18:03 2009 +0000 @@ -207,6 +207,12 @@ jabber_parser_free(js); } +void +jabber_parser_close_stream(JabberStream *js) +{ + xmlParseChunk(js->context, "", 16 /* length */, 0); +} + void jabber_parser_free(JabberStream *js) { if (js->context) { xmlParseChunk(js->context, NULL,0,1); @@ -226,8 +232,17 @@ xmlParseChunk(js->context, "", 0, 0); } else if ((ret = xmlParseChunk(js->context, buf, len, 0)) != XML_ERR_OK) { xmlError *err = xmlCtxtGetLastError(js->context); + /* + * libxml2 uses a global setting to determine whether or not to store + * warnings. Other libraries may set this, which causes err to be + * NULL. See #8136 for details. + */ + xmlErrorLevel level = XML_ERR_WARNING; - switch (err->level) { + if (err) + level = err->level; + + switch (level) { case XML_ERR_NONE: purple_debug_info("jabber", "xmlParseChunk returned info %i\n", ret); break; diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/protocols/jabber/parser.h --- a/libpurple/protocols/jabber/parser.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/protocols/jabber/parser.h Sun Apr 26 02:18:03 2009 +0000 @@ -25,6 +25,7 @@ #include "jabber.h" void jabber_parser_setup(JabberStream *js); +void jabber_parser_close_stream(JabberStream *js); void jabber_parser_free(JabberStream *js); void jabber_parser_process(JabberStream *js, const char *buf, int len); diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/smiley.h --- a/libpurple/smiley.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/smiley.h Sun Apr 26 02:18:03 2009 +0000 @@ -61,44 +61,41 @@ /*@{*/ /** - * GObject foo. + * GObject-fu. * @internal. */ GType purple_smiley_get_type(void); /** - * Creates a new custom smiley structure and populates it. + * Creates a new custom smiley from a PurpleStoredImage. * - * If a custom smiley with the informed shortcut already exist, it + * If a custom smiley with the given shortcut already exists, it * will be automaticaly returned. * * @param img The image associated with the smiley. - * @param shortcut The custom smiley associated shortcut. + * @param shortcut The associated shortcut (e.g. "(homer)"). * - * @return The custom smiley structure filled up. + * @return The custom smiley. */ PurpleSmiley * purple_smiley_new(PurpleStoredImage *img, const char *shortcut); /** - * Creates a new custom smiley structure and populates it. + * Creates a new custom smiley, reading the image data from a file. * - * The data is retrieved from an already existent file. - * - * If a custom smiley with the informed shortcut already exist, it + * If a custom smiley with the given shortcut already exists, it * will be automaticaly returned. * - * @param shortcut The custom smiley associated shortcut. - * @param filepath The image file to be imported to a - * new custom smiley. + * @param shortcut The associated shortcut (e.g. "(homer)"). + * @param filepath The image file. * - * @return The custom smiley structure filled up. + * @return The custom smiley. */ PurpleSmiley * purple_smiley_new_from_file(const char *shortcut, const char *filepath); /** - * Destroy the custom smiley and release the associated resources. + * Destroys the custom smiley and release the associated resources. * * @param smiley The custom smiley. */ @@ -109,32 +106,28 @@ * Changes the custom smiley's shortcut. * * @param smiley The custom smiley. - * @param shortcut The custom smiley associated shortcut. + * @param shortcut The new shortcut. A custom smiley with this shortcut + * cannot already be in use. * - * @return TRUE whether the shortcut is not associated with another - * custom smiley and the parameters are valid. FALSE otherwise. + * @return TRUE if the shortcut was changed. FALSE otherwise. */ gboolean purple_smiley_set_shortcut(PurpleSmiley *smiley, const char *shortcut); /** - * Changes the custom smiley's data. - * - * When the filename controling is made outside this API, the param - * #keepfilename must be TRUE. - * Otherwise, the file and filename will be regenerated, and the - * old one will be removed. + * Changes the custom smiley's image data. * * @param smiley The custom smiley. - * @param smiley_data The custom smiley data. - * @param smiley_data_len The custom smiley data length. + * @param smiley_data The custom smiley data, which the smiley code + * takes ownership of and will free. + * @param smiley_data_len The length of the data in @a smiley_data. */ void purple_smiley_set_data(PurpleSmiley *smiley, guchar *smiley_data, size_t smiley_data_len); /** - * Returns the custom smiley's associated shortcut. + * Returns the custom smiley's associated shortcut (e.g. "(homer)"). * * @param smiley The custom smiley. * @@ -155,11 +148,11 @@ * Returns the PurpleStoredImage with the reference counter incremented. * * The returned PurpleStoredImage reference counter must be decremented - * after use. + * when the caller is done using it. * * @param smiley The custom smiley. * - * @return A PurpleStoredImage reference. + * @return A PurpleStoredImage. */ PurpleStoredImage *purple_smiley_get_stored_image(const PurpleSmiley *smiley); @@ -167,7 +160,7 @@ * Returns the custom smiley's data. * * @param smiley The custom smiley. - * @param len If not @c NULL, the length of the icon data returned + * @param len If not @c NULL, the length of the image data returned * will be set in the location pointed to by this. * * @return A pointer to the custom smiley data. @@ -194,6 +187,8 @@ * directly. If you find yourself wanting to use this function, think * very long and hard about it, and then don't. * + * Think some more. + * * @param smiley The custom smiley. * * @return A full path to the file, or @c NULL under various conditions. @@ -210,7 +205,8 @@ /*@{*/ /** - * Returns a list of all custom smileys. The caller should free the list. + * Returns a list of all custom smileys. The caller is responsible for freeing + * the list. * * @return A list of all custom smileys. */ @@ -218,23 +214,21 @@ purple_smileys_get_all(void); /** - * Returns the custom smiley given it's shortcut. + * Returns a custom smiley given its shortcut. * * @param shortcut The custom smiley's shortcut. * - * @return The custom smiley (with a reference for the caller) if found, - * or @c NULL if not found. + * @return The custom smiley if found, or @c NULL if not found. */ PurpleSmiley * purple_smileys_find_by_shortcut(const char *shortcut); /** - * Returns the custom smiley given it's checksum. + * Returns a custom smiley given its checksum. * * @param checksum The custom smiley's checksum. * - * @return The custom smiley (with a reference for the caller) if found, - * or @c NULL if not found. + * @return The custom smiley if found, or @c NULL if not found. */ PurpleSmiley * purple_smileys_find_by_checksum(const char *checksum); @@ -242,10 +236,9 @@ /** * Returns the directory used to store custom smiley cached files. * - * The default directory is PURPLEDIR/smileys, unless otherwise specified - * by purple_buddy_icons_set_cache_dir(). + * The default directory is PURPLEDIR/custom_smiley. * - * @return The directory to store custom smyles cached files to. + * @return The directory in which to store custom smileys cached files. */ const char *purple_smileys_get_storing_dir(void); diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/sound-theme.h --- a/libpurple/sound-theme.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/sound-theme.h Sun Apr 26 02:18:03 2009 +0000 @@ -73,6 +73,7 @@ /** * Returns a copy of the filename for the sound event. * + * @param theme The theme. * @param event The purple sound event to look up. * * @returns The filename of the sound event. @@ -83,6 +84,7 @@ /** * Returns a copy of the directory and filename for the sound event * + * @param theme The theme. * @param event The purple sound event to look up * * @returns The directory + '/' + filename of the sound event. This is @@ -94,8 +96,9 @@ /** * Sets the filename for a given sound event * - * @param event the purple sound event to look up - * @param filename the name of the file to be used for the event + * @param theme The theme. + * @param event the purple sound event to look up + * @param filename the name of the file to be used for the event */ void purple_sound_theme_set_file(PurpleSoundTheme *theme, const gchar *event, diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/theme-loader.h --- a/libpurple/theme-loader.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/theme-loader.h Sun Apr 26 02:18:03 2009 +0000 @@ -82,7 +82,8 @@ /** * Creates a new PurpleTheme * - * @param dir The directory containing the theme + * @param loader The theme loader + * @param dir The directory containing the theme * * @returns A PurpleTheme containing the information from the directory */ diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/theme-manager.h --- a/libpurple/theme-manager.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/theme-manager.h Sun Apr 26 02:18:03 2009 +0000 @@ -1,5 +1,5 @@ /** - * @file thememanager.h Theme Manager API + * @file theme-manager.h Theme Manager API */ /* diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/xmlnode.c --- a/libpurple/xmlnode.c Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/xmlnode.c Sun Apr 26 02:18:03 2009 +0000 @@ -647,6 +647,28 @@ purple_debug_error("xmlnode", "Error parsing xml file: %s", errmsg); } +static void +xmlnode_parser_structural_error_libxml(void *user_data, xmlErrorPtr error) +{ + struct _xmlnode_parser_data *xpd = user_data; + + if (error && (error->level == XML_ERR_ERROR || + error->level == XML_ERR_FATAL)) { + xpd->error = TRUE; + purple_debug_error("xmlnode", "XML parser error for xmlnode %p: " + "Domain %i, code %i, level %i: %s", + user_data, error->domain, error->code, error->level, + error->message ? error->message : "(null)\n"); + } else if (error) + purple_debug_warning("xmlnode", "XML parser error for xmlnode %p: " + "Domain %i, code %i, level %i: %s", + user_data, error->domain, error->code, error->level, + error->message ? error->message : "(null)\n"); + else + purple_debug_warning("xmlnode", "XML parser error for xmlnode %p\n", + user_data); +} + static xmlSAXHandler xmlnode_parser_libxml = { NULL, /* internalSubset */ NULL, /* isStandalone */ @@ -679,7 +701,7 @@ NULL, /* _private */ xmlnode_parser_element_start_libxml, /* startElementNs */ xmlnode_parser_element_end_libxml, /* endElementNs */ - NULL, /* serror */ + xmlnode_parser_structural_error_libxml, /* serror */ }; xmlnode * diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac libpurple/xmlnode.h --- a/libpurple/xmlnode.h Sat Apr 25 23:21:31 2009 +0000 +++ b/libpurple/xmlnode.h Sun Apr 26 02:18:03 2009 +0000 @@ -335,11 +335,14 @@ * root node of an XML document will parse the entire document * into a tree of nodes, and return the xmlnode of the root. * - * @param str The string of xml. - * @param description The description of the file being parsed - * @process The utility that is calling xmlnode_from_file + * @param dir The directory where the file is located + * @param filename The filename + * @param description A description of the file being parsed. Displayed to + * the user if the file cannot be read. + * @param process The subsystem that is calling xmlnode_from_file. Used as + * the category for debugging. * - * @return The new node. + * @return The new node or NULL if an error occurred. * * @since 2.6.0 */ diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac pidgin/gtkblist-theme.h --- a/pidgin/gtkblist-theme.h Sat Apr 25 23:21:31 2009 +0000 +++ b/pidgin/gtkblist-theme.h Sun Apr 26 02:18:03 2009 +0000 @@ -341,7 +341,7 @@ * Sets the text color and font to be used for expanded groups. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -357,7 +357,7 @@ * Sets the text color and font to be used for expanded groups. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -373,7 +373,7 @@ * Sets the text color and font to be used for expanded contacts. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -381,7 +381,7 @@ * Sets the text color and font to be used for online buddies. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -389,7 +389,7 @@ * Sets the text color and font to be used for away and idle buddies. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -397,7 +397,7 @@ * Sets the text color and font to be used for offline buddies. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -405,7 +405,7 @@ * Sets the text color and font to be used for idle buddies. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -413,7 +413,7 @@ * Sets the text color and font to be used for buddies with unread messages. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -422,7 +422,7 @@ * that mention your nick. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); @@ -430,7 +430,7 @@ * Sets the text color and font to be used for buddy status messages. * * @param theme The PidginBlist theme. - * @param pair The new text font at color pair. + * @param pair The new text font and color pair. */ void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, const PidginThemeFont *pair); diff -r 4a3a0c47dfe1 -r 8a77e6cd7eac pidgin/gtkicon-theme.h --- a/pidgin/gtkicon-theme.h Sat Apr 25 23:21:31 2009 +0000 +++ b/pidgin/gtkicon-theme.h Sun Apr 26 02:18:03 2009 +0000 @@ -72,6 +72,7 @@ /** * Returns a copy of the filename for the icon event or NULL if it is not set * + * @param theme the theme * @param event the pidgin icon event to look up * * @returns the filename of the icon event @@ -82,6 +83,7 @@ /** * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme * + * @param theme the theme * @param icon_id a string representing what the icon is to be used for * @param filename the name of the file to be used for the given id */