adium 3169:a43a13856a83: im.pidgin.adium at 6411a85f8ee18611b1c84cf...

commits at adium.im commits at adium.im
Fri Apr 23 00:54:52 UTC 2010


details:	http://hg.adium.im/adium/rev/a43a13856a83
revision:	3169:a43a13856a83
author:		Stephen Holt <sholt at adium.im>
date:		Thu Apr 22 17:53:56 2010 -0700

im.pidgin.adium at 6411a85f8ee18611b1c84cf24346c12bacebcecf

diffs (818 lines):

diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/account.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/account.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/account.h	Thu Apr 22 17:53:56 2010 -0700
@@ -414,6 +414,14 @@
 void purple_account_set_proxy_info(PurpleAccount *account, PurpleProxyInfo *info);
 
 /**
+ * Sets the account's privacy type.
+ *
+ * @param account      The account.
+ * @param privacy_type The privacy type.
+ */
+void purple_account_set_privacy_type(PurpleAccount *account, PurplePrivacyType privacy_type);
+
+/**
  * Sets the account's status types.
  *
  * @param account      The account.
@@ -683,6 +691,15 @@
 PurpleProxyInfo *purple_account_get_proxy_info(const PurpleAccount *account);
 
 /**
+ * Returns the account's privacy type.
+ *
+ * @param account   The account.
+ *
+ * @return The privacy type.
+ */
+PurplePrivacyType purple_account_get_privacy_type(const PurpleAccount *account);
+
+/**
  * Returns the active status for this account.  This looks through
  * the PurplePresence associated with this account and returns the
  * PurpleStatus that has its active flag set to "TRUE."  There can be
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/certificate.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/certificate.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/certificate.h	Thu Apr 22 17:53:56 2010 -0700
@@ -250,10 +250,17 @@
 	/** Retrieve the certificate activation/expiration times */
 	gboolean (* get_times)(PurpleCertificate *crt, time_t *activation, time_t *expiration);
 
+	/** Imports certificates from a file
+	 *
+	 *  @param filename   File to import the certificates from
+	 *  @return           GSList of pointers to the newly allocated Certificate structs
+	 *                    or NULL on failure.
+	 */
+	GSList * (* import_certificates)(const gchar * filename);
+
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
 	void (*_purple_reserved3)(void);
-	void (*_purple_reserved4)(void);
 };
 
 /** A set of operations used to provide logic for verifying a Certificate's
@@ -492,6 +499,16 @@
 purple_certificate_import(PurpleCertificateScheme *scheme, const gchar *filename);
 
 /**
+ * Imports a list of PurpleCertificates from a file
+ *
+ * @param scheme      Scheme to import under
+ * @param filename    File path to import from
+ * @return Pointer to a GSList of new PurpleCertificates, or NULL on failure
+ */
+GSList *
+purple_certificates_import(PurpleCertificateScheme *scheme, const gchar *filename);
+
+/**
  * Exports a PurpleCertificate to a file
  *
  * @param filename    File to export the certificate to
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/connection.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/connection.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/connection.h	Thu Apr 22 17:53:56 2010 -0700
@@ -44,8 +44,9 @@
 	PURPLE_CONNECTION_NO_FONTSIZE = 0x0020, /**< Connection does not send/receive font sizes */
 	PURPLE_CONNECTION_NO_URLDESC = 0x0040,  /**< Connection does not support descriptions with links */
 	PURPLE_CONNECTION_NO_IMAGES = 0x0080,  /**< Connection does not support sending of images */
-	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100 /**< Connection supports sending and receiving custom smileys */
-	
+	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100, /**< Connection supports sending and receiving custom smileys */
+	PURPLE_CONNECTION_SUPPORT_MOODS = 0x0200, /**< Connection supports setting moods */
+	PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES = 0x0400 /**< Connection supports setting a message on moods */
 } PurpleConnectionFlags;
 
 typedef enum
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/jabber.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/jabber.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/jabber.h	Thu Apr 22 17:53:56 2010 -0700
@@ -105,13 +105,20 @@
 	xmlParserCtxt *context;
 	xmlnode *current;
 
