# HG changeset patch # User Richard Nelson # Date 1177934535 0 # Node ID 8eed567eee39b521740e39f2467f87bf8b325ba6 # Parent a73c9decc42088a331c618f57cc66682ebceb1c3# Parent 3af867ef5a15fe93ef25a8c8205d0e587a1772a9 propagate from branch 'im.pidgin.pidgin' (head 15e8fddee885a9fd505a14ff31f33608aebc8e28) to branch 'im.pidgin.finch.workspaces' (head a77bce57064ffb1489711ce04e2c0363661f652d) diff -r 3af867ef5a15 -r 8eed567eee39 ChangeLog.API --- a/ChangeLog.API Sun Apr 29 01:09:18 2007 +0000 +++ b/ChangeLog.API Mon Apr 30 12:02:15 2007 +0000 @@ -164,14 +164,23 @@ * gaim_gtk_buddy_icon_get_scale_size() was changed to accept an additional parameter which is used to determine what kind of scaling should be done, if any. - * purple_request_input(), purple_request_choice(), - purple_request_choice_varg(), purple_request_action(), - purple_request_action_varg(), purple_request_fields(), - purple_request_yes_no(), purple_request_ok_cancel(), - purple_request_accept_cancel(), purple_request_file(), and - purple_request_folder() was changed to accept account, who, and - conversation parameters for associating the request with an account, a - buddy, or a conversation. + * purple_request_input(), purple_request_choice(), + purple_request_choice_varg(), purple_request_action(), + purple_request_action_varg(), purple_request_fields(), + purple_request_yes_no(), purple_request_ok_cancel(), + purple_request_accept_cancel(), purple_request_file(), and + purple_request_folder() was changed to accept account, who, and + conversation parameters for associating the request with an account, a + buddy, or a conversation. + * Significant changes to the buddy icon and imgstore APIs. If you + were using any of it, it's best to look at the header files or + Doxygen documentation, but here are some significant changes: + purple_buddy_icon_new() now takes ownership of ("frees") icon_data + purple_buddy_icon_set_data(): likewise for data + purple_buddy_icon_set_for_user(): likewise for data + purple_buddy_icon_set_for_user() now takes a checksum parameter + purple_imgstore_add() was renamed to purple_imgstore_add_with_id() + which takes ownership of data Removed: * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute diff -r 3af867ef5a15 -r 8eed567eee39 Makefile.am --- a/Makefile.am Sun Apr 29 01:09:18 2007 +0000 +++ b/Makefile.am Mon Apr 30 12:02:15 2007 +0000 @@ -26,7 +26,7 @@ cp pidgin.spec $(distdir) rm $(distdir)/config.h -distcheck-hook: libpurple/plugins/perl/common/Purple.pm pidgin/plugins/perl/common/GtkUI.pm +distcheck-hook: libpurple/plugins/perl/common/Purple.pm pidgin/plugins/perl/common/Pidgin.pm # cp libpurple/plugins/perl/common/Gaim.pm $(distdir)/libpurple/plugins/perl/common appsdir = $(datadir)/applications diff -r 3af867ef5a15 -r 8eed567eee39 Makefile.mingw --- a/Makefile.mingw Sun Apr 29 01:09:18 2007 +0000 +++ b/Makefile.mingw Mon Apr 30 12:02:15 2007 +0000 @@ -92,7 +92,7 @@ $(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) clean $(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) clean $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) clean - rm -f $(PIDGIN_CONFIG_H) VERSION pidgin*.exe + rm -f $(PIDGIN_CONFIG_H) ./VERSION pidgin*.exe uninstall: rm -rf $(PURPLE_INSTALL_PERLMOD_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_DIR).release diff -r 3af867ef5a15 -r 8eed567eee39 NEWS --- a/NEWS Sun Apr 29 01:09:18 2007 +0000 +++ b/NEWS Mon Apr 30 12:02:15 2007 +0000 @@ -1,6 +1,17 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -2.0.0: +2.0.0beta7 (4/29/2007): + Sean: Beta 7. The final beta. A few major changes from beta6. For + starters, we have some new names. That's pretty cool. We have a new + logo, to go along with it. And a lot of great icons! As Nathan mentions + below, we're totally back in the open now, having a signed agreement + from AOL that puts us in the clear. We all really regret having to go + completely dark for so long. Anyway, unlike betas1-6, which were of + normal release quality, this one is actually beta quality. There are + a few significant known issues, and a lot of changes that need a lot + of real-world testing. So, if you'd like to help us out, give it a + whirl, and let us know if you run into any major issues. + Nathan: So, the secret is out now. We renamed to Pidgin. I'd just like to apologize to everyone we've had to keep in the dark for the last however-many months. I know it looked like development slowed @@ -12,13 +23,35 @@ I was. Scared, that is). The bottom line is that we're out in the open again, and fully plan to stay that way. We're also opening up the mail archives from the secretive past few months. You can scan - though them if you want, or I can summarize. "Are the lawyers done + through them if you want, or I can summarize. "Are the lawyers done yet? No. Now? No. How about now? No." All lawyer jokes aside, I'm grateful to our legal team for crossing all the 't's and dotting all the lowercase 'j's to get us the deal we got. Anyways, thanks for your patience, and on to 2.0.1! -2.0.0beta6 (1/17/2006): + Gary: Well my silence, and our silence has ended. Finally the name + change is over and done with and we can go back to a normal dev + cycle. Now if I can just get myself back onto a normal dev cycle, + but that's another story all together. + + Ethan: Not to be too "me-too", but I have to say that I'm really + excited about the project's new name and identity, and glad to be + out of the legal mess. We're pushing beta 7 with all of the + branding and organizational changes that have been going on for + the last few months, so there are likely to be some snags -- + please help us out by trying beta 7, searching for any bugs you + find in the bug tracker at http://developer.pidgin.im/, and + documenting them if they are unknown or you can provide new + information. Help us make 2.0.0 final a release to be remembered + (in a good way)! I'd like to give huge thanks to all of the + developers, our steadfast supporters, the crazy patch writers, and + everyone else who has made this transition to Pidgin possible, and + the improvements that go along with it. I'd like to extend a + special thanks to Sean, for leading us through the legal issues + and taking care of all of the paperwork and overhead that no one + wants to deal with. + +2.0.0beta6 (1/17/2007): Sean: Barring any seriously major new issues, we expect this to be the final beta release before 2.0.0. This has a bunch of cool UI changes, some Google Talk features, a bunch new plugins, and other diff -r 3af867ef5a15 -r 8eed567eee39 configure.ac --- a/configure.ac Sun Apr 29 01:09:18 2007 +0000 +++ b/configure.ac Mon Apr 30 12:02:15 2007 +0000 @@ -1,24 +1,67 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.50]) -# Making releases: -# purple_micro_version += 1 -# if any functions have been added: +# UPDATING VERSION NUMBERS FOR RELEASES +# +# purple_micro_version += 1 +# +# If any functions have been added to libpurple, Pidgin, or Finch: # purple_micro_version = 0 # purple_minor_version += 1 -# if backwards compatibility has been broken -# purple_minor_version = 0 +# purple_lt_current += 1 +# +# If backwards compatibility has been broken in libpurple, Pidgin, or Finch: # purple_micro_version = 0 +# purple_minor_version = 0 # purple_major_version += 1; +# purple_lt_current += 1 # +# purple_version_suffix should be similar to one of the following: +# For beta releases: [beta2] +# For code under development: [devel] +# For production releases: [] +# +# +# If any code has changed in libgnt: +# gnt_micro_version += 1 +# +# If any functions have been added to libgnt: +# gnt_micro_version = 0 +# gnt_minor_version += 1 +# gnt_lt_current += 1 +# +# If backwards compatibility has been broken in libgnt: +# gnt_micro_version = 0 +# gnt_minor_version = 0 +# gnt_major_version += 1; +# gnt_lt_current += 1 +# +# gnt_version_suffix should be similar to one of the following: +# For beta releases: [beta2] +# For code under development: [devel] +# For production releases: [] +# +# Make sure to update finch/libgnt/configure.ac with libgnt version changes. +# +m4_define([purple_lt_current], [0]) m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [0]) m4_define([purple_micro_version], [0]) -m4_define([purple_version_suffix], [devel]) +m4_define([purple_version_suffix], [beta7]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix])) +m4_define([gnt_lt_current], [0]) +m4_define([gnt_major_version], [1]) +m4_define([gnt_minor_version], [0]) +m4_define([gnt_micro_version], [0]) +m4_define([gnt_version_suffix], [beta7]) +m4_define([gnt_version], + [gnt_major_version.gnt_minor_version.gnt_micro_version]) +m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix])) + + AC_INIT([pidgin], [purple_display_version], [devel@pidgin.im]) AC_CANONICAL_SYSTEM @@ -35,12 +78,20 @@ AC_SUBST(PURPLE_MICRO_VERSION) AC_SUBST(PURPLE_VERSION) -m4_define([lt_current], [m4_eval(100 * purple_major_version + purple_minor_version)]) -m4_define([lt_age], [purple_minor_version]) -m4_define([lt_revision], [purple_micro_version]) -LT_VERSION_INFO="lt_current:lt_revision:lt_age" -AC_SUBST(LT_VERSION_INFO) +PURPLE_LT_VERSION_INFO="purple_lt_current:purple_micro_version:purple_minor_version" +AC_SUBST(PURPLE_LT_VERSION_INFO) +GNT_MAJOR_VERSION=gnt_major_version +GNT_MINOR_VERSION=gnt_minor_version +GNT_MICRO_VERSION=gnt_micro_version +GNT_VERSION=[gnt_display_version] +AC_SUBST(GNT_MAJOR_VERSION) +AC_SUBST(GNT_MINOR_VERSION) +AC_SUBST(GNT_MICRO_VERSION) +AC_SUBST(GNT_VERSION) + +GNT_LT_VERSION_INFO="gnt_lt_current:gnt_micro_version:gnt_minor_version" +AC_SUBST(GNT_LT_VERSION_INFO) AC_DEFINE(PIDGIN_NAME, "Pidgin", [The user-visible application name]) @@ -677,6 +728,7 @@ GADU_LIBS="$GADU_LIBS -lgadu" AC_CHECK_LIB(gadu, gg_libgadu_version, [gadu_libs=yes], , $GADU_LIBS) fi +GADU_CFLAGS=`echo $GADU_CFLAGS |$sedpath 's/-Wall//'` if test "x$gadu_libs" = "xyes"; then AC_MSG_CHECKING(for libgadu GPL compatibility) diff -r 3af867ef5a15 -r 8eed567eee39 doc/Makefile.am --- a/doc/Makefile.am Sun Apr 29 01:09:18 2007 +0000 +++ b/doc/Makefile.am Mon Apr 30 12:02:15 2007 +0000 @@ -21,6 +21,7 @@ gtklog-signals.dox \ gtkimhtml-signals.dox \ gtkrc-2.0 \ + imgstore-signals.dox \ log-signals.dox \ notify-signals.dox \ pidgin.1.in \ diff -r 3af867ef5a15 -r 8eed567eee39 doc/imgstore-signals.dox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/imgstore-signals.dox Mon Apr 30 12:02:15 2007 +0000 @@ -0,0 +1,24 @@ +/** @page imgstore-signals Image Store Signals + + @signals + @signal image-deleting + @endsignals + +
+ + @signaldef image-deleting + @signalproto +char *(*image_deleting)(const PurpleStoredImage *img); + @endsignalproto + @signaldesc + Emitted when a PurpleStoredImage is about to be destroyed. This allows + for what amounts to weak references. Code can hold onto a pointer to + the PurpleStoredImage without actually "holding" a reference. They can + then use a signal handler to let them know when their img is about to + be destroyed. + @param img The image about to be destroyed. + @note It's not possible to purple_imgstore_ref() img to save it. + @endsignaldef + +*/ +// vim: syntax=c tw=75 et diff -r 3af867ef5a15 -r 8eed567eee39 doc/pidgin.1.in --- a/doc/pidgin.1.in Sun Apr 29 01:09:18 2007 +0000 +++ b/doc/pidgin.1.in Mon Apr 30 12:02:15 2007 +0000 @@ -570,6 +570,8 @@ Our crazy patch writers include: +John 'rekkanoryo' Bailey +.br Ka-Hing 'javabsp' Cheung .br Sadrul Habib Chowdhury diff -r 3af867ef5a15 -r 8eed567eee39 finch/finch.c --- a/finch/finch.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/finch.c Mon Apr 30 12:02:15 2007 +0000 @@ -59,7 +59,13 @@ finch_prefs_init, debug_init, gnt_ui_init, - gnt_ui_uninit + gnt_ui_uninit, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurpleCoreUiOps * @@ -149,7 +155,13 @@ g_source_remove, gnt_input_add, g_source_remove, - NULL /* input_get_error */ + NULL, /* input_get_error */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurpleEventLoopUiOps * @@ -291,7 +303,7 @@ char *text = g_strdup_printf(_( "%s encountered errors migrating your settings " "from %s to %s. Please investigate and complete the " - "migration by hand."), _("Finch"), + "migration by hand. Please report this error at http://developer.pidgin.im"), _("Finch"), old, purple_user_dir()); g_free(old); diff -r 3af867ef5a15 -r 8eed567eee39 finch/gntblist.c --- a/finch/gntblist.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/gntblist.c Mon Apr 30 12:02:15 2007 +0000 @@ -1699,8 +1699,17 @@ newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext)); item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status)); - g_return_val_if_fail(item->type == STATUS_PRIMITIVE, FALSE); - newprim = item->u.prim; + + switch (item->type) { + case STATUS_PRIMITIVE: + newprim = item->u.prim; + break; + case STATUS_SAVED_POPULAR: + newprim = purple_savedstatus_get_type(item->u.saved); + break; + default: + goto end; /* 'New' or 'Saved' is selected, but this should never happen. */ + } if (newprim != prim || ((message && !newmessage) || (!message && newmessage) || @@ -1718,6 +1727,7 @@ } gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree); +end: if (ggblist->typing) g_source_remove(ggblist->typing); ggblist->typing = 0; diff -r 3af867ef5a15 -r 8eed567eee39 finch/gntconv.h --- a/finch/gntconv.h Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/gntconv.h Mon Apr 30 12:02:15 2007 +0000 @@ -49,6 +49,7 @@ GntWidget *tv; /* text-view */ GntWidget *menu; /* future use */ GntWidget *info; + void *pad; union { @@ -60,11 +61,14 @@ struct _FinchConvChat { GntWidget *userlist; /* the userlist */ + void *pad1; + void *pad2; }; struct _FinchConvIm { void *nothing_for_now; + void *something_for_later; }; /** diff -r 3af867ef5a15 -r 8eed567eee39 finch/gntdebug.c --- a/finch/gntdebug.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/gntdebug.c Mon Apr 30 12:02:15 2007 +0000 @@ -95,7 +95,13 @@ static PurpleDebugUiOps uiops = { finch_debug_print, - finch_debug_is_enabled + finch_debug_is_enabled, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; PurpleDebugUiOps *finch_debug_get_ui_ops() diff -r 3af867ef5a15 -r 8eed567eee39 finch/gntft.c --- a/finch/gntft.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/gntft.c Mon Apr 30 12:02:15 2007 +0000 @@ -498,7 +498,13 @@ finch_xfer_add_xfer, finch_xfer_update_progress, finch_xfer_cancel_local, - finch_xfer_cancel_remote + finch_xfer_cancel_remote, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /************************************************************************** diff -r 3af867ef5a15 -r 8eed567eee39 finch/gntidle.c --- a/finch/gntidle.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/gntidle.c Mon Apr 30 12:02:15 2007 +0000 @@ -35,7 +35,13 @@ static PurpleIdleUiOps ui_ops = { - finch_get_idle_time + finch_get_idle_time, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; PurpleIdleUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 finch/libgnt/Makefile.am --- a/finch/libgnt/Makefile.am Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/libgnt/Makefile.am Mon Apr 30 12:02:15 2007 +0000 @@ -78,7 +78,7 @@ $(libgnt_la_headers) libgnt_la_DEPENDENCIES = -libgnt_la_LDFLAGS = -export-dynamic +libgnt_la_LDFLAGS = -export-dynamic -version_info $(GNT_LT_VERSION_INFO) -no-undefined libgnt_la_LIBADD = \ $(GLIB_LIBS) \ $(GNT_LIBS) \ diff -r 3af867ef5a15 -r 8eed567eee39 finch/libgnt/configure.ac --- a/finch/libgnt/configure.ac Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/libgnt/configure.ac Mon Apr 30 12:02:15 2007 +0000 @@ -1,10 +1,54 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([libgnt], [0.0.0dev], [devel@pidgin.im]) +AC_PREREQ([2.50]) + +# UPDATING VERSION NUMBERS FOR RELEASES +# +# gnt_micro_version += 1 +# +# If any functions have been added to libgnt: +# gnt_micro_version = 0 +# gnt_minor_version += 1 +# gnt_lt_current += 1 +# +# If backwards compatibility has been broken in libgnt: +# gnt_micro_version = 0 +# gnt_minor_version = 0 +# gnt_major_version += 1; +# gnt_lt_current += 1 +# +# gnt_version_suffix should be similar to one of the following: +# For beta releases: [beta2] +# For code under development: [devel] +# For production releases: [] +# +# Make sure to update ../../configure.ac with libgnt version changes. +# + +m4_define([gnt_lt_current], [0]) +m4_define([gnt_major_version], [1]) +m4_define([gnt_minor_version], [0]) +m4_define([gnt_micro_version], [0]) +m4_define([gnt_version_suffix], [beta7]) +m4_define([gnt_version], + [gnt_major_version.gnt_minor_version.gnt_micro_version]) +m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix])) + +AC_INIT([libgnt], [gnt_display_version], [devel@pidgin.im]) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) -AC_PREREQ([2.50]) +GNT_MAJOR_VERSION=gnt_major_version +GNT_MINOR_VERSION=gnt_minor_version +GNT_MICRO_VERSION=gnt_micro_version +GNT_VERSION=[gnt_display_version] +AC_SUBST(GNT_MAJOR_VERSION) +AC_SUBST(GNT_MINOR_VERSION) +AC_SUBST(GNT_MICRO_VERSION) +AC_SUBST(GNT_VERSION) + +GNT_LT_VERSION_INFO="gnt_lt_current:gnt_micro_version:gnt_minor_version" +AC_SUBST(GNT_LT_VERSION_INFO) AC_PATH_PROG(sedpath, sed) diff -r 3af867ef5a15 -r 8eed567eee39 finch/plugins/gntclipboard.c --- a/finch/plugins/gntclipboard.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/plugins/gntclipboard.c Mon Apr 30 12:02:15 2007 +0000 @@ -159,6 +159,12 @@ NULL, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 finch/plugins/gntgf.c --- a/finch/plugins/gntgf.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/plugins/gntgf.c Mon Apr 30 12:02:15 2007 +0000 @@ -378,6 +378,12 @@ config_frame, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 finch/plugins/gnthistory.c --- a/finch/plugins/gnthistory.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/plugins/gnthistory.c Mon Apr 30 12:02:15 2007 +0000 @@ -190,6 +190,12 @@ NULL, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 finch/plugins/lastlog.c --- a/finch/plugins/lastlog.c Sun Apr 29 01:09:18 2007 +0000 +++ b/finch/plugins/lastlog.c Mon Apr 30 12:02:15 2007 +0000 @@ -130,6 +130,12 @@ NULL, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/Makefile.am --- a/libpurple/Makefile.am Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/Makefile.am Mon Apr 30 12:02:15 2007 +0000 @@ -173,7 +173,7 @@ libpurple_client_lib = libpurple-client.la libpurple_client_la_SOURCES = purple-client.c purple-client.h - +libpurple_client_la_LDFLAGS = -version-info $(PURPLE_LT_VERSION_INFO) -no-undefined libpurple_client_la_LIBADD = $(DBUS_LIBS) purple-client-bindings.c: dbus-analyze-functions.py $(dbus_exported) @@ -221,7 +221,7 @@ $(dbus_headers) libpurple_la_DEPENDENCIES = $(STATIC_LINK_LIBS) -libpurple_la_LDFLAGS = -export-dynamic -version-info $(LT_VERSION_INFO) -no-undefined +libpurple_la_LDFLAGS = -export-dynamic -version-info $(PURPLE_LT_VERSION_INFO) -no-undefined libpurple_la_LIBADD = \ $(DBUS_LIBS) \ $(GLIB_LIBS) \ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/Makefile.mingw --- a/libpurple/Makefile.mingw Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/Makefile.mingw Mon Apr 30 12:02:15 2007 +0000 @@ -127,7 +127,7 @@ ## clean: rm -f $(OBJECTS) $(RC_SRC) - rm -f $(TARGET).dll $(TARGET).dll.a + rm -f $(TARGET).dll $(TARGET).dll.a $(PURPLE_VERSION_H) $(MAKE) -C $(PURPLE_PROTOS_TOP) -f $(MINGW_MAKEFILE) clean $(MAKE) -C $(PURPLE_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/account.c --- a/libpurple/account.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/account.c Mon Apr 30 12:02:15 2007 +0000 @@ -802,7 +802,7 @@ xmlnode_free(node); - purple_buddy_icons_account_loaded_cb(); + _purple_buddy_icons_account_loaded_cb(); } diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/account.h --- a/libpurple/account.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/account.h Mon Apr 30 12:02:15 2007 +0000 @@ -66,6 +66,11 @@ const char *alias, const char *message, gboolean on_list, GCallback authorize_cb, GCallback deny_cb, void *user_data); void (*close_account_request)(void *ui_handle); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; struct _PurpleAccount diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/blist.c --- a/libpurple/blist.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/blist.c Mon Apr 30 12:02:15 2007 +0000 @@ -607,7 +607,7 @@ xmlnode_free(purple); /* This tells the buddy icon code to do its thing. */ - purple_buddy_icons_blist_loaded_cb(); + _purple_buddy_icons_blist_loaded_cb(); } diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/blist.h --- a/libpurple/blist.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/blist.h Mon Apr 30 12:02:15 2007 +0000 @@ -178,6 +178,11 @@ void (*request_add_chat)(PurpleAccount *account, PurpleGroup *group, const char *alias, const char *name); void (*request_add_group)(void); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/buddyicon.c --- a/libpurple/buddyicon.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/buddyicon.c Mon Apr 30 12:02:15 2007 +0000 @@ -208,10 +208,14 @@ } static void -image_deleting_cb(PurpleStoredImage *img, gpointer data) +image_deleting_cb(const PurpleStoredImage *img, gpointer data) { const char *filename = purple_imgstore_get_filename(img); + /* If there's no filename, it can't be one of our images. */ + if (filename == NULL) + return; + if (img == g_hash_table_lookup(icon_data_cache, filename)) { purple_buddy_icon_data_uncache_file(filename); @@ -219,7 +223,7 @@ /* We could make this O(1) by using another hash table, but * this is probably good enough. */ - g_hash_table_foreach_remove(pointer_icon_cache, value_equals, img); + g_hash_table_foreach_remove(pointer_icon_cache, value_equals, (gpointer)img); } } @@ -694,11 +698,13 @@ { const char *filename = purple_imgstore_get_filename(img); purple_account_set_string(account, "buddy_icon", filename); + purple_account_set_int(account, "buddy_icon_timestamp", time(NULL)); ref_filename(filename); } else { purple_account_set_string(account, "buddy_icon", NULL); + purple_account_set_int(account, "buddy_icon_timestamp", 0); } unref_filename(old_icon); @@ -721,7 +727,7 @@ if (old_img) purple_imgstore_unref(old_img); - else + else if (old_icon) { /* The old icon may not have been loaded into memory. In that * case, we'll need to uncache the filename. The filenames @@ -733,6 +739,25 @@ return img; } +time_t +purple_buddy_icons_get_account_icon_timestamp(PurpleAccount *account) +{ + time_t ret; + + g_return_val_if_fail(account != NULL, 0); + + ret = purple_account_get_int(account, "buddy_icon_timestamp", 0); + + /* This deals with migration cases. */ + if (ret == 0 && purple_account_get_string(account, "buddy_icon", NULL) != NULL) + { + ret = time(NULL); + purple_account_set_int(account, "buddy_icon_timestamp", ret); + } + + return ret; +} + PurpleStoredImage * purple_buddy_icons_find_custom_icon(PurpleContact *contact) { @@ -829,7 +854,7 @@ if (old_img) purple_imgstore_unref(old_img); - else + else if (old_icon) { /* The old icon may not have been loaded into memory. In that * case, we'll need to uncache the filename. The filenames @@ -842,7 +867,7 @@ } void -purple_buddy_icon_set_old_icons_dir(const char *dirname) +_purple_buddy_icon_set_old_icons_dir(const char *dirname) { old_icons_dir = g_strdup(dirname); } @@ -887,9 +912,19 @@ FILE *file; char *new_filename; - if (!read_icon_file(path, &icon_data, &icon_len) || - icon_data == NULL || icon_len > 0) + if (!read_icon_file(path, &icon_data, &icon_len)) { + g_free(path); + delete_buddy_icon_settings(node, setting_name); + return; + } + + if (icon_data == NULL || icon_len <= 0) + { + /* This really applies to the icon_len check. + * icon_data should never be NULL if + * read_icon_file() returns TRUE. */ + purple_debug_error("buddyicon", "Empty buddy icon file: %s\n", path); delete_buddy_icon_settings(node, setting_name); g_free(path); return; @@ -900,8 +935,11 @@ new_filename = purple_buddy_icon_data_calculate_filename(icon_data, icon_len); if (new_filename == NULL) { + purple_debug_error("buddyicon", + "New icon filename is NULL. This should never happen! " + "The old filename was: %s\n", path); delete_buddy_icon_settings(node, setting_name); - return; + g_return_if_reached(); } path = g_build_filename(dirname, new_filename, NULL); @@ -967,14 +1005,14 @@ } else { - /* If the icon is gone, drop the setting... */ + purple_debug_error("buddyicon", "Old icon file doesn't exist: %s\n", path); delete_buddy_icon_settings(node, setting_name); g_free(path); } } void -purple_buddy_icons_account_loaded_cb() +_purple_buddy_icons_account_loaded_cb() { const char *dirname = purple_buddy_icons_get_cache_dir(); GList *cur; @@ -999,7 +1037,7 @@ } void -purple_buddy_icons_blist_loaded_cb() +_purple_buddy_icons_blist_loaded_cb() { PurpleBlistNode *node = purple_blist_get_root(); const char *dirname = purple_buddy_icons_get_cache_dir(); diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/buddyicon.h --- a/libpurple/buddyicon.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/buddyicon.h Mon Apr 30 12:02:15 2007 +0000 @@ -261,6 +261,19 @@ guchar *icon_data, size_t icon_len); /** + * Returns the timestamp of when the icon was set. + * + * This is intended for use in protocols that require a timestamp for + * buddy icon update reasons. + * + * @param account The account + * + * @return The time the icon was set, or 0 if an error occurred. + */ +time_t +purple_buddy_icons_get_account_icon_timestamp(PurpleAccount *account); + +/** * Returns the custom buddy icon image for a contact. * * The caller owns a reference to the image in the store, and must dereference diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/cipher.c --- a/libpurple/cipher.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/cipher.c Mon Apr 30 12:02:15 2007 +0000 @@ -339,7 +339,13 @@ NULL, /* set salt */ NULL, /* get salt size */ NULL, /* set key */ - NULL /* get key size */ + NULL, /* get key size */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /******************************************************************************* @@ -588,7 +594,13 @@ NULL, /* set salt */ NULL, /* get salt size */ NULL, /* set key */ - NULL /* get key size */ + NULL, /* get key size */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /****************************************************************************** @@ -1006,7 +1018,13 @@ NULL, /* set salt */ NULL, /* get salt size */ des_set_key, /* set key */ - NULL /* get key size */ + NULL, /* get key size */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; @@ -1247,7 +1265,13 @@ NULL, /* set salt */ NULL, /* get salt size */ NULL, /* set key */ - NULL /* get key size */ + NULL, /* get key size */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /******************************************************************************* diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/cipher.h --- a/libpurple/cipher.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/cipher.h Mon Apr 30 12:02:15 2007 +0000 @@ -102,6 +102,11 @@ /** The get key size function */ size_t (*get_key_size)(PurpleCipherContext *context); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/connection.h --- a/libpurple/connection.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/connection.h Mon Apr 30 12:02:15 2007 +0000 @@ -71,6 +71,10 @@ void (*network_connected)(); void (*network_disconnected)(); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleConnectionUiOps; struct _PurpleConnection diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/conversation.h --- a/libpurple/conversation.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/conversation.h Mon Apr 30 12:02:15 2007 +0000 @@ -177,6 +177,11 @@ void (*custom_smiley_close)(PurpleConversation *conv, const char *smile); void (*send_confirm)(PurpleConversation *conv, const char *message); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; /** diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/core.c --- a/libpurple/core.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/core.c Mon Apr 30 12:02:15 2007 +0000 @@ -285,7 +285,7 @@ #endif if (g_rename(path, new_name)) { - purple_debug_error("core", "Error renaming %s to %s: %s\n", + purple_debug_error("core", "Error renaming %s to %s: %s. Please report this at http://developer.pidgin.im\n", path, new_name, strerror(errno)); g_free(new_name); return FALSE; @@ -298,7 +298,7 @@ old_name = g_build_filename(old_base, basename, NULL); if (symlink(new_name, old_name)) { - purple_debug_warning("core", "Error symlinking %s to %s: %s\n", + purple_debug_warning("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", old_name, new_name, strerror(errno)); } g_free(old_name); @@ -354,7 +354,7 @@ { if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) { - purple_debug_error("core", "Error creating directory %s: %s\n", + purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", user_dir, strerror(errno)); g_free(status_file); g_free(old_user_dir); @@ -366,7 +366,7 @@ * incomplete migrations and properly retry. */ if (!(fp = g_fopen(status_file, "w"))) { - purple_debug_error("core", "Error opening file %s for writing: %s\n", + purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", status_file, strerror(errno)); g_free(status_file); g_free(old_user_dir); @@ -378,7 +378,7 @@ err = NULL; if (!(dir = g_dir_open(old_user_dir, 0, &err))) { - purple_debug_error("core", "Error opening directory %s: %s\n", + purple_debug_error("core", "Error opening directory %s: %s. Please report this at http://developer.pidgin.im\n", status_file, (err ? err->message : "Unknown error")); if (err) @@ -405,7 +405,7 @@ if ((linklen = readlink(name, buf, sizeof(buf) - 1) == -1)) { - purple_debug_error("core", "Error reading symlink %s: %s\n", + purple_debug_error("core", "Error reading symlink %s: %s. Please report this at http://developer.pidgin.im\n", name, strerror(errno)); g_free(name); g_dir_close(dir); @@ -437,7 +437,7 @@ * guaranteed. Oh well. */ if (symlink(buf, logs_dir)) { - purple_debug_error("core", "Error symlinking %s to %s: %s\n", + purple_debug_error("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", logs_dir, buf, strerror(errno)); g_free(name); g_free(logs_dir); @@ -474,7 +474,7 @@ err = NULL; if (!(icons_dir = g_dir_open(name, 0, &err))) { - purple_debug_error("core", "Error opening directory %s: %s\n", + purple_debug_error("core", "Error opening directory %s: %s. Please report this at http://developer.pidgin.im\n", name, (err ? err->message : "Unknown error")); if (err) @@ -492,7 +492,7 @@ { if (g_mkdir(new_icons_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) { - purple_debug_error("core", "Error creating directory %s: %s\n", + purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", new_icons_dir, strerror(errno)); g_free(new_icons_dir); g_dir_close(icons_dir); @@ -555,7 +555,7 @@ if (!(fp = g_fopen(name, "rb"))) { - purple_debug_error("core", "Error opening file %s for reading: %s\n", + purple_debug_error("core", "Error opening file %s for reading: %s. Please report this at http://developer.pidgin.im\n", name, strerror(errno)); g_free(name); g_dir_close(dir); @@ -567,7 +567,7 @@ new_name = g_build_filename(user_dir, entry, NULL); if (!(new_file = g_fopen(new_name, "wb"))) { - purple_debug_error("core", "Error opening file %s for writing: %s\n", + purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", new_name, strerror(errno)); fclose(fp); g_free(new_name); @@ -586,7 +586,7 @@ size = fread(buf, 1, sizeof(buf), fp); if (size != sizeof(buf) && !feof(fp)) { - purple_debug_error("core", "Error reading %s: %s\n", + purple_debug_error("core", "Error reading %s: %s. Please report this at http://developer.pidgin.im\n", name, strerror(errno)); fclose(new_file); fclose(fp); @@ -600,7 +600,7 @@ if (!fwrite(buf, size, 1, new_file) && ferror(new_file) != 0) { - purple_debug_error("core", "Error writing %s: %s\n", + purple_debug_error("core", "Error writing %s: %s. Please report this at http://developer.pidgin.im\n", new_name, strerror(errno)); fclose(new_file); fclose(fp); @@ -615,7 +615,7 @@ if (fclose(new_file)) { - purple_debug_error("core", "Error writing: %s: %s\n", + purple_debug_error("core", "Error writing: %s: %s. Please report this at http://developer.pidgin.im\n", new_name, strerror(errno)); } if (fclose(fp)) @@ -634,14 +634,14 @@ /* The migration was successful, so delete the status file. */ if (g_unlink(status_file)) { - purple_debug_error("core", "Error unlinking file %s: %s\n", + purple_debug_error("core", "Error unlinking file %s: %s. Please report this at http://developer.pidgin.im\n", status_file, strerror(errno)); g_free(status_file); return FALSE; } old_icons_dir = g_build_filename(old_user_dir, "icons", NULL); - purple_buddy_icon_set_old_icons_dir(old_icons_dir); + _purple_buddy_icon_set_old_icons_dir(old_icons_dir); g_free(old_icons_dir); g_free(old_user_dir); diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/core.h --- a/libpurple/core.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/core.h Mon Apr 30 12:02:15 2007 +0000 @@ -33,6 +33,10 @@ void (*ui_init)(void); void (*quit)(void); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleCoreUiOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/debug.h --- a/libpurple/debug.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/debug.h Mon Apr 30 12:02:15 2007 +0000 @@ -51,6 +51,11 @@ const char *arg_s); gboolean (*is_enabled)(PurpleDebugLevel level, const char *category); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleDebugUiOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/dnsquery.c --- a/libpurple/dnsquery.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/dnsquery.c Mon Apr 30 12:02:15 2007 +0000 @@ -140,7 +140,7 @@ * Begin the DNS resolver child process functions. */ #ifdef HAVE_SIGNAL_H -static void +G_GNUC_NORETURN static void trap_gdb_bug() { const char *message = @@ -158,7 +158,7 @@ } #endif -static void +G_GNUC_NORETURN static void purple_dnsquery_resolver_run(int child_out, int child_in, gboolean show_debug) { dns_params_t dns_params; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/dnsquery.h --- a/libpurple/dnsquery.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/dnsquery.h Mon Apr 30 12:02:15 2007 +0000 @@ -57,6 +57,11 @@ * resolve_host is not implemented. */ void (*destroy)(PurpleDnsQueryData *query_data); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleDnsQueryUiOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/dnssrv.c --- a/libpurple/dnssrv.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/dnssrv.c Mon Apr 30 12:02:15 2007 +0000 @@ -92,7 +92,7 @@ #ifndef _WIN32 -static void +G_GNUC_NORETURN static void resolve(int in, int out) { GList *ret = NULL; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/eventloop.h --- a/libpurple/eventloop.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/eventloop.h Mon Apr 30 12:02:15 2007 +0000 @@ -81,6 +81,10 @@ */ int (*input_get_error)(int fd, int *error); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; /**************************************************************************/ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/example/nullclient.c --- a/libpurple/example/nullclient.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/example/nullclient.c Mon Apr 30 12:02:15 2007 +0000 @@ -107,6 +107,12 @@ g_source_remove, glib_input_add, g_source_remove, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; /*** End of the eventloop functions. ***/ @@ -149,6 +155,12 @@ NULL, NULL, null_ui_init, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/ft.h --- a/libpurple/ft.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/ft.h Mon Apr 30 12:02:15 2007 +0000 @@ -77,6 +77,10 @@ void (*cancel_local)(PurpleXfer *xfer); void (*cancel_remote)(PurpleXfer *xfer); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleXferUiOps; /** diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/gaim-compat.h --- a/libpurple/gaim-compat.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/gaim-compat.h Mon Apr 30 12:02:15 2007 +0000 @@ -345,7 +345,7 @@ #define gaim_buddy_icon_update purple_buddy_icon_update #define gaim_buddy_icon_set_data(icon, data, len) \ - purple_buddy_icon_set_protocol_data(icon, g_memdup(data, len), len, NULL); + purple_buddy_icon_set_data(icon, g_memdup(data, len), len, NULL); #define gaim_buddy_icon_get_account purple_buddy_icon_get_account #define gaim_buddy_icon_get_username purple_buddy_icon_get_username @@ -353,7 +353,7 @@ #define gaim_buddy_icon_get_type purple_buddy_icon_get_extension #define gaim_buddy_icons_set_for_user(icon, data, len) \ - purple_buddy_icons_set_for_user(icon, g_memdup(data, len), len) + purple_buddy_icons_set_for_user(icon, g_memdup(data, len), len, NULL) #define gaim_buddy_icons_find purple_buddy_icons_find #define gaim_buddy_icons_set_caching purple_buddy_icons_set_caching #define gaim_buddy_icons_is_caching purple_buddy_icons_is_caching @@ -961,7 +961,8 @@ #define GaimStoredImage PurpleStoredImage -#define gaim_imgstore_add(data, size, filename) purple_imgstore_add_with_id(g_memdup(data, size), size, filename) +#define gaim_imgstore_add(data, size, filename) \ + purple_imgstore_add_with_id(g_memdup(data, size), size, filename) #define gaim_imgstore_get purple_imgstore_find_by_id #define gaim_imgstore_get_data purple_imgstore_get_data #define gaim_imgstore_get_size purple_imgstore_get_size diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/idle.h --- a/libpurple/idle.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/idle.h Mon Apr 30 12:02:15 2007 +0000 @@ -31,6 +31,11 @@ typedef struct { time_t (*get_time_idle)(void); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleIdleUiOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/imgstore.c --- a/libpurple/imgstore.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/imgstore.c Mon Apr 30 12:02:15 2007 +0000 @@ -98,7 +98,7 @@ return img->size; } -const char *purple_imgstore_get_filename(PurpleStoredImage *img) +const char *purple_imgstore_get_filename(const PurpleStoredImage *img) { g_return_val_if_fail(img != NULL, NULL); diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/imgstore.h --- a/libpurple/imgstore.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/imgstore.h Mon Apr 30 12:02:15 2007 +0000 @@ -110,7 +110,7 @@ * @return A pointer to the filename, which must not * be freed or modified. */ -const char *purple_imgstore_get_filename(PurpleStoredImage *img); +const char *purple_imgstore_get_filename(const PurpleStoredImage *img); /** * Returns an extension corresponding to the image's file type. diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/internal.h --- a/libpurple/internal.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/internal.h Mon Apr 30 12:02:15 2007 +0000 @@ -187,17 +187,17 @@ /* This is for the accounts code to notify the buddy icon code that * it's done loading. We may want to replace this with a signal. */ void -purple_buddy_icons_account_loaded_cb(void); +_purple_buddy_icons_account_loaded_cb(void); /* This is for the buddy list to notify the buddy icon code that * it's done loading. We may want to replace this with a signal. */ void -purple_buddy_icons_blist_loaded_cb(void); +_purple_buddy_icons_blist_loaded_cb(void); /* This is for the purple_core_migrate() code to tell the buddy * icon subsystem about the old icons directory so it can * migrate any icons in use. */ void -purple_buddy_icon_set_old_icons_dir(const char *dirname); +_purple_buddy_icon_set_old_icons_dir(const char *dirname); #endif /* _PURPLE_INTERNAL_H_ */ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/log.h --- a/libpurple/log.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/log.h Mon Apr 30 12:02:15 2007 +0000 @@ -109,6 +109,11 @@ /* Tests whether a log is deletable */ gboolean (*is_deletable)(PurpleLog *log); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; /** diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/notify.h --- a/libpurple/notify.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/notify.h Mon Apr 30 12:02:15 2007 +0000 @@ -171,6 +171,10 @@ void (*close_notify)(PurpleNotifyType type, void *ui_handle); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleNotifyUiOps; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugin.h --- a/libpurple/plugin.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugin.h Mon Apr 30 12:02:15 2007 +0000 @@ -102,6 +102,11 @@ void *extra_info; PurplePluginUiInfo *prefs_info; /**< Used by any plugin to display preferences. If #ui_info has been specified, this will be ignored. */ GList *(*actions)(PurplePlugin *plugin, gpointer context); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; /** @@ -115,6 +120,11 @@ gboolean (*load)(PurplePlugin *plugin); gboolean (*unload)(PurplePlugin *plugin); void (*destroy)(PurplePlugin *plugin); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; /** @@ -132,6 +142,11 @@ void *extra; /**< Plugin-specific data. */ gboolean unloadable; /**< Unloadable */ GList *dependent_plugins; /**< Plugins depending on this */ + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #define PURPLE_PLUGIN_LOADER_INFO(plugin) \ @@ -142,6 +157,11 @@ int page_num; /**< Reserved */ PurplePluginPrefFrame *frame; /**< Reserved */ + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #define PURPLE_PLUGIN_HAS_PREF_FRAME(plugin) \ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/autoaccept.c --- a/libpurple/plugins/autoaccept.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/autoaccept.c Mon Apr 30 12:02:15 2007 +0000 @@ -231,6 +231,12 @@ get_plugin_pref_frame, 0, NULL, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -258,7 +264,13 @@ NULL, /* ui_info */ NULL, /* extra_info */ &prefs_info, /* prefs_info */ - NULL /* actions */ + NULL, /* actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/buddynote.c --- a/libpurple/plugins/buddynote.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/buddynote.c Mon Apr 30 12:02:15 2007 +0000 @@ -97,7 +97,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/dbus-example.c --- a/libpurple/plugins/dbus-example.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/dbus-example.c Mon Apr 30 12:02:15 2007 +0000 @@ -168,6 +168,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/idle.c --- a/libpurple/plugins/idle.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/idle.c Mon Apr 30 12:02:15 2007 +0000 @@ -327,7 +327,13 @@ NULL, NULL, NULL, - actions + actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/joinpart.c --- a/libpurple/plugins/joinpart.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/joinpart.c Mon Apr 30 12:02:15 2007 +0000 @@ -246,7 +246,13 @@ static PurplePluginUiInfo prefs_info = { get_plugin_pref_frame, 0, /* page_num (reserved) */ - NULL /* frame (reserved) */ + NULL, /* frame (reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -279,7 +285,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/log_reader.c Mon Apr 30 12:02:15 2007 +0000 @@ -2109,7 +2109,13 @@ static PurplePluginUiInfo prefs_info = { get_plugin_pref_frame, 0, /* page_num (reserved) */ - NULL /* frame (reserved) */ + NULL, /* frame (reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -2145,7 +2151,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; PURPLE_INIT_PLUGIN(log_reader, init_plugin, info) diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/mono/loader/mono.c --- a/libpurple/plugins/mono/loader/mono.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/mono/loader/mono.c Mon Apr 30 12:02:15 2007 +0000 @@ -194,7 +194,13 @@ probe_mono_plugin, load_mono_plugin, unload_mono_plugin, - destroy_mono_plugin + destroy_mono_plugin, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -220,6 +226,12 @@ NULL, &loader_info, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/newline.c --- a/libpurple/plugins/newline.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/newline.c Mon Apr 30 12:02:15 2007 +0000 @@ -81,7 +81,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/offlinemsg.c --- a/libpurple/plugins/offlinemsg.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/offlinemsg.c Mon Apr 30 12:02:15 2007 +0000 @@ -199,6 +199,12 @@ static PurplePluginUiInfo prefs_info = { get_plugin_pref_frame, 0, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; @@ -228,7 +234,13 @@ NULL, /* ui_info */ NULL, /* extra_info */ &prefs_info, /* prefs_info */ - NULL /* actions */ + NULL, /* actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/perl/perl.c --- a/libpurple/plugins/perl/perl.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/perl/perl.c Mon Apr 30 12:02:15 2007 +0000 @@ -572,7 +572,13 @@ probe_perl_plugin, /**< probe */ load_perl_plugin, /**< load */ unload_perl_plugin, /**< unload */ - destroy_perl_plugin /**< destroy */ + destroy_perl_plugin, /**< destroy */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -601,6 +607,12 @@ NULL, /**< ui_info */ &loader_info, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/psychic.c --- a/libpurple/plugins/psychic.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/psychic.c Mon Apr 30 12:02:15 2007 +0000 @@ -9,6 +9,7 @@ #include "signals.h" #include "status.h" #include "version.h" +#include "privacy.h" #include "plugin.h" #include "pluginpref.h" @@ -47,6 +48,11 @@ return; } + if(FALSE == purple_privacy_check(acct, name)) { + purple_debug_info("psychic", "user %s is blocked", name); + return; + } + gconv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, acct); if(! gconv) { purple_debug_info("psychic", "no previous conversation exists\n"); @@ -120,6 +126,12 @@ get_plugin_pref_frame, 0, /* page_num (Reserved) */ NULL, /* frame (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; @@ -149,6 +161,12 @@ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/ssl/ssl-gnutls.c --- a/libpurple/plugins/ssl/ssl-gnutls.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Mon Apr 30 12:02:15 2007 +0000 @@ -208,7 +208,13 @@ ssl_gnutls_connect, ssl_gnutls_close, ssl_gnutls_read, - ssl_gnutls_write + ssl_gnutls_write, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; #endif /* HAVE_GNUTLS */ @@ -270,7 +276,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/ssl/ssl-nss.c --- a/libpurple/plugins/ssl/ssl-nss.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/ssl/ssl-nss.c Mon Apr 30 12:02:15 2007 +0000 @@ -359,7 +359,13 @@ ssl_nss_connect, ssl_nss_close, ssl_nss_read, - ssl_nss_write + ssl_nss_write, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; #endif /* HAVE_NSS */ @@ -422,7 +428,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/ssl/ssl.c --- a/libpurple/plugins/ssl/ssl.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/ssl/ssl.c Mon Apr 30 12:02:15 2007 +0000 @@ -107,6 +107,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/statenotify.c --- a/libpurple/plugins/statenotify.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/statenotify.c Mon Apr 30 12:02:15 2007 +0000 @@ -124,7 +124,13 @@ { get_plugin_pref_frame, 0, /* page_num (Reserved) */ - NULL /* frame (Reserved) */ + NULL, /* frame (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -157,6 +163,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/plugins/tcl/tcl.c --- a/libpurple/plugins/tcl/tcl.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/plugins/tcl/tcl.c Mon Apr 30 12:02:15 2007 +0000 @@ -399,6 +399,12 @@ tcl_load_plugin, tcl_unload_plugin, tcl_destroy_plugin, + + /* pidgin */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo tcl_info = @@ -424,6 +430,12 @@ NULL, &tcl_loader_info, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/privacy.h --- a/libpurple/privacy.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/privacy.h Mon Apr 30 12:02:15 2007 +0000 @@ -53,6 +53,10 @@ void (*deny_added)(PurpleAccount *account, const char *name); void (*deny_removed)(PurpleAccount *account, const char *name); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurplePrivacyUiOps; /** diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/bonjour/bonjour.c Mon Apr 30 12:02:15 2007 +0000 @@ -405,6 +405,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -435,6 +441,12 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/gg/gg.c --- a/libpurple/protocols/gg/gg.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/gg/gg.c Mon Apr 30 12:02:15 2007 +0000 @@ -2123,6 +2123,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /* }}} */ @@ -2153,7 +2159,13 @@ NULL, /* ui_info */ &prpl_info, /* extra_info */ NULL, /* prefs_info */ - ggp_actions /* actions */ + ggp_actions, /* actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; /* }}} */ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/irc/irc.c --- a/libpurple/protocols/irc/irc.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/irc/irc.c Mon Apr 30 12:02:15 2007 +0000 @@ -862,6 +862,12 @@ NULL, /* whiteboard_prpl_ops */ irc_send_raw, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static gboolean load_plugin (PurplePlugin *plugin) { @@ -904,7 +910,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ - irc_actions + irc_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void _init_plugin(PurplePlugin *plugin) diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/jabber/auth.c --- a/libpurple/protocols/jabber/auth.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/jabber/auth.c Mon Apr 30 12:02:15 2007 +0000 @@ -819,7 +819,7 @@ } else { response = xmlnode_new("response"); xmlnode_set_namespace(response, "urn:ietf:params:xml:ns:xmpp-sasl"); - if (c_out) { + if (clen > 0) { enc_out = purple_base64_encode((unsigned char*)c_out, clen); xmlnode_insert_data(response, enc_out, -1); g_free(enc_out); diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Mon Apr 30 12:02:15 2007 +0000 @@ -108,6 +108,12 @@ NULL, /* whiteboard_prpl_ops */ jabber_prpl_send_raw, /* send_raw */ jabber_roomlist_room_serialize, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static gboolean load_plugin(PurplePlugin *plugin) @@ -170,7 +176,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ - jabber_actions + jabber_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Mon Apr 30 12:02:15 2007 +0000 @@ -2069,6 +2069,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -2099,7 +2105,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ - msn_actions + msn_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/msn/slp.c Mon Apr 30 12:02:15 2007 +0000 @@ -955,7 +955,7 @@ if (obj == NULL) { -/* purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); */ + /* TODO purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); */ return; } diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/novell/novell.c Mon Apr 30 12:02:15 2007 +0000 @@ -3495,6 +3495,11 @@ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -3523,6 +3528,12 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/oscar/libaim.c --- a/libpurple/protocols/oscar/libaim.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/oscar/libaim.c Mon Apr 30 12:02:15 2007 +0000 @@ -92,6 +92,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -122,7 +128,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, - oscar_actions + oscar_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/oscar/libicq.c --- a/libpurple/protocols/oscar/libicq.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/oscar/libicq.c Mon Apr 30 12:02:15 2007 +0000 @@ -92,6 +92,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -122,7 +128,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, - oscar_actions + oscar_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Mon Apr 30 12:02:15 2007 +0000 @@ -1941,9 +1941,9 @@ purple_debug_info("oscar", "Sending buddy icon to %s (%d bytes)\n", userinfo->sn, len); - /* TODO: XXX: FIXME: Does this actually need the mtime of the file? */ aim_im_sendch2_icon(od, userinfo->sn, data, len, - time(NULL), aimutil_iconsum(data, len)); + purple_buddy_icons_get_account_icon_timestamp(account), + aimutil_iconsum(data, len)); } purple_imgstore_unref(img); @@ -4232,8 +4232,7 @@ gconstpointer data = purple_imgstore_get_data(img); args.iconlen = purple_imgstore_get_size(img); args.iconsum = aimutil_iconsum(data, args.iconlen); - /* TODO: XXX: FIXME: Deal with the timestamp issue. */ - args.iconstamp = time(NULL); + args.iconstamp = purple_buddy_icons_get_account_icon_timestamp(account); if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) { bi->ico_informed = FALSE; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/qq/qq.c --- a/libpurple/protocols/qq/qq.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/qq/qq.c Mon Apr 30 12:02:15 2007 +0000 @@ -698,6 +698,12 @@ NULL, /* PurpleWhiteboardPrplOps */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -727,7 +733,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ - _qq_actions + _qq_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/silc/buddy.c --- a/libpurple/protocols/silc/buddy.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/silc/buddy.c Mon Apr 30 12:02:15 2007 +0000 @@ -1706,7 +1706,7 @@ if (!mime) return; - t = purple_util_get_image_extension(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); + t = purple_imgstore_get_extension(img); if (!t || !strcmp(t, "icon")) { silc_mime_free(mime); return; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/silc/silc.c --- a/libpurple/protocols/silc/silc.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/silc/silc.c Mon Apr 30 12:02:15 2007 +0000 @@ -1716,6 +1716,12 @@ silcpurple_wb_set_brush, silcpurple_wb_send, silcpurple_wb_clear, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginProtocolInfo prpl_info = @@ -1796,6 +1802,12 @@ &silcpurple_wb_ops, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -1826,7 +1838,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, /**< prefs_info */ - silcpurple_actions + silcpurple_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/simple/simple.c --- a/libpurple/protocols/simple/simple.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/simple/simple.c Mon Apr 30 12:02:15 2007 +0000 @@ -1800,6 +1800,12 @@ NULL, /* whiteboard_prpl_ops */ simple_send_raw, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; @@ -1829,6 +1835,12 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Mon Apr 30 12:02:15 2007 +0000 @@ -76,7 +76,8 @@ purple_privacy_permit_remove(gc->account,who,TRUE); } -gboolean yahoo_privacy_check(PurpleConnection *gc, const char *who) +gboolean +yahoo_privacy_check(PurpleConnection *gc, const char *who) { /* returns TRUE if allowed through, FALSE otherwise */ gboolean permitted; @@ -3947,7 +3948,13 @@ yahoo_doodle_get_brush, yahoo_doodle_set_brush, yahoo_doodle_send_draw_list, - yahoo_doodle_clear + yahoo_doodle_clear, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginProtocolInfo prpl_info = @@ -4014,6 +4021,12 @@ &yahoo_whiteboard_prpl_ops, NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -4041,7 +4054,13 @@ NULL, /**< ui_info */ &prpl_info, /**< extra_info */ NULL, - yahoo_actions + yahoo_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/yahoo/yahoo_picture.c --- a/libpurple/protocols/yahoo/yahoo_picture.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Mon Apr 30 12:02:15 2007 +0000 @@ -546,7 +546,9 @@ /* TODO: At some point, it'd be nice to fix this for real, or * TODO: at least change it to be something like: - * TODO: purple_imgstore_get_filename(img); */ + * TODO: purple_imgstore_get_filename(img); + * TODO: But it would be great if we knew how to calculate the + * TODO: Checksum correctly. */ yd->picture_checksum = g_string_hash(s); if ((yd->picture_checksum == oldcksum) && @@ -559,10 +561,8 @@ return; } - /* TODO: FIXME: This is completely wrong. The upload code needs to - * TODO: be modified to work with a PurpleStoredImage. */ - iconfile = g_build_filename(purple_buddy_icons_get_cache_dir(), - purple_imgstore_get_filename(img), NULL); + /* We use this solely for sending a filename to the server */ + iconfile = g_strdup(purple_imgstore_get_filename(img)); d = g_new0(struct yahoo_buddy_icon_upload_data, 1); d->gc = gc; d->str = s; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/protocols/zephyr/zephyr.c --- a/libpurple/protocols/zephyr/zephyr.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Mon Apr 30 12:02:15 2007 +0000 @@ -2920,6 +2920,12 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -2950,6 +2956,12 @@ &prpl_info, /**< extra_info */ NULL, zephyr_actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void init_plugin(PurplePlugin * plugin) diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/prpl.h --- a/libpurple/prpl.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/prpl.h Mon Apr 30 12:02:15 2007 +0000 @@ -315,6 +315,11 @@ /* room list serialize */ char *(*roomlist_room_serialize)(PurpleRoomlistRoom *room); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #define PURPLE_IS_PROTOCOL_PLUGIN(plugin) \ diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/request.h --- a/libpurple/request.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/request.h Mon Apr 30 12:02:15 2007 +0000 @@ -215,6 +215,11 @@ GCallback ok_cb, GCallback cancel_cb, PurpleAccount *account, const char *who, PurpleConversation *conv, void *user_data); + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleRequestUiOps; typedef void (*PurpleRequestInputCb)(void *, const char *); diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/roomlist.h --- a/libpurple/roomlist.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/roomlist.h Mon Apr 30 12:02:15 2007 +0000 @@ -105,6 +105,11 @@ void (*add_room)(PurpleRoomlist *list, PurpleRoomlistRoom *room); /**< Add a room to the list. */ void (*in_progress)(PurpleRoomlist *list, gboolean flag); /**< Are we fetching stuff still? */ void (*destroy)(PurpleRoomlist *list); /**< We're destroying list. */ + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/savedstatuses.c --- a/libpurple/savedstatuses.c Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/savedstatuses.c Mon Apr 30 12:02:15 2007 +0000 @@ -154,7 +154,7 @@ } /** - * A magic number is calcuated for each status, and then the + * A magic number is calculated for each status, and then the * statuses are ordered by the magic number. The magic number * is the date the status was last used offset by one day for * each time the status has been used (but only by 10 days at diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/sound.h --- a/libpurple/sound.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/sound.h Mon Apr 30 12:02:15 2007 +0000 @@ -60,6 +60,10 @@ void (*play_file)(const char *filename); void (*play_event)(PurpleSoundEventID event); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleSoundUiOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/sslconn.h --- a/libpurple/sslconn.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/sslconn.h Mon Apr 30 12:02:15 2007 +0000 @@ -73,6 +73,10 @@ size_t (*read)(PurpleSslConnection *gsc, void *data, size_t len); size_t (*write)(PurpleSslConnection *gsc, const void *data, size_t len); + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleSslOps; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/whiteboard.h --- a/libpurple/whiteboard.h Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/whiteboard.h Mon Apr 30 12:02:15 2007 +0000 @@ -64,6 +64,11 @@ int x2, int y2, int color, int size); /**< draw_line function */ void (*clear)(PurpleWhiteboard *wb); /**< clear function */ + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); } PurpleWhiteboardUiOps; /** @@ -79,6 +84,11 @@ void (*set_brush) (PurpleWhiteboard *wb, int size, int color); /**< set the brush size and color */ void (*send_draw_list)(PurpleWhiteboard *wb, GList *draw_list); /**< send_draw_list function */ void (*clear)(PurpleWhiteboard *wb); /**< clear function */ + + void (*_purple_reserved1)(void); + void (*_purple_reserved2)(void); + void (*_purple_reserved3)(void); + void (*_purple_reserved4)(void); }; #ifdef __cplusplus diff -r 3af867ef5a15 -r 8eed567eee39 libpurple/win32/targets.mak --- a/libpurple/win32/targets.mak Sun Apr 29 01:09:18 2007 +0000 +++ b/libpurple/win32/targets.mak Mon Apr 30 12:02:15 2007 +0000 @@ -8,7 +8,7 @@ $(PIDGIN_CONFIG_H): $(PIDGIN_TREE_TOP)/config.h.mingw cp $(PIDGIN_TREE_TOP)/config.h.mingw $(PIDGIN_CONFIG_H) -$(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in +$(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in $(PIDGIN_TREE_TOP)/configure.ac cp $(PURPLE_VERSION_H).in $(PURPLE_VERSION_H) awk 'BEGIN {FS="[\\(\\)\\[\\]]"} \ /^m4_define..purple_major_version/ {system("sed -i -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $(PURPLE_VERSION_H)");} \ diff -r 3af867ef5a15 -r 8eed567eee39 pidgin.spec.in --- a/pidgin.spec.in Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin.spec.in Mon Apr 30 12:02:15 2007 +0000 @@ -6,10 +6,10 @@ # When not doing betas comment this out # NOTE: %defines in spec files are evaluated in comments so the correct # way to comment it out is to replace the % with # -#define beta 7 +%define beta 7 %if 0%{?beta} -%define pidginver %(echo "@VERSION@"|sed -e 's/dev//; s/beta.*//') +%define pidginver %(echo "@VERSION@"|sed -e 's/dev.*//; s/beta.*//') %else %define pidginver @VERSION@ %endif @@ -237,24 +237,24 @@ find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';' %if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libbonjour.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libbonjour.so %endif %if 0%{!?_with_meanwhile:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsametime.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libsametime.so %endif %if 0%{!?_with_mono:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/mono.so -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/*.dll +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/mono.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/*.dll %endif %if 0%{?_without_silc:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsilcpurple.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libsilcpurple.so %endif %if 0%{?_without_tcl:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/tcl.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/tcl.so %endif %if 0%{?_without_text:1} @@ -265,7 +265,7 @@ %find_lang %{name} -find $RPM_BUILD_ROOT%{_libdir}/libpurple -xtype f -print | \ +find $RPM_BUILD_ROOT%{_libdir}/purple-2 -xtype f -print | \ sed "s@^$RPM_BUILD_ROOT@@g" | \ grep -v /libbonjour.so | \ grep -v /libsametime.so | \ @@ -333,13 +333,12 @@ %doc %{_mandir}/man3*/* %dir %{_libdir}/pidgin -%dir %{perl_vendorarch}/Purple -%attr(755, root, root) %{perl_vendorarch}/Purple/* -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/GtkUI* +%attr(755, root, root) %{perl_vendorarch}/Pidgin.pm +%attr(755, root, root) %{perl_vendorarch}/auto/Pidgin %{_bindir}/pidgin %{_datadir}/pixmaps/pidgin -%{_datadir}/icons/hicolor/*/apps/pidgin.png +%{_datadir}/icons/hicolor/*/apps/pidgin.* %dir %{_datadir}/sounds/pidgin %{_datadir}/sounds/pidgin/* %{_datadir}/applications/* @@ -352,9 +351,7 @@ %{_libdir}/libpurple.so.* %dir %{_libdir}/purple-2 %attr(755, root, root) %{perl_vendorarch}/Purple.pm -%dir %{perl_vendorarch}/auto/Purple -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/Purple.so -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/autosplit.ix +%attr(755, root, root) %{perl_vendorarch}/auto/Purple %{_datadir}/pixmaps/purple @@ -365,7 +362,6 @@ %{_bindir}/purple-send-async %{_bindir}/purple-url-handler %{_libdir}/libpurple-client.so.* -%doc README.dbus %doc libpurple/purple-notifications-example %endif @@ -381,7 +377,6 @@ %doc ChangeLog.API %doc HACKING %doc PLUGIN_HOWTO -%doc PROGRAMMING_NOTES %dir %{_includedir}/libpurple %{_includedir}/libpurple/*.h @@ -397,22 +392,22 @@ %files -n libpurple-bonjour %defattr(-, root, root) -%{_libdir}/libpurple/libbonjour.* +%{_libdir}/purple-2/libbonjour.* %endif %if 0%{?_with_meanwhile:1} %files -n libpurple-meanwhile %defattr(-, root, root) -%{_libdir}/libpurple/libsametime.* +%{_libdir}/purple-2/libsametime.* %endif %if 0%{?_with_mono:1} %files libpurple-mono %defattr(-, root, root) -%{_libdir}/libpurple/mono.so -%{_libdir}/libpurple/*.dll +%{_libdir}/purple-2/mono.so +%{_libdir}/purple-2/*.dll %endif %if 0%{!?_without_text:1} @@ -436,6 +431,9 @@ %endif %changelog +* Sun Apr 29 2007 Stu Tomlinson +- Update to reflect perl Purple::GtkUI -> Pidgin change + * Wed Apr 25 2007 Stu Tomlinson - Update libpurple to pick up plugins in %%{_libdir}/purple diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkaccount.c Mon Apr 30 12:02:15 2007 +0000 @@ -2571,7 +2571,11 @@ NULL, pidgin_accounts_request_add, pidgin_accounts_request_authorization, - pidgin_accounts_request_close + pidgin_accounts_request_close, + NULL, + NULL, + NULL, + NULL }; PurpleAccountUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkblist.c Mon Apr 30 12:02:15 2007 +0000 @@ -5865,7 +5865,11 @@ pidgin_blist_set_visible, pidgin_blist_request_add_buddy, pidgin_blist_request_add_chat, - pidgin_blist_request_add_group + pidgin_blist_request_add_group, + NULL, + NULL, + NULL, + NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkconn.c --- a/pidgin/gtkconn.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkconn.c Mon Apr 30 12:02:15 2007 +0000 @@ -248,7 +248,11 @@ pidgin_connection_notice, pidgin_connection_report_disconnect, pidgin_connection_network_connected, - pidgin_connection_network_disconnected + pidgin_connection_network_disconnected, + NULL, + NULL, + NULL, + NULL }; PurpleConnectionUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkconv.c Mon Apr 30 12:02:15 2007 +0000 @@ -6161,6 +6161,10 @@ pidgin_conv_custom_smiley_write, /* custom_smiley_write */ pidgin_conv_custom_smiley_close, /* custom_smiley_close */ pidgin_conv_send_confirm, /* send_confirm */ + NULL, + NULL, + NULL, + NULL }; PurpleConversationUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkdebug.c --- a/pidgin/gtkdebug.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkdebug.c Mon Apr 30 12:02:15 2007 +0000 @@ -1116,7 +1116,11 @@ static PurpleDebugUiOps ops = { pidgin_debug_print, - pidgin_debug_is_enabled + pidgin_debug_is_enabled, + NULL, + NULL, + NULL, + NULL }; PurpleDebugUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkdialogs.c Mon Apr 30 12:02:15 2007 +0000 @@ -92,6 +92,7 @@ /* Order: Alphabetical by Last Name */ static struct developer patch_writers[] = { + {"John 'rekkanoryo' Bailey", NULL, NULL}, {"Ka-Hing 'javabsp' Cheung", NULL, NULL}, {"Felipe 'shx' Contreras", NULL, NULL}, {"Decklin Foster", NULL, NULL}, diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkdocklet.c --- a/pidgin/gtkdocklet.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkdocklet.c Mon Apr 30 12:02:15 2007 +0000 @@ -118,6 +118,9 @@ DockletStatus newstatus = DOCKLET_STATUS_OFFLINE; gboolean pending = FALSE, connecting = FALSE; + /* get the current savedstatus */ + saved_status = purple_savedstatus_get_current(); + /* determine if any ims have unseen messages */ convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT); @@ -168,7 +171,10 @@ g_list_free(convs); } else if (ui_ops->set_tooltip) { - ui_ops->set_tooltip(PIDGIN_NAME); + char *tooltip_text = g_strconcat(PIDGIN_NAME " - ", + purple_savedstatus_get_title(saved_status), NULL); + ui_ops->set_tooltip(tooltip_text); + g_free(tooltip_text); } for(l = purple_accounts_get_all(); l != NULL; l = l->next) { @@ -187,7 +193,6 @@ connecting = TRUE; } - saved_status = purple_savedstatus_get_current(); prim = purple_savedstatus_get_type(saved_status); if (pending) newstatus = DOCKLET_STATUS_PENDING; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkeventloop.c --- a/pidgin/gtkeventloop.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkeventloop.c Mon Apr 30 12:02:15 2007 +0000 @@ -119,7 +119,11 @@ g_source_remove, pidgin_input_add, g_source_remove, - NULL /* input_get_error */ + NULL, /* input_get_error */ + NULL, + NULL, + NULL, + NULL }; PurpleEventLoopUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkft.c --- a/pidgin/gtkft.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkft.c Mon Apr 30 12:02:15 2007 +0000 @@ -1222,7 +1222,11 @@ pidgin_xfer_add_xfer, pidgin_xfer_update_progress, pidgin_xfer_cancel_local, - pidgin_xfer_cancel_remote + pidgin_xfer_cancel_remote, + NULL, + NULL, + NULL, + NULL }; /************************************************************************** diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkidle.c --- a/pidgin/gtkidle.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkidle.c Mon Apr 30 12:02:15 2007 +0000 @@ -120,10 +120,14 @@ static PurpleIdleUiOps ui_ops = { #if defined(USE_SCREENSAVER) || defined(HAVE_IOKIT) - pidgin_get_time_idle + pidgin_get_time_idle, #else + NULL, +#endif /* USE_SCREENSAVER || HAVE_IOKIT */ + NULL, + NULL, + NULL, NULL -#endif /* USE_SCREENSAVER || HAVE_IOKIT */ }; PurpleIdleUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkmain.c --- a/pidgin/gtkmain.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkmain.c Mon Apr 30 12:02:15 2007 +0000 @@ -350,7 +350,11 @@ pidgin_prefs_init, debug_init, pidgin_ui_init, - pidgin_quit + pidgin_quit, + NULL, + NULL, + NULL, + NULL }; static PurpleCoreUiOps * @@ -684,7 +688,7 @@ const char *text = _( "%s encountered errors migrating your settings " "from %s to %s. Please investigate and complete the " - "migration by hand."); + "migration by hand. Please report this error at http://developer.pidgin.im"); GtkWidget *dialog; dialog = gtk_message_dialog_new(NULL, diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtknotify.c --- a/pidgin/gtknotify.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtknotify.c Mon Apr 30 12:02:15 2007 +0000 @@ -1112,7 +1112,11 @@ pidgin_notify_searchresults_new_rows, pidgin_notify_userinfo, pidgin_notify_uri, - pidgin_close_notify + pidgin_close_notify, + NULL, + NULL, + NULL, + NULL }; PurpleNotifyUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkplugin.h --- a/pidgin/gtkplugin.h Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkplugin.h Mon Apr 30 12:02:15 2007 +0000 @@ -38,6 +38,12 @@ GtkWidget *(*get_config_frame)(PurplePlugin *plugin); int page_num; /**< Reserved */ + + /* padding */ + void (*_pidgin_reserved1)(void); + void (*_pidgin_reserved2)(void); + void (*_pidgin_reserved3)(void); + void (*_pidgin_reserved4)(void); }; #define PIDGIN_PLUGIN_TYPE PIDGIN_UI diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkprivacy.c --- a/pidgin/gtkprivacy.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkprivacy.c Mon Apr 30 12:02:15 2007 +0000 @@ -644,7 +644,11 @@ pidgin_permit_added_removed, pidgin_permit_added_removed, pidgin_deny_added_removed, - pidgin_deny_added_removed + pidgin_deny_added_removed, + NULL, + NULL, + NULL, + NULL }; PurplePrivacyUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkrequest.c Mon Apr 30 12:02:15 2007 +0000 @@ -472,7 +472,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(dialog), title); - +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE); +#endif gtk_dialog_add_button(GTK_DIALOG(dialog), text_to_stock(cancel_text), 0); @@ -580,6 +582,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(dialog), title); +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE); +#endif for (i = 0; i < action_count; i++) { gtk_dialog_add_button(GTK_DIALOG(dialog), @@ -1068,6 +1073,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(win), title); +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(win), PIDGIN_ALERT_TITLE); +#endif gtk_window_set_role(GTK_WINDOW(win), "multifield"); gtk_container_set_border_width(GTK_CONTAINER(win), PIDGIN_HIG_BORDER); @@ -1542,7 +1550,8 @@ else gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(filesel), filename); } - if ((current_folder != NULL) && (*current_folder != '\0')) { + if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) && + (current_folder != NULL) && (*current_folder != '\0')) { folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), current_folder); } @@ -1609,7 +1618,7 @@ data->cbs[0] = cancel_cb; data->cbs[1] = ok_cb; data->u.file.savedialog = FALSE; - + #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ dirsel = gtk_file_chooser_dialog_new( title ? title : _("Select Folder..."), @@ -1667,7 +1676,11 @@ pidgin_request_fields, pidgin_request_file, pidgin_close_request, - pidgin_request_folder + pidgin_request_folder, + NULL, + NULL, + NULL, + NULL }; PurpleRequestUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkroomlist.c --- a/pidgin/gtkroomlist.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkroomlist.c Mon Apr 30 12:02:15 2007 +0000 @@ -789,7 +789,11 @@ pidgin_roomlist_set_fields, pidgin_roomlist_add_room, pidgin_roomlist_in_progress, - pidgin_roomlist_destroy + pidgin_roomlist_destroy, + NULL, + NULL, + NULL, + NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtksavedstatuses.c --- a/pidgin/gtksavedstatuses.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtksavedstatuses.c Mon Apr 30 12:02:15 2007 +0000 @@ -1677,7 +1677,7 @@ GList *sorted, *cur; int i = 0; int index = -1; - GdkPixbuf *pixbuf, *emblem; + GdkPixbuf *pixbuf; GtkTreeIter iter; GtkCellRenderer *text_rend; GtkCellRenderer *icon_rend; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtksound.c --- a/pidgin/gtksound.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtksound.c Mon Apr 30 12:02:15 2007 +0000 @@ -549,7 +549,11 @@ pidgin_sound_init, pidgin_sound_uninit, pidgin_sound_play_file, - pidgin_sound_play_event + pidgin_sound_play_event, + NULL, + NULL, + NULL, + NULL }; PurpleSoundUiOps * diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkstatusbox.c Mon Apr 30 12:02:15 2007 +0000 @@ -1447,11 +1447,20 @@ size_t len = 0; if (filename) data = pidgin_convert_buddy_icon(plug, filename, &len); - img = purple_buddy_icons_set_account_icon(box->account, data, len); - purple_account_set_buddy_icon_path(box->account, filename); + img = purple_buddy_icons_set_account_icon(account, data, len); + purple_account_set_buddy_icon_path(account, filename); + } + } + } - purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL)); - } + /* Even if no accounts were processed, load the icon that was set. */ + if (filename != NULL) + { + gchar *contents; + gsize size; + if (g_file_get_contents(filename, &contents, &size, NULL)) + { + img = purple_imgstore_add(contents, size, filename); } } } @@ -2071,7 +2080,9 @@ pidgin_status_box_set_buddy_icon(PidginStatusBox *status_box, PurpleStoredImage *img) { purple_imgstore_unref(status_box->buddy_icon_img); - status_box->buddy_icon_img = purple_imgstore_ref(img); + status_box->buddy_icon_img = img; + if (status_box->buddy_icon_img != NULL) + purple_imgstore_ref(status_box->buddy_icon_img); pidgin_status_box_redisplay_buddy_icon(status_box); } @@ -2225,7 +2236,8 @@ PurpleSavedStatusSub *sub = purple_savedstatus_get_substatus(ss, acct); if (sub) { const PurpleStatusType *sub_type = purple_savedstatus_substatus_get_type(sub); - if (!strcmp(purple_status_type_get_id(sub_type), + const char *subtype_status_id = purple_status_type_get_id(sub_type); + if (subtype_status_id && !strcmp(subtype_status_id, purple_status_type_get_id(acct_status_type))) found = TRUE; } diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkutils.c --- a/pidgin/gtkutils.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkutils.c Mon Apr 30 12:02:15 2007 +0000 @@ -3070,7 +3070,6 @@ for (i = 1; i < height - 1; i++) { row = pixels + (i*rowstride); if (row[3] != 0xff || row[rowstride-1] != 0xff) { - printf("0: %d, last: %d\n", row[3], row[rowstride-1]); return FALSE; } } diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/gtkwhiteboard.c --- a/pidgin/gtkwhiteboard.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/gtkwhiteboard.c Mon Apr 30 12:02:15 2007 +0000 @@ -85,7 +85,11 @@ pidgin_whiteboard_set_brush, pidgin_whiteboard_draw_brush_point, pidgin_whiteboard_draw_brush_line, - pidgin_whiteboard_clear + pidgin_whiteboard_clear, + NULL, + NULL, + NULL, + NULL }; /****************************************************************************** diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/convcolors.c --- a/pidgin/plugins/convcolors.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/convcolors.c Mon Apr 30 12:02:15 2007 +0000 @@ -319,6 +319,12 @@ { get_config_frame, 0, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -347,7 +353,13 @@ &ui_info, /* ui_info */ NULL, /* extra_info */ NULL, /* prefs_info */ - NULL /* actions */ + NULL, /* actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/extplacement.c --- a/pidgin/plugins/extplacement.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/extplacement.c Mon Apr 30 12:02:15 2007 +0000 @@ -118,7 +118,13 @@ static PurplePluginUiInfo prefs_info = { get_plugin_pref_frame, 0, /* page_num (Reserved) */ - NULL /* frame (Reserved) */ + NULL, /* frame (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -146,7 +152,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/gestures/gestures.c --- a/pidgin/plugins/gestures/gestures.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/gestures/gestures.c Mon Apr 30 12:02:15 2007 +0000 @@ -271,7 +271,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -308,6 +314,12 @@ &ui_info, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/history.c --- a/pidgin/plugins/history.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/history.c Mon Apr 30 12:02:15 2007 +0000 @@ -198,6 +198,12 @@ NULL, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/iconaway.c --- a/pidgin/plugins/iconaway.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/iconaway.c Mon Apr 30 12:02:15 2007 +0000 @@ -95,6 +95,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/markerline.c --- a/pidgin/plugins/markerline.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/markerline.c Mon Apr 30 12:02:15 2007 +0000 @@ -261,6 +261,12 @@ get_plugin_pref_frame, 0, NULL, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -288,7 +294,13 @@ NULL, /* ui_info */ NULL, /* extra_info */ &prefs_info, /* prefs_info */ - NULL /* actions */ + NULL, /* actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/musicmessaging/musicmessaging.c --- a/pidgin/plugins/musicmessaging/musicmessaging.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/musicmessaging/musicmessaging.c Mon Apr 30 12:02:15 2007 +0000 @@ -649,7 +649,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (reserved) */ + 0, /* page_num (reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = { @@ -677,7 +683,13 @@ &ui_info, /**< ui_info */ NULL, /**< extra_info */ NULL, - NULL + NULL, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/notify.c --- a/pidgin/plugins/notify.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/notify.c Mon Apr 30 12:02:15 2007 +0000 @@ -877,7 +877,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -909,6 +915,12 @@ &ui_info, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/pidginrc.c --- a/pidgin/plugins/pidginrc.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/pidginrc.c Mon Apr 30 12:02:15 2007 +0000 @@ -599,7 +599,13 @@ static PidginPluginUiInfo purplerc_ui_info = { purplerc_get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo purplerc_info = @@ -625,6 +631,12 @@ &purplerc_ui_info, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/relnot.c --- a/pidgin/plugins/relnot.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/relnot.c Mon Apr 30 12:02:15 2007 +0000 @@ -159,6 +159,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/spellchk.c --- a/pidgin/plugins/spellchk.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/spellchk.c Mon Apr 30 12:02:15 2007 +0000 @@ -2350,7 +2350,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -2376,6 +2382,12 @@ &ui_info, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/ticker/ticker.c --- a/pidgin/plugins/ticker/ticker.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/ticker/ticker.c Mon Apr 30 12:02:15 2007 +0000 @@ -368,6 +368,12 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/timestamp.c --- a/pidgin/plugins/timestamp.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/timestamp.c Mon Apr 30 12:02:15 2007 +0000 @@ -178,7 +178,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -209,6 +215,12 @@ &ui_info, /**< ui_info */ NULL, /**< extra_info */ NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/timestamp_format.c --- a/pidgin/plugins/timestamp_format.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/timestamp_format.c Mon Apr 30 12:02:15 2007 +0000 @@ -126,7 +126,13 @@ static PurplePluginUiInfo prefs_info = { get_plugin_pref_frame, 0, /* page num (Reserved) */ - NULL /* frame (Reserved) */ + NULL,/* frame (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -159,7 +165,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ &prefs_info, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/win32/transparency/win2ktrans.c --- a/pidgin/plugins/win32/transparency/win2ktrans.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/win32/transparency/win2ktrans.c Mon Apr 30 12:02:15 2007 +0000 @@ -641,7 +641,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 /* page_num (Reserved) */ + 0, /* page_num (Reserved) */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -670,7 +676,13 @@ &ui_info, /**< ui_info */ NULL, /**< extra_info */ NULL, /**< prefs_info */ - NULL /**< actions */ + NULL, /**< actions */ + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/win32/winprefs/winprefs.c --- a/pidgin/plugins/win32/winprefs/winprefs.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/win32/winprefs/winprefs.c Mon Apr 30 12:02:15 2007 +0000 @@ -352,7 +352,13 @@ static PidginPluginUiInfo ui_info = { get_config_frame, - 0 + 0, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static PurplePluginInfo info = @@ -378,6 +384,12 @@ &ui_info, NULL, NULL, + NULL, + + /* padding */ + NULL, + NULL, + NULL, NULL }; diff -r 3af867ef5a15 -r 8eed567eee39 pidgin/plugins/xmppconsole.c --- a/pidgin/plugins/xmppconsole.c Sun Apr 29 01:09:18 2007 +0000 +++ b/pidgin/plugins/xmppconsole.c Mon Apr 30 12:02:15 2007 +0000 @@ -873,7 +873,13 @@ NULL, /**< ui_info */ NULL, /**< extra_info */ NULL, - actions + actions, + + /* padding */ + NULL, + NULL, + NULL, + NULL }; static void