adium 5124:0900faa68c9d: Merged adium-1.6 into default.

commits at adium.im commits at adium.im
Wed Oct 17 12:12:47 UTC 2012


details:	http://hg.adium.im/adium/rev/0900faa68c9d
revision:	5124:0900faa68c9d
branch:		(none)
author:		Thijs Alkemade <thijsalkemade at gmail.com>
date:		Wed Oct 17 14:12:32 2012 +0200

Merged adium-1.6 into default.

diffs (truncated from 295336 to 1000 lines):

diff -r e6735e611e0e -r 0900faa68c9d Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Fri Oct 12 15:43:24 2012 +0200
+++ b/Adium.xcodeproj/project.pbxproj	Wed Oct 17 14:12:32 2012 +0200
@@ -1355,6 +1355,8 @@
 		6EC1684D06C170A000F9FAD3 /* DCInviteToChatPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EC1684806C170A000F9FAD3 /* DCInviteToChatPlugin.m */; };
 		6EC1684F06C170A000F9FAD3 /* DCInviteToChatWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EC1684A06C170A000F9FAD3 /* DCInviteToChatWindowController.m */; };
 		6EC1685006C170A000F9FAD3 /* InviteToChatWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6EC1684B06C170A000F9FAD3 /* InviteToChatWindow.xib */; };
+		7664EAA5162E086A008CF995 /* libffi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7664EAA4162E086A008CF995 /* libffi.framework */; };
+		7664EAA6162E0874008CF995 /* libffi.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 7664EAA4162E086A008CF995 /* libffi.framework */; };
 		766ABAB61306D1020049FFB7 /* AIUnreadMessagesTooltip.m in Sources */ = {isa = PBXBuildFile; fileRef = 766ABAB51306D1020049FFB7 /* AIUnreadMessagesTooltip.m */; };
 		76731DE215F90538007728C3 /* libgcrypt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76731DE015F90538007728C3 /* libgcrypt.framework */; };
 		76731DE315F90538007728C3 /* libgpgerror.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76731DE115F90538007728C3 /* libgpgerror.framework */; };
@@ -1659,6 +1661,7 @@
 				11EE1CD00CDD01120097F246 /* libgmodule.framework in Copy Frameworks */,
 				11EE1CD10CDD01120097F246 /* libgobject.framework in Copy Frameworks */,
 				11EE1CD20CDD01120097F246 /* libgthread.framework in Copy Frameworks */,
+				7664EAA6162E0874008CF995 /* libffi.framework in Copy Frameworks */,
 				11EE1CD30CDD01120097F246 /* libintl.framework in Copy Frameworks */,
 				11EE1CD40CDD01120097F246 /* libmeanwhile.framework in Copy Frameworks */,
 				11EE1CD50CDD01120097F246 /* libpurple.framework in Copy Frameworks */,
@@ -4387,6 +4390,7 @@
 		6FB330A20C7235BF00B001A8 /* EKEzvIncomingFileTransfer.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = EKEzvIncomingFileTransfer.m; path = Plugins/Bonjour/libezv/Classes/EKEzvIncomingFileTransfer.m; sourceTree = SOURCE_ROOT; };
 		6FB330A30C7235BF00B001A8 /* EKEzvOutgoingFileTransfer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EKEzvOutgoingFileTransfer.h; path = Plugins/Bonjour/libezv/Classes/EKEzvOutgoingFileTransfer.h; sourceTree = SOURCE_ROOT; };
 		6FB330A40C7235BF00B001A8 /* EKEzvOutgoingFileTransfer.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = EKEzvOutgoingFileTransfer.m; path = Plugins/Bonjour/libezv/Classes/EKEzvOutgoingFileTransfer.m; sourceTree = SOURCE_ROOT; };
+		7664EAA4162E086A008CF995 /* libffi.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libffi.framework; path = Frameworks/libffi.framework; sourceTree = "<group>"; };
 		766ABAB41306D1020049FFB7 /* AIUnreadMessagesTooltip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIUnreadMessagesTooltip.h; path = Source/AIUnreadMessagesTooltip.h; sourceTree = "<group>"; };
 		766ABAB51306D1020049FFB7 /* AIUnreadMessagesTooltip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIUnreadMessagesTooltip.m; path = Source/AIUnreadMessagesTooltip.m; sourceTree = "<group>"; };
 		76731DE015F90538007728C3 /* libgcrypt.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libgcrypt.framework; path = Frameworks/libgcrypt.framework; sourceTree = "<group>"; };
@@ -4781,6 +4785,7 @@
 				9719C92E1530EE0C00217FBE /* ShortcutRecorder.framework in Frameworks */,
 				76731DE215F90538007728C3 /* libgcrypt.framework in Frameworks */,
 				76731DE315F90538007728C3 /* libgpgerror.framework in Frameworks */,