-	enum {
-		JABBER_PROTO_0_9,
-		JABBER_PROTO_1_0
+	struct {
+		guint8 major;
+		guint8 minor;
 	} protocol_version;
 
 	JabberSaslMech *auth_mech;
 	gpointer auth_mech_data;
+	
+	/**
+	 * The header from the opening <stream/> tag.  This being NULL is treated
+	 * as a special condition in the parsing code (signifying the next
+	 * stanza started is an opening stream tag), and its being missing on
+	 * the stream header is treated as a fatal error.
+	 */
 	char *stream_id;
 	JabberStreamState state;
 
@@ -166,6 +173,11 @@
 	time_t idle;
 	time_t old_idle;
 
+	/** When we last pinged the server, so we don't ping more
+	 *  often than once every minute.
+	 */
+	time_t last_ping;
+
 	JabberID *user;
 	JabberBuddy *user_jb;
 
@@ -371,10 +383,7 @@
 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who);
 gboolean jabber_can_receive_file(PurpleConnection *gc, const gchar *who);
 
-void jabber_register_commands(void);
-void jabber_unregister_commands(void);
-
-void jabber_init_plugin(PurplePlugin *plugin);
-void jabber_uninit_plugin(PurplePlugin *plugin);
+void jabber_plugin_init(PurplePlugin *plugin);
+void jabber_plugin_uninit(PurplePlugin *plugin);
 
 #endif /* PURPLE_JABBER_H_ */
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/jutil.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/jutil.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/jutil.h	Thu Apr 22 17:53:56 2010 -0700
@@ -85,5 +85,6 @@
 /* show attr (presence stanza) -> state */
 JabberBuddyState jabber_buddy_show_get_state(const char *id);
 
-char *jabber_calculate_data_sha1sum(gconstpointer data, size_t len);
+char *jabber_calculate_data_hash(gconstpointer data, size_t len,
+    const gchar *hash_algo);
 #endif /* PURPLE_JABBER_JUTIL_H_ */
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/libymsg.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/libymsg.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/libymsg.h	Thu Apr 22 17:53:56 2010 -0700
@@ -29,7 +29,7 @@
 #include "cmds.h"
 #include "prpl.h"
 
-#define YAHOO_PAGER_HOST "scsa.msg.yahoo.com"
+#define YAHOO_PAGER_HOST_REQ_URL "http://vcs1.msg.yahoo.com/capacity"
 #define YAHOO_PAGER_PORT 5050
 #define YAHOO_PAGER_PORT_P2P 5101
 #define YAHOO_LOGIN_URL "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s"
@@ -44,9 +44,9 @@
 #define YAHOO_XFER_RELAY_PORT 80
 #define YAHOO_ROOMLIST_URL "http://insider.msg.yahoo.com/ycontent/"
 #define YAHOO_ROOMLIST_LOCALE "us"
-/* really we should get the list of servers from
- http://update.messenger.yahoo.co.jp/servers.html */
-#define YAHOOJP_PAGER_HOST "cs.yahoo.co.jp"
+
+/* Yahoo! JAPAN stuff */
+#define YAHOOJP_PAGER_HOST_REQ_URL "http://cs1.msg.vip.ogk.yahoo.co.jp/capacity"
 #define YAHOOJP_TOKEN_URL "https://login.yahoo.co.jp/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s"
 #define YAHOOJP_LOGIN_URL "https://login.yahoo.co.jp/config/pwtoken_login?src=ymsgr&ts=&token=%s"
 #define YAHOOJP_PROFILE_URL "http://profiles.yahoo.co.jp/"
@@ -90,8 +90,8 @@
 #define YAHOO_CLIENT_VERSION_ID "4194239"
 #define YAHOO_CLIENT_VERSION "9.0.0.2162"
 
-#define YAHOOJP_CLIENT_VERSION_ID "4194239"
-#define YAHOOJP_CLIENT_VERSION "9.0.0.2162"
+#define YAHOOJP_CLIENT_VERSION_ID "4186047"
+#define YAHOOJP_CLIENT_VERSION "9.0.0.1727"
 
 #define YAHOO_CLIENT_USERAGENT "Mozilla/5.0"
 
@@ -119,6 +119,7 @@
 	YAHOO_STATUS_ONVACATION,
 	YAHOO_STATUS_OUTTOLUNCH,
 	YAHOO_STATUS_STEPPEDOUT,
+	YAHOO_STATUS_P2P = 11,
 	YAHOO_STATUS_INVISIBLE = 12,
 	YAHOO_STATUS_CUSTOM = 99,
 	YAHOO_STATUS_IDLE = 999,
@@ -219,6 +220,7 @@
 	gsize auth_written;
 	char *cookie_y;
 	char *cookie_t;
+	char *cookie_b;
 	int session_id;
 	gboolean jp;
 	gboolean wm; /* connected w/ web messenger method */
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/namespaces.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/namespaces.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/namespaces.h	Thu Apr 22 17:53:56 2010 -0700
@@ -30,6 +30,7 @@
 #define NS_XMPP_SESSION "urn:ietf:params:xml:ns:xmpp-session"
 #define NS_XMPP_STANZAS "urn:ietf:params:xml:ns:xmpp-stanzas"
 #define NS_XMPP_STREAMS "http://etherx.jabber.org/streams"
+#define NS_XMPP_TLS "urn:ietf:params:xml:ns:xmpp-tls"
 
 /* XEP-0012 Last Activity (and XEP-0256 Last Activity in Presence) */
 #define NS_LAST_ACTIVITY "jabber:iq:last"
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/network.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/network.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/network.h	Thu Apr 22 17:53:56 2010 -0700
@@ -123,8 +123,8 @@
  * The default value is TRUE
  *
  * @param map_external Should the open port be mapped externally?
- * @deprecated In 3.0.0 a boolean will be added to the above functions to
- *             perform the same function.
+ * @deprecated In 3.0.0 a boolean will be added to the functions mentioned
+ *             above to perform the same function.
  * @since 2.3.0
  */
 void purple_network_listen_map_external(gboolean map_external);
@@ -236,15 +236,15 @@
  */
 void *purple_network_get_handle(void);
 
-/**	
+/**
  * Update the STUN server IP given the host name
  * Will result in a DNS query being executed asynchronous
- * 
+ *
  * @param stun_server The host name of the STUN server to set
  * @since 2.6.0
  */
 void purple_network_set_stun_server(const gchar *stun_server);
-	
+
 /**
  * Get the IP address of the STUN server as a string representation
  *
@@ -252,16 +252,16 @@
  * @since 2.6.0
  */
 const gchar *purple_network_get_stun_ip(void);
-	
-/**	
+
+/**
  * Update the TURN server IP given the host name
  * Will result in a DNS query being executed asynchronous
- * 
+ *
  * @param turn_server The host name of the TURN server to set
  * @since 2.6.0
  */
 void purple_network_set_turn_server(const gchar *turn_server);
-	
+
 /**
  * Get the IP address of the TURN server as a string representation
  *
@@ -269,14 +269,14 @@
  * @since 2.6.0
  */
 const gchar *purple_network_get_turn_ip(void);
-		
+
 /**
  * Remove a port mapping (UPnP or NAT-PMP) associated with listening socket
  *
  * @param fd Socket to remove the port mapping for
  * @since 2.6.0
  */
-void purple_network_remove_port_mapping(gint fd);	
+void purple_network_remove_port_mapping(gint fd);
 
 /**
  * Convert a UTF-8 domain name to ASCII in accordance with the IDNA
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/oscar.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/oscar.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/oscar.h	Thu Apr 22 17:53:56 2010 -0700
@@ -344,40 +344,39 @@
 	OSCAR_DISCONNECT_RETRYING /* peer connections only */
 } OscarDisconnectReason;
 