+				7664EAA5162E086A008CF995 /* libffi.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -8162,6 +8167,7 @@
 		979AA6A914D59EF3008730DF /* Others */ = {
 			isa = PBXGroup;
 			children = (
+				7664EAA4162E086A008CF995 /* libffi.framework */,
 				76731DE015F90538007728C3 /* libgcrypt.framework */,
 				76731DE115F90538007728C3 /* libgpgerror.framework */,
 				3496A8E707CE6CA30055BBAB /* AutoHyperlinks.framework.xcodeproj */,
diff -r e6735e611e0e -r 0900faa68c9d ChangeLogs/Changes.txt
--- a/ChangeLogs/Changes.txt	Fri Oct 12 15:43:24 2012 +0200
+++ b/ChangeLogs/Changes.txt	Wed Oct 17 14:12:32 2012 +0200
@@ -1,12 +1,14 @@
 				Adium Version History
 				-----------------------
 Version 1.5.4 (XX/XX/XXXX)
- * Changed the default tab switching shortcuts for new users to Control-Tab/Control-Shift-Tab, to match Safari. (#16102)
- * Limit the tracking of the last seen time to contacts who are on your contact list.
  * Updated the included Growl SDK to 2.0, adding support for Notification Center on 10.8 if Growl is not installed. (#15867)
  * Updated libotr to 3.2.1, fixing a security vulnerability. (#16122)
- * Fixed a problem where accepting a group chat invite on Sametime 8.5.1 would crash Adium. (Jere Krischel and Jonathan Rice) (#16114)
+ * Changed the default tab switching shortcuts for new users to Control-Tab/Control-Shift-Tab, to match Safari. (#16102)
+ * Improved disk usage: limit the tracking of the "last seen" time to contacts who are on your contact list.
+ * Fixed a problem where accepting a group chat invite on Sametime 8.5.1 would crash Adium. (Jonathan Rice and Jere Krischel) (#16114)
  * Fixed a problem where accepting a group chat invite on HipChat's XMPP server would crash Adium. (#16007)
+ * Fix a problem preventing Adium from executing Applescripts when Gatekeeper is enabled.
+ * Added routines to make Secure Transport (on 10.8 and above) work around buggy TLS implementations in certain older XMPP servers. (#16081)
 
 
 Version 1.5.3 (8/12/2012)
@@ -18,7 +20,7 @@
  * Icons set for group chat bookmarks will now show up on the tab bar in the chat window. (Andreas Marienborg) (#14484)
  * Fixed tables not being declared as such via VoiceOver. (Marco Zehe) (#16085)
  * Fixed a problem with emoticons scaling disproportionately in the yMous message style when using OS X 10.8.
- * Improved memory use slightly.
+ * Improved memory usage slightly.
 
 
 Version 1.5.2 (7/21/2012)
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/build.sh
--- a/Dependencies/build.sh	Fri Oct 12 15:43:24 2012 +0200
+++ b/Dependencies/build.sh	Wed Oct 17 14:12:32 2012 +0200
@@ -162,8 +162,8 @@
 	eval `$DEVELOPER/usr/bin/pump --startup`
 else
 	# Try to find the right gcc, even when XCode4 is installed
-	export CC="clang"
-	export CXX="clang"
+	export CC="xcrun clang"
+	export CXX="xcrun clang"
 	export CCAS="$CC"
 	export OBJC="$CC"
 fi
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/patches/Meanwhile-glib_headers.diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Dependencies/patches/Meanwhile-glib_headers.diff	Wed Oct 17 14:12:32 2012 +0200
@@ -0,0 +1,257 @@
+diff -r -u meanwhile-1.0.2-orig/samples/logging_proxy.c meanwhile-1.0.2/samples/logging_proxy.c
+--- meanwhile-1.0.2-orig/samples/logging_proxy.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/samples/logging_proxy.c	2012-10-16 22:02:36.000000000 +0200
+@@ -25,7 +25,6 @@
+ #include <unistd.h>
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ #include <mw_cipher.h>
+ #include <mw_common.h>
+diff -r -u meanwhile-1.0.2-orig/samples/login_server.c meanwhile-1.0.2/samples/login_server.c
+--- meanwhile-1.0.2-orig/samples/login_server.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/samples/login_server.c	2012-10-16 22:02:23.000000000 +0200
+@@ -19,7 +19,6 @@
+ #include <unistd.h>
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ #include <mw_cipher.h>
+ #include <mw_common.h>
+diff -r -u meanwhile-1.0.2-orig/samples/nocipher_proxy.c meanwhile-1.0.2/samples/nocipher_proxy.c
+--- meanwhile-1.0.2-orig/samples/nocipher_proxy.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/samples/nocipher_proxy.c	2012-10-16 22:02:56.000000000 +0200
+@@ -29,7 +29,6 @@
+ #include <unistd.h>
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ #include <mw_common.h>
+ #include <mw_message.h>
+diff -r -u meanwhile-1.0.2-orig/samples/redirect_server.c meanwhile-1.0.2/samples/redirect_server.c
+--- meanwhile-1.0.2-orig/samples/redirect_server.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/samples/redirect_server.c	2012-10-16 22:02:48.000000000 +0200
+@@ -22,7 +22,6 @@
+ #include <unistd.h>
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ #include <mw_common.h>
+ #include <mw_message.h>
+diff -r -u meanwhile-1.0.2-orig/src/channel.c meanwhile-1.0.2/src/channel.c
+--- meanwhile-1.0.2-orig/src/channel.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/channel.c	2012-10-16 22:03:01.000000000 +0200
+@@ -19,8 +19,6 @@
+ */
+ 
+ #include <glib.h>
+-#include <glib/ghash.h>
+-#include <glib/glist.h>
+ #include <string.h>
+ 
+ #include "mw_channel.h"
+diff -r -u meanwhile-1.0.2-orig/src/mw_debug.c meanwhile-1.0.2/src/mw_debug.c
+--- meanwhile-1.0.2-orig/src/mw_debug.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_debug.c	2012-10-16 22:03:06.000000000 +0200
+@@ -19,7 +19,7 @@
+ */
+ 
+ 
+-#include <glib/gstring.h>
++#include <glib.h>
+ 
+ #include "mw_debug.h"
+ 
+diff -r -u meanwhile-1.0.2-orig/src/mw_message.h meanwhile-1.0.2/src/mw_message.h
+--- meanwhile-1.0.2-orig/src/mw_message.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_message.h	2012-10-16 22:03:09.000000000 +0200
+@@ -22,7 +22,7 @@
+ #define _MW_MESSAGE_H
+ 
+ 
+-#include <glib/glist.h>
++#include <glib.h>
+ #include "mw_common.h"
+ 
+ 
+diff -r -u meanwhile-1.0.2-orig/src/mw_srvc_conf.h meanwhile-1.0.2/src/mw_srvc_conf.h
+--- meanwhile-1.0.2-orig/src/mw_srvc_conf.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_srvc_conf.h	2012-10-16 22:03:17.000000000 +0200
+@@ -22,7 +22,7 @@
+ #define _MW_SRVC_CONF_H
+ 
+ 
+-#include <glib/glist.h>
++#include <glib.h>
+ #include "mw_common.h"
+ 
+ 
+diff -r -u meanwhile-1.0.2-orig/src/mw_srvc_dir.h meanwhile-1.0.2/src/mw_srvc_dir.h
+--- meanwhile-1.0.2-orig/src/mw_srvc_dir.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_srvc_dir.h	2012-10-16 22:03:35.000000000 +0200
+@@ -22,7 +22,6 @@
+ 
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ 
+ #ifdef __cplusplus
+diff -r -u meanwhile-1.0.2-orig/src/mw_srvc_place.h meanwhile-1.0.2/src/mw_srvc_place.h
+--- meanwhile-1.0.2-orig/src/mw_srvc_place.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_srvc_place.h	2012-10-16 22:03:40.000000000 +0200
+@@ -22,7 +22,7 @@
+ #define _MW_SRVC_PLACE_H
+ 
+ 
+-#include <glib/glist.h>
++#include <glib.h>
+ #include "mw_common.h"
+ 
+ 
+diff -r -u meanwhile-1.0.2-orig/src/mw_srvc_resolve.h meanwhile-1.0.2/src/mw_srvc_resolve.h
+--- meanwhile-1.0.2-orig/src/mw_srvc_resolve.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_srvc_resolve.h	2012-10-16 22:03:44.000000000 +0200
+@@ -23,7 +23,6 @@
+ 
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ 
+ 
+ #ifdef __cplusplus
+diff -r -u meanwhile-1.0.2-orig/src/mw_st_list.h meanwhile-1.0.2/src/mw_st_list.h
+--- meanwhile-1.0.2-orig/src/mw_st_list.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_st_list.h	2012-10-16 22:03:48.000000000 +0200
+@@ -30,7 +30,6 @@
+ 
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ #include "mw_common.h"
+ 
+ 
+diff -r -u meanwhile-1.0.2-orig/src/mw_util.h meanwhile-1.0.2/src/mw_util.h
+--- meanwhile-1.0.2-orig/src/mw_util.h	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/mw_util.h	2012-10-16 22:03:51.000000000 +0200
+@@ -23,8 +23,6 @@
+ 
+ 
+ #include <glib.h>
+-#include <glib/ghash.h>
+-#include <glib/glist.h>
+ 
+ 
+ #define map_guint_new() \
+diff -r -u meanwhile-1.0.2-orig/src/srvc_aware.c meanwhile-1.0.2/src/srvc_aware.c
+--- meanwhile-1.0.2-orig/src/srvc_aware.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_aware.c	2012-10-16 22:03:58.000000000 +0200
+@@ -19,8 +19,6 @@
+ */
+ 
+ #include <glib.h>
+-#include <glib/ghash.h>
+-#include <glib/glist.h>
+ #include <string.h>
+ 
+ #include "mw_channel.h"
+diff -r -u meanwhile-1.0.2-orig/src/srvc_conf.c meanwhile-1.0.2/src/srvc_conf.c
+--- meanwhile-1.0.2-orig/src/srvc_conf.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_conf.c	2012-10-16 22:04:01.000000000 +0200
+@@ -19,8 +19,6 @@
+ */
+ 
+ #include <glib.h>
+-#include <glib/ghash.h>
+-#include <glib/glist.h>
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+diff -r -u meanwhile-1.0.2-orig/src/srvc_dir.c meanwhile-1.0.2/src/srvc_dir.c
+--- meanwhile-1.0.2-orig/src/srvc_dir.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_dir.c	2012-10-16 22:04:07.000000000 +0200
+@@ -18,7 +18,7 @@
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+ 
+-#include <glib/ghash.h>
++#include <glib.h>
+ 
+ #include "mw_channel.h"
+ #include "mw_common.h"
+diff -r -u meanwhile-1.0.2-orig/src/srvc_ft.c meanwhile-1.0.2/src/srvc_ft.c
+--- meanwhile-1.0.2-orig/src/srvc_ft.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_ft.c	2012-10-16 22:04:12.000000000 +0200
+@@ -19,7 +19,7 @@
+ */
+ 
+ 
+-#include <glib/glist.h>
++#include <glib.h>
+ 
+ #include "mw_channel.h"
+ #include "mw_common.h"
+diff -r -u meanwhile-1.0.2-orig/src/srvc_im.c meanwhile-1.0.2/src/srvc_im.c
+--- meanwhile-1.0.2-orig/src/srvc_im.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_im.c	2012-10-16 22:04:18.000000000 +0200
+@@ -19,7 +19,6 @@
+ */
+ 
+ #include <glib.h>
+-#include <glib/glist.h>
+ #include <string.h>
+ 
+ #include "mw_channel.h"
+diff -r -u meanwhile-1.0.2-orig/src/srvc_place.c meanwhile-1.0.2/src/srvc_place.c
+--- meanwhile-1.0.2-orig/src/srvc_place.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_place.c	2012-10-16 22:04:23.000000000 +0200
+@@ -19,8 +19,6 @@
+ */
+ 
+ #include <glib.h>
+-#include <glib/ghash.h>
+-#include <glib/glist.h>
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
+diff -r -u meanwhile-1.0.2-orig/src/srvc_resolve.c meanwhile-1.0.2/src/srvc_resolve.c
+--- meanwhile-1.0.2-orig/src/srvc_resolve.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_resolve.c	2012-10-16 22:04:27.000000000 +0200
+@@ -18,7 +18,7 @@
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+ 
+-#include <glib/ghash.h>
++#include <glib.h>
+ 
+ #include "mw_channel.h"
+ #include "mw_common.h"
+diff -r -u meanwhile-1.0.2-orig/src/srvc_store.c meanwhile-1.0.2/src/srvc_store.c
+--- meanwhile-1.0.2-orig/src/srvc_store.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/srvc_store.c	2012-10-16 22:04:31.000000000 +0200
+@@ -18,7 +18,7 @@
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+ 
+-#include <glib/glist.h>
++#include <glib.h>
+ 
+ #include "mw_channel.h"
+ #include "mw_debug.h"
+diff -r -u meanwhile-1.0.2-orig/src/st_list.c meanwhile-1.0.2/src/st_list.c
+--- meanwhile-1.0.2-orig/src/st_list.c	2012-10-16 22:02:02.000000000 +0200
++++ meanwhile-1.0.2/src/st_list.c	2012-10-16 22:04:36.000000000 +0200
+@@ -20,7 +20,7 @@
+ 
+ #include <stdio.h>
+ #include <string.h>
+-#include <glib/gstring.h>
++#include <glib.h>
+ 
+ #include "mw_debug.h"
+ #include "mw_util.h"
+
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/patches/Meanwhile-session.c.diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Dependencies/patches/Meanwhile-session.c.diff	Wed Oct 17 14:12:32 2012 +0200
@@ -0,0 +1,11 @@
+--- src/session.c 2005-12-15 14:11:47.000000000 -0600
++++ src/session.c 2012-08-22 08:40:54.043701375 -0500
+@@ -448,6 +448,8 @@
+   property_set(s, mwSession_SERVER_VER_MAJOR, GPOINTER(msg->major), NULL);
+   property_set(s, mwSession_SERVER_VER_MINOR, GPOINTER(msg->minor), NULL);
+ 
++ g_info("Sametime server version (major/minor): 0x%x / 0x%x", msg->major, msg->minor);
++
+   /* compose the login message */
+   log = (struct mwMsgLogin *) mwMessage_new(mwMessage_LOGIN);
+   log->login_type = GUINT(property_get(s, mwSession_CLIENT_TYPE_ID));
\ No newline at end of file
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/patches/Meanwhile-srvc_place.c.diff
--- a/Dependencies/patches/Meanwhile-srvc_place.c.diff	Fri Oct 12 15:43:24 2012 +0200
+++ b/Dependencies/patches/Meanwhile-srvc_place.c.diff	Wed Oct 17 14:12:32 2012 +0200
@@ -1,6 +1,23 @@
---- src/srvc_place.c	2005-11-21 10:30:46.000000000 -0800
-+++ src/srvc_place.c	2012-08-15 09:07:37.000000000 -0700
-@@ -165,6 +165,7 @@
+--- src/srvc_place.c	2005-12-02 18:00:29.000000000 -0800
++++ src/srvc_place.c	2012-08-21 19:39:32.000000000 -0700
+@@ -39,6 +39,16 @@
+ #define PROTOCOL_TYPE  0x00
+ #define PROTOCOL_VER   0x05
+ 
++/*
++  As of Sametime ~v8.5, there's a slightly different group chat invite message.
++  This identifies the earliest server version using the new format. Currently,
++  it's set for 8.5.1. If other people are having issues, we'll need to decrease
++  this to their version.
++*/
++#define NEW_FORMAT_SERVER_VER_MAJOR  0x001e
++#define NEW_FORMAT_SERVER_VER_MINOR  0x213f
++
++#define GUINT(val)     (GPOINTER_TO_UINT((val)))
+ 
+ enum incoming_msg {
+   msg_in_JOIN_RESPONSE  = 0x0000,  /* ? */
+@@ -165,6 +175,7 @@
    guint16 login_type;
    guint32 unknown_a;
    guint32 unknown_b;
@@ -8,7 +25,7 @@
  };
  
  
-@@ -189,6 +190,7 @@
+@@ -189,6 +200,7 @@
    mwIdBlock_clear(&p->idb);
    g_free(p->login_id);
    g_free(p->name);
@@ -16,21 +33,50 @@
    g_free(p);
  }
  
-@@ -394,6 +396,8 @@
+@@ -394,6 +406,9 @@
    guint16_get(b, &pm->login_type);
    guint32_get(b, &pm->unknown_a);
    guint32_get(b, &pm->unknown_b);
-+  //TODO: Since the Notes upgrade, an extra name string is sent to recv_SECTION_LIST(). It might be sent here,
-+  //      but since we're only parsing one user, it probably doesn't matter here.
++  /* TODO: Since the Notes upgrade, an extra name string is sent to 
++           recv_SECTION_LIST(). It might be sent here, but since we're only 
++           parsing one user, it probably doesn't matter here. */
  
    PUT_MEMBER(place, pm);
    if(srvc->handler && srvc->handler->peerJoined)
-@@ -544,6 +548,7 @@
-     guint16_get(b, &m->login_type);
+@@ -519,8 +534,18 @@
+ 
+ static int recv_SECTION_LIST(struct mwPlace *place,
+ 			     struct mwGetBuffer *b) {
+-  int ret = 0;
++  int ret = 0, major, minor;
+   guint32 sec, count;
++  struct mwSession *session;
++  gboolean newMsgFormat;
++
++  /* Check the server version to see if the message uses the new format */
++  session = mwService_getSession(MW_SERVICE(place->service));
++  major = GUINT(mwSession_getProperty(session, mwSession_SERVER_VER_MAJOR));
++  minor = GUINT(mwSession_getProperty(session, mwSession_SERVER_VER_MINOR));
++  newMsgFormat = (major == NEW_FORMAT_SERVER_VER_MAJOR
++                    && minor >= NEW_FORMAT_SERVER_VER_MINOR)
++                    || major > NEW_FORMAT_SERVER_VER_MAJOR;
+ 
+   mwGetBuffer_advance(b, 4);
+   guint32_get(b, &sec);
+@@ -545,6 +570,10 @@
      guint32_get(b, &m->unknown_a);
      guint32_get(b, &m->unknown_b);
-+    mwString_get(b, &m->extraname); //new in Notes upgrade, the name appears again at the end now
  
++    if(newMsgFormat) {
++        mwString_get(b, &m->extraname);
++    }
++
      PUT_MEMBER(place, m);
    }
-
+ 
+@@ -1072,4 +1101,4 @@
+ void mwPlace_removeClientData(struct mwPlace *place) {
+   g_return_if_fail(place != NULL);
+   mw_datum_clear(&place->client_data);
+-}
++}
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/patches/gettext-Makefile.in.diff
--- a/Dependencies/patches/gettext-Makefile.in.diff	Fri Oct 12 15:43:24 2012 +0200
+++ b/Dependencies/patches/gettext-Makefile.in.diff	Wed Oct 17 14:12:32 2012 +0200
@@ -1,11 +1,11 @@
---- gettext-tools/Makefile.in	2010-11-14 21:31:55.000000000 -0800
-+++ gettext-tools/Makefile.in.orig	2006-11-27 09:34:56.000000000 -0800
-@@ -484,7 +484,7 @@
+--- gettext-tools/Makefile.in.orig	2010-06-03 16:38:55.000000000 -0500
++++ gettext-tools/Makefile.in	2010-06-04 01:16:07.000000000 -0500
+@@ -1248,7 +1248,7 @@
  top_srcdir = @top_srcdir@
  AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
- ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../autoconf-lib-link/m4 -I ../m4 -I gnulib-m4 -I libgettextpo/gnulib-m4
--SUBDIRS = doc intl gnulib-lib libgrep libuniname src libgettextpo po projects misc man m4 tests examples
-+SUBDIRS = intl gnulib-lib libgrep libuniname src libgettextpo po projects m4
+ ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
+-SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples
++SUBDIRS = intl gnulib-lib libgrep src libgettextpo po projects styles m4
  
  # Allow users to use "gnulib-tool --update".
  
diff -r e6735e611e0e -r 0900faa68c9d Dependencies/phases/build_dependencies.sh
--- a/Dependencies/phases/build_dependencies.sh	Fri Oct 12 15:43:24 2012 +0200
+++ b/Dependencies/phases/build_dependencies.sh	Wed Oct 17 14:12:32 2012 +0200
@@ -146,6 +146,7 @@
 	# Fixes accepting group chat invites from the standard Sametime client.
 	# Thanks to Jere Krischel and Jonathan Rice.
 	fwdpatch "$ROOTDIR/patches/Meanwhile-srvc_place.c.diff" -p0 || true
+	fwdpatch "$ROOTDIR/patches/Meanwhile-session.c.diff" -p0 || true
 	
 	if needsconfigure $@; then
 	(
@@ -180,6 +181,7 @@
 	revpatch "$ROOTDIR/patches/Meanwhile-common.c.diff" -p0
 	revpatch "$ROOTDIR/patches/Meanwhile-srvc_ft.c.diff" -p0
 	revpatch "$ROOTDIR/patches/Meanwhile-srvc_place.c.diff" -p0
+	revpatch "$ROOTDIR/patches/Meanwhile-session.c.diff" -p0
 	
 	quiet popd
 }
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/AIUtilities Framework/Resources/cs.lproj/Localizable.strings
Binary file Frameworks/AIUtilities Framework/Resources/cs.lproj/Localizable.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/AIUtilities Framework/Resources/nl.lproj/Localizable.strings
Binary file Frameworks/AIUtilities Framework/Resources/nl.lproj/Localizable.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/AIUtilities Framework/Source/AITextViewAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AITextViewAdditions.m	Fri Oct 12 15:43:24 2012 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AITextViewAdditions.m	Wed Oct 17 14:12:32 2012 +0200
@@ -19,7 +19,8 @@
 #import "AITextAttributes.h"
 
 @implementation NSTextView (AITextViewAdditions)
-
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
 - (void)changeDocumentBackgroundColor:(id)sender
 {
 	NSColor		*newColor = [sender color];
@@ -40,4 +41,5 @@
 	
 	[self didChangeText];
 }
+#pragma clang diagnostic pop
 @end
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/cs.lproj/EmoticonNames.strings
Binary file Frameworks/Adium Framework/Resources/cs.lproj/EmoticonNames.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/cs.lproj/Localizable.strings
Binary file Frameworks/Adium Framework/Resources/cs.lproj/Localizable.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/en.lproj/EmoticonNames.strings
Binary file Frameworks/Adium Framework/Resources/en.lproj/EmoticonNames.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/en.lproj/Localizable.strings
Binary file Frameworks/Adium Framework/Resources/en.lproj/Localizable.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/nl.lproj/EmoticonNames.strings
Binary file Frameworks/Adium Framework/Resources/nl.lproj/EmoticonNames.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Resources/nl.lproj/Localizable.strings
Binary file Frameworks/Adium Framework/Resources/nl.lproj/Localizable.strings has changed
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Source/AIChat.m
--- a/Frameworks/Adium Framework/Source/AIChat.m	Fri Oct 12 15:43:24 2012 +0200
+++ b/Frameworks/Adium Framework/Source/AIChat.m	Wed Oct 17 14:12:32 2012 +0200
@@ -1039,7 +1039,7 @@
 
 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(__unsafe_unretained id [])stackbuf count:(NSUInteger)len
 {
-	return [participatingContacts countByEnumeratingWithState:state objects:stackbuf count:len];
+	return [self.containedObjects countByEnumeratingWithState:state objects:stackbuf count:len];
 }
 
 - (BOOL) canContainObject:(id)obj
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Source/AIListGroup.m
--- a/Frameworks/Adium Framework/Source/AIListGroup.m	Fri Oct 12 15:43:24 2012 +0200
+++ b/Frameworks/Adium Framework/Source/AIListGroup.m	Wed Oct 17 14:12:32 2012 +0200
@@ -348,7 +348,7 @@
 
 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(__unsafe_unretained id [])stackbuf count:(NSUInteger)len
 {
-	return [_containedObjects countByEnumeratingWithState:state objects:stackbuf count:len];
+	return [self.containedObjects countByEnumeratingWithState:state objects:stackbuf count:len];
 }
 
 #pragma mark Applescript
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/Adium Framework/Source/AIMetaContact.m
--- a/Frameworks/Adium Framework/Source/AIMetaContact.m	Fri Oct 12 15:43:24 2012 +0200
+++ b/Frameworks/Adium Framework/Source/AIMetaContact.m	Wed Oct 17 14:12:32 2012 +0200
@@ -1027,7 +1027,7 @@
 
 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(__unsafe_unretained id [])stackbuf count:(NSUInteger)len
 {
-	return [_containedObjects countByEnumeratingWithState:state objects:stackbuf count:len];
+	return [self.containedObjects countByEnumeratingWithState:state objects:stackbuf count:len];
 }
 
 #pragma mark Contained Contact sorting
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/libffi.framework/Headers
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libffi.framework/Headers	Wed Oct 17 14:12:32 2012 +0200
@@ -0,0 +1,1 @@
+Versions/3.0.11/Headers
\ No newline at end of file
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/libffi.framework/Resources
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libffi.framework/Resources	Wed Oct 17 14:12:32 2012 +0200
@@ -0,0 +1,1 @@
+Versions/3.0.11/Resources
\ No newline at end of file
diff -r e6735e611e0e -r 0900faa68c9d Frameworks/libffi.framework/Versions/3.0.11/Headers/ffi.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/libffi.framework/Versions/3.0.11/Headers/ffi.h	Wed Oct 17 14:12:32 2012 +0200
@@ -0,0 +1,471 @@
+/* -----------------------------------------------------------------*-C-*-
+   libffi 3.0.11 - Copyright (c) 2011 Anthony Green
+                    - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
+
+   Permission is hereby granted, free of charge, to any person
+   obtaining a copy of this software and associated documentation
+   files (the ``Software''), to deal in the Software without
+   restriction, including without limitation the rights to use, copy,
+   modify, merge, publish, distribute, sublicense, and/or sell copies
+   of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+/* -------------------------------------------------------------------
+   The basic API is described in the README file.
+
+   The raw API is designed to bypass some of the argument packing
+   and unpacking on architectures for which it can be avoided.
+
+   The closure API allows interpreted functions to be packaged up
+   inside a C function pointer, so that they can be called as C functions,
+   with no understanding on the client side that they are interpreted.
+   It can also be used in other cases in which it is necessary to package
+   up a user specified parameter and a function pointer as a single
+   function pointer.
+
+   The closure API must be implemented in order to get its functionality,
+   e.g. for use by gij.  Routines are provided to emulate the raw API
+   if the underlying platform doesn't allow faster implementation.
+
+   More details on the raw and cloure API can be found in:
+
+   http://gcc.gnu.org/ml/java/1999-q3/msg00138.html
+
+   and
+
+   http://gcc.gnu.org/ml/java/1999-q3/msg00174.html
+   -------------------------------------------------------------------- */
+
+#ifndef LIBFFI_H
+#define LIBFFI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Specify which architecture libffi is configured for. */
+#ifndef X86_DARWIN
+#define X86_DARWIN
+#endif
+
+/* ---- System configuration information --------------------------------- */
+
+#include <ffitarget.h>
+
+#ifndef LIBFFI_ASM
+
+#ifdef _MSC_VER
+#define __attribute__(X)
+#endif
+
+#include <stddef.h>
+#include <limits.h>
+
+/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
+   But we can find it either under the correct ANSI name, or under GNU
+   C's internal name.  */
+
+#define FFI_64_BIT_MAX 9223372036854775807
+
+#ifdef LONG_LONG_MAX
+# define FFI_LONG_LONG_MAX LONG_LONG_MAX
+#else
+# ifdef LLONG_MAX
+#  define FFI_LONG_LONG_MAX LLONG_MAX
+#  ifdef _AIX52 /* or newer has C99 LLONG_MAX */
+#   undef FFI_64_BIT_MAX
+#   define FFI_64_BIT_MAX 9223372036854775807LL
+#  endif /* _AIX52 or newer */
+# else
+#  ifdef __GNUC__
+#   define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
+#  endif
+#  ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */
+#   ifndef __PPC64__
+#    if defined (__IBMC__) || defined (__IBMCPP__)
+#     define FFI_LONG_LONG_MAX LONGLONG_MAX
+#    endif
+#   endif /* __PPC64__ */
+#   undef  FFI_64_BIT_MAX
+#   define FFI_64_BIT_MAX 9223372036854775807LL
+#  endif
+# endif
+#endif
+
+/* The closure code assumes that this works on pointers, i.e. a size_t	*/
+/* can hold a pointer.							*/
+
+typedef struct _ffi_type
+{
+  size_t size;
+  unsigned short alignment;
+  unsigned short type;
+  struct _ffi_type **elements;
+} ffi_type;
+
+#ifndef LIBFFI_HIDE_BASIC_TYPES
+#if SCHAR_MAX == 127
+# define ffi_type_uchar                ffi_type_uint8
+# define ffi_type_schar                ffi_type_sint8
+#else
+ #error "char size not supported"
+#endif
+
+#if SHRT_MAX == 32767
+# define ffi_type_ushort       ffi_type_uint16
+# define ffi_type_sshort       ffi_type_sint16
+#elif SHRT_MAX == 2147483647
+# define ffi_type_ushort       ffi_type_uint32
+# define ffi_type_sshort       ffi_type_sint32
+#else
+ #error "short size not supported"
+#endif
+
+#if INT_MAX == 32767
+# define ffi_type_uint         ffi_type_uint16
+# define ffi_type_sint         ffi_type_sint16
+#elif INT_MAX == 2147483647
+# define ffi_type_uint         ffi_type_uint32
+# define ffi_type_sint         ffi_type_sint32
+#elif INT_MAX == 9223372036854775807
+# define ffi_type_uint         ffi_type_uint64
+# define ffi_type_sint         ffi_type_sint64
+#else
+ #error "int size not supported"
+#endif
+
+#if LONG_MAX == 2147483647
+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
+ #error "no 64-bit data type supported"
+# endif
+#elif LONG_MAX != FFI_64_BIT_MAX
+ #error "long size not supported"
+#endif
+
+#if LONG_MAX == 2147483647
+# define ffi_type_ulong        ffi_type_uint32
+# define ffi_type_slong        ffi_type_sint32
+#elif LONG_MAX == FFI_64_BIT_MAX
+# define ffi_type_ulong        ffi_type_uint64
+# define ffi_type_slong        ffi_type_sint64
+#else
+ #error "long size not supported"
+#endif
+
+/* Need minimal decorations for DLLs to works on Windows. */
+/* GCC has autoimport and autoexport.  Rely on Libtool to */
+/* help MSVC export from a DLL, but always declare data   */
+/* to be imported for MSVC clients.  This costs an extra  */
+/* indirection for MSVC clients using the static version  */
+/* of the library, but don't worry about that.  Besides,  */
+/* as a workaround, they can define FFI_BUILDING if they  */
+/* *know* they are going to link with the static library. */
+#if defined _MSC_VER && !defined FFI_BUILDING
+#define FFI_EXTERN extern __declspec(dllimport)
+#else
+#define FFI_EXTERN extern
+#endif
+
+/* These are defined in types.c */
+FFI_EXTERN ffi_type ffi_type_void;
+FFI_EXTERN ffi_type ffi_type_uint8;
+FFI_EXTERN ffi_type ffi_type_sint8;
+FFI_EXTERN ffi_type ffi_type_uint16;
+FFI_EXTERN ffi_type ffi_type_sint16;
+FFI_EXTERN ffi_type ffi_type_uint32;
+FFI_EXTERN ffi_type ffi_type_sint32;
+FFI_EXTERN ffi_type ffi_type_uint64;
+FFI_EXTERN ffi_type ffi_type_sint64;
+FFI_EXTERN ffi_type ffi_type_float;
+FFI_EXTERN ffi_type ffi_type_double;
+FFI_EXTERN ffi_type ffi_type_pointer;
+
+#if 1
+FFI_EXTERN ffi_type ffi_type_longdouble;
+#else
+#define ffi_type_longdouble ffi_type_double
+#endif
+#endif /* LIBFFI_HIDE_BASIC_TYPES */
+
+typedef enum {
+  FFI_OK = 0,
+  FFI_BAD_TYPEDEF,
+  FFI_BAD_ABI
+} ffi_status;
+
+typedef unsigned FFI_TYPE;
+
+typedef struct {
+  ffi_abi abi;
+  unsigned nargs;
+  ffi_type **arg_types;
+  ffi_type *rtype;
+  unsigned bytes;
+  unsigned flags;
+#ifdef FFI_EXTRA_CIF_FIELDS
+  FFI_EXTRA_CIF_FIELDS;
+#endif
+} ffi_cif;
+
+/* Used internally, but overridden by some architectures */
+ffi_status ffi_prep_cif_core(ffi_cif *cif,
+			     ffi_abi abi,
+			     unsigned int isvariadic,
+			     unsigned int nfixedargs,
+			     unsigned int ntotalargs,
+			     ffi_type *rtype,
+			     ffi_type **atypes);
+
+/* ---- Definitions for the raw API -------------------------------------- */
+
+#ifndef FFI_SIZEOF_ARG
+# if LONG_MAX == 2147483647
+#  define FFI_SIZEOF_ARG        4
+# elif LONG_MAX == FFI_64_BIT_MAX
+#  define FFI_SIZEOF_ARG        8
+# endif
+#endif
+
+#ifndef FFI_SIZEOF_JAVA_RAW
+#  define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG
+#endif
+
+typedef union {
+  ffi_sarg  sint;
+  ffi_arg   uint;
+  float	    flt;
+  char      data[FFI_SIZEOF_ARG];
+  void*     ptr;
+} ffi_raw;
+
+#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8
+/* This is a special case for mips64/n32 ABI (and perhaps others) where
+   sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8.  */
+typedef union {
+  signed int	sint;
+  unsigned int	uint;
+  float		flt;
+  char		data[FFI_SIZEOF_JAVA_RAW];
+  void*		ptr;
+} ffi_java_raw;
+#else
+typedef ffi_raw ffi_java_raw;
+#endif
+
+
+void ffi_raw_call (ffi_cif *cif,
+		   void (*fn)(void),
+		   void *rvalue,
+		   ffi_raw *avalue);
+
+void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
+void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
+size_t ffi_raw_size (ffi_cif *cif);
+
+/* This is analogous to the raw API, except it uses Java parameter	*/
+/* packing, even on 64-bit machines.  I.e. on 64-bit machines		*/
+/* longs and doubles are followed by an empty 64-bit word.		*/
+
+void ffi_java_raw_call (ffi_cif *cif,
+			void (*fn)(void),
+			void *rvalue,
+			ffi_java_raw *avalue);
+
+void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw);
+void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args);
+size_t ffi_java_raw_size (ffi_cif *cif);
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#if FFI_CLOSURES
+
+#ifdef _MSC_VER
+__declspec(align(8))
+#endif
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+  ffi_cif   *cif;
+  void     (*fun)(ffi_cif*,void*,void**,void*);
+  void      *user_data;
+#ifdef __GNUC__
+} ffi_closure __attribute__((aligned (8)));
+#else
+} ffi_closure;
+# ifdef __sgi
+#  pragma pack 0
+# endif
+#endif
+
+void *ffi_closure_alloc (size_t size, void **code);
+void ffi_closure_free (void *);
+
+ffi_status
+ffi_prep_closure (ffi_closure*,
+		  ffi_cif *,
+		  void (*fun)(ffi_cif*,void*,void**,void*),
+		  void *user_data);
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure*,
+		      ffi_cif *,
+		      void (*fun)(ffi_cif*,void*,void**,void*),
+		      void *user_data,
+		      void*codeloc);
+
+#ifdef __sgi
+# pragma pack 8
+#endif
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+  ffi_cif   *cif;
+
+#if !FFI_NATIVE_RAW_API
+
+  /* if this is enabled, then a raw closure has the same layout 
+     as a regular closure.  We use this to install an intermediate 
+     handler to do the transaltion, void** -> ffi_raw*. */
+
+  void     (*translate_args)(ffi_cif*,void*,void**,void*);
+  void      *this_closure;
+
+#endif
+
+  void     (*fun)(ffi_cif*,void*,ffi_raw*,void*);
+  void      *user_data;
+
+} ffi_raw_closure;
+
+typedef struct {
+#if 0
+  void *trampoline_table;
+  void *trampoline_table_entry;
+#else
+  char tramp[FFI_TRAMPOLINE_SIZE];
+#endif
+
+  ffi_cif   *cif;
+
+#if !FFI_NATIVE_RAW_API
+
+  /* if this is enabled, then a raw closure has the same layout 
+     as a regular closure.  We use this to install an intermediate 
+     handler to do the transaltion, void** -> ffi_raw*. */
+
+  void     (*translate_args)(ffi_cif*,void*,void**,void*);
+  void      *this_closure;
+
+#endif
+
+  void     (*fun)(ffi_cif*,void*,ffi_java_raw*,void*);
+  void      *user_data;
+
+} ffi_java_raw_closure;
+
+ffi_status
+ffi_prep_raw_closure (ffi_raw_closure*,
+		      ffi_cif *cif,
+		      void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+		      void *user_data);
+
+ffi_status
+ffi_prep_raw_closure_loc (ffi_raw_closure*,
+			  ffi_cif *cif,
+			  void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
+			  void *user_data,
+			  void *codeloc);
+
+ffi_status
+ffi_prep_java_raw_closure (ffi_java_raw_closure*,
+		           ffi_cif *cif,
+		           void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+		           void *user_data);
+
+ffi_status
+ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
+			       ffi_cif *cif,
+			       void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
+			       void *user_data,




More information about the commits mailing list