-typedef enum
-{
-	OSCAR_CAPABILITY_BUDDYICON            = 0x00000001,
-	OSCAR_CAPABILITY_TALK                 = 0x00000002,
-	OSCAR_CAPABILITY_DIRECTIM             = 0x00000004,
-	OSCAR_CAPABILITY_CHAT                 = 0x00000008,
-	OSCAR_CAPABILITY_GETFILE              = 0x00000010,
-	OSCAR_CAPABILITY_SENDFILE             = 0x00000020,
-	OSCAR_CAPABILITY_GAMES                = 0x00000040,
-	OSCAR_CAPABILITY_ADDINS               = 0x00000080,
-	OSCAR_CAPABILITY_SENDBUDDYLIST        = 0x00000100,
-	OSCAR_CAPABILITY_GAMES2               = 0x00000200,
-	OSCAR_CAPABILITY_ICQ_DIRECT           = 0x00000400,
-	OSCAR_CAPABILITY_APINFO               = 0x00000800,
-	OSCAR_CAPABILITY_ICQRTF               = 0x00001000,
-	OSCAR_CAPABILITY_EMPTY                = 0x00002000,
-	OSCAR_CAPABILITY_ICQSERVERRELAY       = 0x00004000,
-	OSCAR_CAPABILITY_UNICODEOLD           = 0x00008000,
-	OSCAR_CAPABILITY_TRILLIANCRYPT        = 0x00010000,
-	OSCAR_CAPABILITY_UNICODE              = 0x00020000,
-	OSCAR_CAPABILITY_INTEROPERATE         = 0x00040000,
-	OSCAR_CAPABILITY_SHORTCAPS            = 0x00080000,
-	OSCAR_CAPABILITY_HIPTOP               = 0x00100000,
-	OSCAR_CAPABILITY_SECUREIM             = 0x00200000,
-	OSCAR_CAPABILITY_SMS                  = 0x00400000,
-	OSCAR_CAPABILITY_VIDEO                = 0x00800000,
-	OSCAR_CAPABILITY_ICHATAV              = 0x01000000,
-	OSCAR_CAPABILITY_LIVEVIDEO            = 0x02000000,
-	OSCAR_CAPABILITY_CAMERA               = 0x04000000,
-	OSCAR_CAPABILITY_ICHAT_SCREENSHARE    = 0x08000000,
-	OSCAR_CAPABILITY_TYPING               = 0x10000000,
-	OSCAR_CAPABILITY_GENERICUNKNOWN       = 0x20000000,
-	OSCAR_CAPABILITY_LAST                 = 0x40000000
-} OscarCapability;
+#define OSCAR_CAPABILITY_BUDDYICON             0x0000000000000001LL
+#define OSCAR_CAPABILITY_TALK                  0x0000000000000002LL
+#define OSCAR_CAPABILITY_DIRECTIM              0x0000000000000004LL
+#define OSCAR_CAPABILITY_CHAT                  0x0000000000000008LL
+#define OSCAR_CAPABILITY_GETFILE               0x0000000000000010LL
+#define OSCAR_CAPABILITY_SENDFILE              0x0000000000000020LL
+#define OSCAR_CAPABILITY_GAMES                 0x0000000000000040LL
+#define OSCAR_CAPABILITY_ADDINS                0x0000000000000080LL
+#define OSCAR_CAPABILITY_SENDBUDDYLIST         0x0000000000000100LL
+#define OSCAR_CAPABILITY_GAMES2                0x0000000000000200LL
+#define OSCAR_CAPABILITY_ICQ_DIRECT            0x0000000000000400LL
+#define OSCAR_CAPABILITY_APINFO                0x0000000000000800LL
+#define OSCAR_CAPABILITY_ICQRTF                0x0000000000001000LL
+#define OSCAR_CAPABILITY_EMPTY                 0x0000000000002000LL
+#define OSCAR_CAPABILITY_ICQSERVERRELAY        0x0000000000004000LL
+#define OSCAR_CAPABILITY_UNICODEOLD            0x0000000000008000LL
+#define OSCAR_CAPABILITY_TRILLIANCRYPT         0x0000000000010000LL
+#define OSCAR_CAPABILITY_UNICODE               0x0000000000020000LL
+#define OSCAR_CAPABILITY_INTEROPERATE          0x0000000000040000LL
+#define OSCAR_CAPABILITY_SHORTCAPS             0x0000000000080000LL
+#define OSCAR_CAPABILITY_HIPTOP                0x0000000000100000LL
+#define OSCAR_CAPABILITY_SECUREIM              0x0000000000200000LL
+#define OSCAR_CAPABILITY_SMS                   0x0000000000400000LL
+#define OSCAR_CAPABILITY_VIDEO                 0x0000000000800000LL
+#define OSCAR_CAPABILITY_ICHATAV               0x0000000001000000LL
+#define OSCAR_CAPABILITY_LIVEVIDEO             0x0000000002000000LL
+#define OSCAR_CAPABILITY_CAMERA                0x0000000004000000LL
+#define OSCAR_CAPABILITY_ICHAT_SCREENSHARE     0x0000000008000000LL
+#define OSCAR_CAPABILITY_TYPING                0x0000000010000000LL
+#define OSCAR_CAPABILITY_NEWCAPS               0x0000000020000000LL
+#define OSCAR_CAPABILITY_XTRAZ                 0x0000000040000000LL
+#define OSCAR_CAPABILITY_GENERICUNKNOWN        0x0000000080000000LL
+#define OSCAR_CAPABILITY_LAST                  0x0000000100000000LL
 
 /*
  * Byte Stream type. Sort of.
@@ -572,6 +571,12 @@
 #define AIM_ICQ_STATE_BUSY              0x00000010
 #define AIM_ICQ_STATE_CHAT              0x00000020
 #define AIM_ICQ_STATE_INVISIBLE         0x00000100
+#define AIM_ICQ_STATE_EVIL              0x00003000
+#define AIM_ICQ_STATE_DEPRESSION        0x00004000
+#define AIM_ICQ_STATE_ATHOME            0x00005000
+#define AIM_ICQ_STATE_ATWORK            0x00006000
+#define AIM_ICQ_STATE_LUNCH             0x00002001
+#define AIM_ICQ_STATE_EVIL              0x00003000
 #define AIM_ICQ_STATE_WEBAWARE          0x00010000
 #define AIM_ICQ_STATE_HIDEIP            0x00020000
 #define AIM_ICQ_STATE_BIRTHDAY          0x00080000
@@ -742,6 +747,21 @@
 #define AIM_IMPARAM_FLAG_SMS_SUPPORTED          0x00000010
 #define AIM_IMPARAM_FLAG_OFFLINE_MSGS_ALLOWED   0x00000100
 
+/**
+ * This flag tells the server that we always send HTML in messages
+ * sent from an ICQ account to an ICQ account.  (If this flag is
+ * not sent then plaintext is sent ICQ<-->ICQ (HTML is sent in all
+ * other cases)).
+ *
+ * If we send an HTML message to an old client that doesn't support
+ * HTML messages, then the oscar servers will merrily strip the HTML
+ * for us.
+ *
+ * When we receive an IM we look at the features on the ICBM to
+ * determine if the message is HTML or plaintext.
+ */
+#define AIM_IMPARAM_FLAG_USE_HTML_FOR_ICQ       0x00000400
+
 /* This is what the server will give you if you don't set them yourself. */
 /* This is probably out of date. */
 #define AIM_IMPARAM_DEFAULTS { \
@@ -939,7 +959,7 @@
 {
 	guint16 status;
 	guchar cookie[8];
-	int type; /* One of the OSCAR_CAPABILITY_ constants */
+	guint64 type; /* One of the OSCAR_CAPABILITY_ constants */
 	const char *proxyip;
 	const char *clientip;
 	const char *verifiedip;
@@ -1012,7 +1032,8 @@
 /* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destbn, guint32 flags);
 /* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code);
 /* 0x0010 */ int aim_im_reqofflinemsgs(OscarData *od);
-/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 channel, const char *bn, guint16 event);
+/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2);
+/* 0x000b */ int icq_relay_xstatus (OscarData *od, const char *sn, const guchar* cookie);
 void aim_icbm_makecookie(guchar* cookie);
 gchar *oscar_encoding_extract(const char *encoding);
 gchar *oscar_encoding_to_utf8(PurpleAccount *account, const char *encoding, const char *text, int textlen);
@@ -1066,7 +1087,7 @@
 	guint32 membersince; /* time_t */
 	guint32 onlinesince; /* time_t */
 	guint32 sessionlen;  /* in seconds */
-	guint32 capabilities;
+	guint64 capabilities;
 	struct {
 		guint32 status;
 		guint32 ipaddr;
@@ -1131,7 +1152,7 @@
 void aim_locate_dorequest(OscarData *od);
 
 /* 0x0002 */ int aim_locate_reqrights(OscarData *od);
-/* 0x0004 */ int aim_locate_setcaps(OscarData *od, guint32 caps);
+/* 0x0004 */ int aim_locate_setcaps(OscarData *od, guint64 caps);
 /* 0x0004 */ int aim_locate_setprofile(OscarData *od, const char *profile_encoding, const gchar *profile, const int profile_len, const char *awaymsg_encoding, const gchar *awaymsg, const int awaymsg_len);
 /* 0x0005 */ int aim_locate_getinfo(OscarData *od, const char *, guint16);
 /* 0x0009 */ int aim_locate_setdirinfo(OscarData *od, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, guint16 privacy);
@@ -1139,13 +1160,15 @@
 /* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy);
 /* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags);
 
-guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len);
-guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len);
+guint64 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len);
+guint64 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len);
 void aim_info_free(aim_userinfo_t *);
 int aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *);
 int aim_putuserinfo(ByteStream *bs, aim_userinfo_t *info);
-
-
+PurpleMood* icq_get_purple_moods(PurpleAccount *account);
+const char* icq_get_custom_icon_description(const char *mood);
+guint8* icq_get_custom_icon_data(const char *mood);
+int icq_im_xstatus_request(OscarData *od, const char *sn);
 
 /* 0x0003 - family_buddy.c */
 /* 0x0002 */ void aim_buddylist_reqrights(OscarData *, FlapConnection *);
@@ -1474,7 +1497,7 @@
 int aim_tlvlist_add_16(GSList **list, const guint16 type, const guint16 value);
 int aim_tlvlist_add_32(GSList **list, const guint16 type, const guint32 value);
 int aim_tlvlist_add_str(GSList **list, const guint16 type, const char *value);
-int aim_tlvlist_add_caps(GSList **list, const guint16 type, const guint32 caps);
+int aim_tlvlist_add_caps(GSList **list, const guint16 type, const guint64 caps, const char *mood);
 int aim_tlvlist_add_userinfo(GSList **list, guint16 type, aim_userinfo_t *userinfo);
 int aim_tlvlist_add_chatroom(GSList **list, guint16 type, guint16 exchange, const char *roomname, guint16 instance);
 int aim_tlvlist_add_frozentlvlist(GSList **list, guint16 type, GSList **tl);
@@ -1637,7 +1660,7 @@
 int byte_stream_putstr(ByteStream *bs, const char *str);
 int byte_stream_putbs(ByteStream *bs, ByteStream *srcbs, int len);
 int byte_stream_putuid(ByteStream *bs, OscarData *od);
-int byte_stream_putcaps(ByteStream *bs, guint32 caps);
+int byte_stream_putcaps(ByteStream *bs, guint64 caps);
 
 /**
  * Inserts a BART asset block into the given byte stream.  The flags
@@ -1697,7 +1720,7 @@
 IcbmCookie *aim_mkcookie(guint8 *, int, void *);
 IcbmCookie *aim_checkcookie(OscarData *, const unsigned char *, const int);
 int aim_freecookie(OscarData *od, IcbmCookie *cookie);
-int aim_msgcookie_gettype(int type);
+int aim_msgcookie_gettype(guint64 type);
 int aim_cookie_free(OscarData *od, IcbmCookie *cookie);
 
 int aim_chat_readroominfo(ByteStream *bs, struct aim_chat_roominfo *outinfo);
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/peer.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/peer.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/peer.h	Thu Apr 22 17:53:56 2010 -0700
@@ -45,7 +45,7 @@
 #define PEER_TYPE_PROMPT 0x0101 /* "I am going to send you this file, is that ok?" */
 #define PEER_TYPE_RESUMEACCEPT 0x0106 /* We are accepting the resume */
 #define PEER_TYPE_ACK 0x0202 /* "Yes, it is ok for you to send me that file" */
-#define PEER_TYPE_DONE 0x0204 /* "I received that file with no problems, thanks a bunch" */
+#define PEER_TYPE_DONE 0x0204 /* "I received that file with no problems" or "I already have that file, great!" */
 #define PEER_TYPE_RESUME 0x0205 /* Resume transferring, sent by whoever receives */
 #define PEER_TYPE_RESUMEACK 0x0207 /* Our resume accept was ACKed */
 
@@ -136,7 +136,7 @@
 struct _PeerConnection
 {
 	OscarData *od;
-	OscarCapability type;
+	guint64 type;
 	char *bn;
 	guchar magic[4];
 	guchar cookie[8];
@@ -228,11 +228,11 @@
  * @param type The type of the peer connection.  One of
  *        OSCAR_CAPABILITY_DIRECTIM or OSCAR_CAPABILITY_SENDFILE.
  */
-PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *bn);
+PeerConnection *peer_connection_new(OscarData *od, guint64 type, const char *bn);
 
 void peer_connection_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
 void peer_connection_schedule_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
-PeerConnection *peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type);
+PeerConnection *peer_connection_find_by_type(OscarData *od, const char *bn, guint64 type);
 PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie);
 
 void peer_connection_listen_cb(gpointer data, gint source, PurpleInputCondition cond);
@@ -241,7 +241,7 @@
 
 void peer_connection_trynext(PeerConnection *conn);
 void peer_connection_finalize_connection(PeerConnection *conn);
-void peer_connection_propose(OscarData *od, OscarCapability type, const char *bn);
+void peer_connection_propose(OscarData *od, guint64 type, const char *bn);
 void peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args);
 
 /*
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/presence.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/presence.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/presence.h	Thu Apr 22 17:53:56 2010 -0700
@@ -24,10 +24,63 @@
 #ifndef PURPLE_JABBER_PRESENCE_H_
 #define PURPLE_JABBER_PRESENCE_H_
 
+typedef enum {
+	JABBER_PRESENCE_ERROR = -2,
+	JABBER_PRESENCE_PROBE = -1,
+	JABBER_PRESENCE_AVAILABLE,
+	JABBER_PRESENCE_UNAVAILABLE,
+	JABBER_PRESENCE_SUBSCRIBE,
+	JABBER_PRESENCE_SUBSCRIBED,
+	JABBER_PRESENCE_UNSUBSCRIBE,
+	JABBER_PRESENCE_UNSUBSCRIBED
+} JabberPresenceType;
+
+typedef struct _JabberPresenceChatInfo JabberPresenceChatInfo;
+typedef struct _JabberPresence JabberPresence;
+
 #include "buddy.h"
+#include "chat.h"
 #include "jabber.h"
+#include "jutil.h"
 #include "xmlnode.h"
 
+struct _JabberPresenceChatInfo {
+	GSList *codes;
+	xmlnode *item;
+};
+
+struct _JabberPresence {
+	JabberPresenceType type;
+	JabberID *jid_from;
+	const char *from;
+	const char *to;
+	const char *id;
+
+	JabberBuddy *jb;
+	JabberChat *chat;
+	JabberPresenceChatInfo chat_info;
+	xmlnode *caps; /* TODO: Temporary, see presence.c:parse_caps */
+
+	JabberBuddyState state;
+	gchar *status;
+	int priority;
+
+	char *vcard_avatar_hash;
+	char *nickname;
+
+	gboolean delayed;
+	time_t sent;
+	int idle;
+};
+
+typedef void (JabberPresenceHandler)(JabberStream *js, JabberPresence *presence,
+                                     xmlnode *child);
+void jabber_presence_register_handler(const char *node, const char *xmlns,
+                                      JabberPresenceHandler *handler);
+
+void jabber_presence_init(void);
+void jabber_presence_uninit(void);
+
 void jabber_set_status(PurpleAccount *account, PurpleStatus *status);
 
 /**
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/prpl.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/prpl.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/prpl.h	Thu Apr 22 17:53:56 2010 -0700
@@ -569,6 +569,12 @@
 	 */
 	PurpleMediaCaps (*get_media_caps)(PurpleAccount *account,
 					  const char *who);
+
+	/**
+	 * Returns an array of "PurpleMood"s, with the last one having
+	 * "mood" set to @c NULL.
+	 */
+	PurpleMood *(*get_moods)(PurpleAccount *account);
 };
 
 #define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/request.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/request.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/request.h	Thu Apr 22 17:53:56 2010 -0700
@@ -150,6 +150,7 @@
 		struct
 		{
 			GList *items;
+			GList *icons;
 			GHashTable *item_data;
 			GList *selected;
 			GHashTable *selected_table;
@@ -953,11 +954,24 @@
  * @param field The list field.
  * @param item  The list item.
  * @param data  The associated data.
+ *
+ * @deprecated Use purple_request_field_list_add_icon() instead.
  */
 void purple_request_field_list_add(PurpleRequestField *field,
 								 const char *item, void *data);
 
 /**
+ * Adds an item to a list field.
+ *
+ * @param field The list field.
+ * @param item  The list item.
+ * @param icon_path The path to icon file, or @c NULL for no icon.
+ * @param data  The associated data.
+ */
+void purple_request_field_list_add_icon(PurpleRequestField *field,
+								 const char *item, const char* icon_path, void* data);
+
+/**
  * Adds a selected item to the list field.
  *
  * @param field The field.
@@ -1015,6 +1029,18 @@
  */
 GList *purple_request_field_list_get_items(const PurpleRequestField *field);
 
+/**
+ * Returns a list of icons in a list field.
+ *
+ * The icons will correspond with the items, in order.
+ *
+ * @param field The field.
+ *
+ * @constreturn The list of icons or @c NULL (i.e. the empty GList) if no
+ *              items have icons.
+ */
+GList *purple_request_field_list_get_icons(const PurpleRequestField *field);
+
 /*@}*/
 
 /**************************************************************************/
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/signals.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/signals.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/signals.h	Thu Apr 22 17:53:56 2010 -0700
@@ -355,6 +355,8 @@
 void purple_marshal_BOOLEAN__INT_POINTER(
 		PurpleCallback cb, va_list args, void *data, void **return_val);
 
+void purple_marshal_POINTER__POINTER(
+		PurpleCallback cb, va_list args, void *data, void **return_val);
 void purple_marshal_POINTER__POINTER_INT(
 		PurpleCallback cb, va_list args, void *data, void **return_val);
 void purple_marshal_POINTER__POINTER_INT64(
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/slp.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/slp.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/slp.h	Thu Apr 22 17:53:56 2010 -0700
@@ -30,6 +30,25 @@
 #include "session.h"
 #include "slpcall.h"
 
+#define MAX_FILE_NAME_LEN 260 /* MAX_PATH in Windows */
+
+/**
+ * The context data for a file transfer request
+ */
+#pragma pack(push,1) /* Couldn't they have made it the right size? */
+typedef struct
+{
+	guint32   length;       /*< Length of header */
+	guint32   version;      /*< MSN version */
+	guint64   file_size;    /*< Size of file */
+	guint32   type;         /*< Transfer type */
+	gunichar2 file_name[MAX_FILE_NAME_LEN]; /*< Self-explanatory */
+	gchar     unknown1[30]; /*< Used somehow for background sharing */
+	guint32   unknown2;     /*< Possibly for background sharing as well */
+	gchar     preview[1];   /*< File preview data, 96x96 PNG */
+} MsnFileContext;
+#pragma pack(pop)
+
 MsnSlpCall * msn_slp_sip_recv(MsnSlpLink *slplink,
 							  const char *body);
 
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/status.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/status.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/status.h	Thu Apr 22 17:53:56 2010 -0700
@@ -87,6 +87,12 @@
 typedef struct _PurplePresence        PurplePresence;
 typedef struct _PurpleStatus          PurpleStatus;
 
+typedef struct _PurpleMood {
+	const char *mood;
+	const char *description;
+	gpointer *padding;
+} PurpleMood;
+
 /**
  * A context for a presence.
  *
@@ -106,8 +112,7 @@
  */
 /*
  * If you add a value to this enum, make sure you update
- * the status_primitive_map array in status.c and the special-cases for idle
- * and offline-messagable just below it.
+ * the status_primitive_map and primitive_scores arrays in status.c.
  */
 typedef enum
 {
@@ -120,6 +125,7 @@
 	PURPLE_STATUS_EXTENDED_AWAY,
 	PURPLE_STATUS_MOBILE,
 	PURPLE_STATUS_TUNE,
+	PURPLE_STATUS_MOOD,
 	PURPLE_STATUS_NUM_PRIMITIVES
 } PurpleStatusPrimitive;
 
@@ -139,6 +145,9 @@
 #define PURPLE_TUNE_URL		"tune_url"
 #define PURPLE_TUNE_FULL	"tune_full"
 
+#define PURPLE_MOOD_NAME	"mood"
+#define PURPLE_MOOD_COMMENT	"moodtext"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Headers/util.h
--- a/Frameworks/libpurple.framework/Versions/0.7.0/Headers/util.h	Thu Apr 15 19:05:21 2010 -0400
+++ b/Frameworks/libpurple.framework/Versions/0.7.0/Headers/util.h	Thu Apr 22 17:53:56 2010 -0700
@@ -1429,6 +1429,10 @@
 /**
  * This is added temporarily to assist the split of oscar into aim and icq.
  * This should not be used by plugins.
+ *
+ * @deprecated This function should not be used in new code and should be
+ *             removed in 3.0.0.  The aim/icq prpl split happened a long
+ *             time ago, and we don't need to keep migrating old data.
  */
 const char *_purple_oscar_convert(const char *act, const char *protocol);
 
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/ca/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/ca/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/cs/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/cs/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/da/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/da/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/de/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/de/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/el/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/el/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_AU/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_AU/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_CA/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_CA/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_GB/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/en_GB/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/es/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/es/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/fi/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/fi/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/fr/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/fr/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/hu/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/hu/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/it/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/it/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/ja/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/ja/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/mr/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/mr/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/nb/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/nb/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/nl/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/nl/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/pl/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/pl/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/pt/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/pt/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/pt_BR/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/pt_BR/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/ru/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/ru/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/sl/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/sl/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/sv/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/sv/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/tr/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/tr/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/uk/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/uk/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/zh_CN/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/zh_CN/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/Resources/zh_TW/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0.7.0/Resources/zh_TW/LC_MESSAGES/pidgin.mo has changed
diff -r 1da1744bf7a1 -r a43a13856a83 Frameworks/libpurple.framework/Versions/0.7.0/libpurple
Binary file Frameworks/libpurple.framework/Versions/0.7.0/libpurple has changed




More information about the commits mailing list