adium 5026:40dc3e42d737: Merged adium-1.5.4 into adium-1.6.

commits at adium.im commits at adium.im
Wed Sep 5 22:18:55 UTC 2012


details:	http://hg.adium.im/adium/rev/40dc3e42d737
revision:	5026:40dc3e42d737
branch:		adium-1.6
author:		Thijs Alkemade <thijsalkemade at gmail.com>
date:		Thu Sep 06 00:17:15 2012 +0200

Merged adium-1.5.4 into adium-1.6.
Subject: adium 5027:b62ccf3a75ba: Merged adium-1.6 into default.

details:	http://hg.adium.im/adium/rev/b62ccf3a75ba
revision:	5027:b62ccf3a75ba
branch:		(none)
author:		Thijs Alkemade <thijsalkemade at gmail.com>
date:		Thu Sep 06 00:18:31 2012 +0200

Merged adium-1.6 into default.

diffs (truncated from 10384 to 1000 lines):

diff -r c2db512d2a5c -r b62ccf3a75ba Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Wed Sep 05 11:27:21 2012 +0100
+++ b/Adium.xcodeproj/project.pbxproj	Thu Sep 06 00:18:31 2012 +0200
@@ -529,7 +529,6 @@
 		3485DBCA09EBCE7400232CC4 /* ESPurpleRequestActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 341E88680648FF1B00E0C828 /* ESPurpleRequestActionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		3485DBCB09EBCE7400232CC4 /* ESPurpleRequestActionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 341E88690648FF1B00E0C828 /* ESPurpleRequestActionController.m */; };
 		3485DBD009EBCE8200232CC4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3402E04D07CB0EB00044F818 /* Localizable.strings */; };
-		34891C140D4B75EE00AEF48C /* AIStandardListScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 34891C130D4B75EE00AEF48C /* AIStandardListScrollView.m */; };
 		348C47170D3B20BE00FB6E7A /* AIMessageWindowOutgoingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 348C47160D3B20BE00FB6E7A /* AIMessageWindowOutgoingScrollView.m */; };
 		348F57940936F3CC00288E41 /* ESEditStatusGroupWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 348F57920936F3CC00288E41 /* ESEditStatusGroupWindowController.m */; };
 		348F579E0936FA6D00288E41 /* EditStatusGroup.xib in Resources */ = {isa = PBXBuildFile; fileRef = 348F579D0936FA6D00288E41 /* EditStatusGroup.xib */; };
@@ -538,9 +537,6 @@
 		349195670C9662AA00595A04 /* AIListBookmark.h in Headers */ = {isa = PBXBuildFile; fileRef = 349195650C9662AA00595A04 /* AIListBookmark.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		3496A8C207CE6B880055BBAB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3496A8C107CE6B880055BBAB /* InfoPlist.strings */; };
 		349710DD096C4C7700699948 /* Buttons.strings in Resources */ = {isa = PBXBuildFile; fileRef = 349710DB096C4C7700699948 /* Buttons.strings */; };
-		349C2F470867AD16000BF883 /* ApplescriptRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 349C2F460867AD16000BF883 /* ApplescriptRunner.m */; };
-		349C2FF00867AD65000BF883 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 349C2FEF0867AD65000BF883 /* Foundation.framework */; };
-		349C30790867ADA3000BF883 /* AdiumApplescriptRunner in Resources */ = {isa = PBXBuildFile; fileRef = 349C2EFA0867AC97000BF883 /* AdiumApplescriptRunner */; };
 		349C6E4907C96D45005EB896 /* CBContactCountingDisplayPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 349C6E4607C96D44005EB896 /* CBContactCountingDisplayPlugin.m */; };
 		349C6E8E07C972B2005EB896 /* AIExtendedStatusPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 349C6E8C07C972B2005EB896 /* AIExtendedStatusPlugin.m */; };
 		349E2E8E07A8AF0C00EAB76A /* AIEmoticonPackPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 349E2E8C07A8AF0C00EAB76A /* AIEmoticonPackPreviewController.m */; };
@@ -1365,6 +1361,9 @@
 		766ABAB61306D1020049FFB7 /* AIUnreadMessagesTooltip.m in Sources */ = {isa = PBXBuildFile; fileRef = 766ABAB51306D1020049FFB7 /* AIUnreadMessagesTooltip.m */; };
 		76889DEB12D3CA17007AEF00 /* get-info.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 76889DEA12D3CA17007AEF00 /* get-info.tiff */; };
 		76889DEF12D3CA40007AEF00 /* Personal.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 76889DEE12D3CA40007AEF00 /* Personal.tiff */; };
+		76B73B2114BE287D00A58BAB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76B73B2014BE287D00A58BAB /* Foundation.framework */; };
+		76B73B3014BE29AB00A58BAB /* im.adium.AIApplescriptRunner.xpc in CopyFiles */ = {isa = PBXBuildFile; fileRef = 76B73B1E14BE287D00A58BAB /* im.adium.AIApplescriptRunner.xpc */; };
+		76B73B3414BE3B9400A58BAB /* AIApplescriptRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 76B73B3314BE3B9400A58BAB /* AIApplescriptRunner.m */; };
 		76C1AF9C125A906A00D269A9 /* AIAdiumURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 76C1AF9B125A906A00D269A9 /* AIAdiumURLProtocol.m */; };
 		7E6F8A94105611B700C6D80D /* libotr.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E6F8A93105611B700C6D80D /* libotr.framework */; };
 		7E6F8ACD105613AD00C6D80D /* libotr.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 7E6F8A93105611B700C6D80D /* libotr.framework */; };
@@ -1561,13 +1560,6 @@
 			remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
 			remoteInfo = AutoHyperlinks.framework;
 		};
-		349C31620867D199000BF883 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 349C2EF90867AC97000BF883;
-			remoteInfo = AdiumApplescriptRunner;
-		};
 		6329EFB40F9D33A600112489 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
@@ -1617,6 +1609,13 @@
 			remoteGlobalIDString = F53C25AE0A2F95F100F7B73D;
 			remoteInfo = "Setup Build Directory";
 		};
+		76B73B3114BE2A5200A58BAB /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 76B73B1D14BE287D00A58BAB;
+			remoteInfo = AIApplescriptRunner;
+		};
 		7E78DA9B0DD135DE00B9388F /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 3496A8E707CE6CA30055BBAB /* AutoHyperlinks.framework.xcodeproj */;
@@ -1709,6 +1708,16 @@
 			name = "Copy Frameworks";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		76B73B2F14BE294900A58BAB /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = Contents/XPCServices;
+			dstSubfolderSpec = 1;
+			files = (
+				76B73B3014BE29AB00A58BAB /* im.adium.AIApplescriptRunner.xpc in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		F51BCD3E0A156281000FDC06 /* Copy Spotlight Importer */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -2945,8 +2954,6 @@
 		348839210BB0E7BB009C3F7C /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_CN; path = Resources/zh_CN.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		348862CD05645E94003C9627 /* ESFileTransfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ESFileTransfer.h; path = "Frameworks/Adium Framework/Source/ESFileTransfer.h"; sourceTree = "<group>"; };
 		348862CE05645E95003C9627 /* ESFileTransfer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ESFileTransfer.m; path = "Frameworks/Adium Framework/Source/ESFileTransfer.m"; sourceTree = "<group>"; };
-		34891C120D4B75EE00AEF48C /* AIStandardListScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIStandardListScrollView.h; path = Source/AIStandardListScrollView.h; sourceTree = "<group>"; };
-		34891C130D4B75EE00AEF48C /* AIStandardListScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIStandardListScrollView.m; path = Source/AIStandardListScrollView.m; sourceTree = "<group>"; };
 		3489506A0CDE0CC5002FEB4D /* IKRecentPicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IKRecentPicture.h; path = Source/IKRecentPicture.h; sourceTree = "<group>"; };
 		348A8A190629A68C00FC6E03 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = en; path = "Plugins/Purple Service/Resources/en.lproj/ESPurpleJabberAccountView.xib"; sourceTree = "<group>"; };
 		348A901A062A13AB00FC6E03 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = en; path = "Plugins/Purple Service/Resources/en.lproj/ESPurpleYahooAccountView.xib"; sourceTree = "<group>"; };
@@ -3003,8 +3010,6 @@
 		3499F4A706309AF60035B468 /* ESPurpleRequestWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ESPurpleRequestWindowController.h; path = "Plugins/Purple Service/ESPurpleRequestWindowController.h"; sourceTree = "<group>"; };
 		349B39290A5FB150008BE092 /* AIContentEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIContentEvent.h; path = "Frameworks/Adium Framework/Source/AIContentEvent.h"; sourceTree = "<group>"; };
 		349B392A0A5FB150008BE092 /* AIContentEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIContentEvent.m; path = "Frameworks/Adium Framework/Source/AIContentEvent.m"; sourceTree = "<group>"; };
-		349C2EFA0867AC97000BF883 /* AdiumApplescriptRunner */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AdiumApplescriptRunner; sourceTree = BUILT_PRODUCTS_DIR; };
-		349C2F460867AD16000BF883 /* ApplescriptRunner.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ApplescriptRunner.m; path = Source/ApplescriptRunner.m; sourceTree = "<group>"; };
 		349C2FEF0867AD65000BF883 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
 		349C6E4607C96D44005EB896 /* CBContactCountingDisplayPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = CBContactCountingDisplayPlugin.m; path = Source/CBContactCountingDisplayPlugin.m; sourceTree = "<group>"; };
 		349C6E4707C96D45005EB896 /* CBContactCountingDisplayPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CBContactCountingDisplayPlugin.h; path = Source/CBContactCountingDisplayPlugin.h; sourceTree = "<group>"; };
@@ -4382,6 +4387,10 @@
 		766ABAB51306D1020049FFB7 /* AIUnreadMessagesTooltip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIUnreadMessagesTooltip.m; path = Source/AIUnreadMessagesTooltip.m; sourceTree = "<group>"; };
 		76889DEA12D3CA17007AEF00 /* get-info.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "get-info.tiff"; path = "Resources/get-info.tiff"; sourceTree = "<group>"; };
 		76889DEE12D3CA40007AEF00 /* Personal.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Personal.tiff; path = Resources/Personal.tiff; sourceTree = "<group>"; };
+		76B73B1E14BE287D00A58BAB /* im.adium.AIApplescriptRunner.xpc */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = im.adium.AIApplescriptRunner.xpc; sourceTree = BUILT_PRODUCTS_DIR; };
+		76B73B2014BE287D00A58BAB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		76B73B3314BE3B9400A58BAB /* AIApplescriptRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIApplescriptRunner.m; path = Source/AIApplescriptRunner.m; sourceTree = SOURCE_ROOT; };
+		76B73B3514BE3BEB00A58BAB /* AIApplescriptRunner-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "AIApplescriptRunner-Info.plist"; path = "Plists/AIApplescriptRunner-Info.plist"; sourceTree = SOURCE_ROOT; };
 		76C1AF9A125A906A00D269A9 /* AIAdiumURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAdiumURLProtocol.h; path = "Plugins/WebKit Message View/AIAdiumURLProtocol.h"; sourceTree = "<group>"; };
 		76C1AF9B125A906A00D269A9 /* AIAdiumURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIAdiumURLProtocol.m; path = "Plugins/WebKit Message View/AIAdiumURLProtocol.m"; sourceTree = "<group>"; };
 		77D903500B78CF1000B86C42 /* zhm */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = zhm; path = "Plugins/Purple Service/zhm"; sourceTree = "<group>"; };
@@ -4724,14 +4733,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		349C2EF80867AC97000BF883 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				349C2FF00867AD65000BF883 /* Foundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		34BD9D57053146CC000AB133 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -4807,6 +4808,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		76B73B1B14BE287D00A58BAB /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				76B73B2114BE287D00A58BAB /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
@@ -5034,11 +5043,11 @@
 			children = (
 				34BD9DA9053146CC000AB133 /* Adium.app */,
 				34BD9DE105314751000AB133 /* Adium.framework */,
-				349C2EFA0867AC97000BF883 /* AdiumApplescriptRunner */,
 				3485D68009EB416300232CC4 /* AdiumLibpurple.framework */,
 				312ED3CA0C7E875B00A6BDA9 /* Unit tests.octest */,
 				6334FBFC0F9C11DC003C77A9 /* AIUtilities.framework */,
 				633D4FA40F9D3073004F491E /* AdiumSpotlightImporter.mdimporter */,
+				76B73B1E14BE287D00A58BAB /* im.adium.AIApplescriptRunner.xpc */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -5058,7 +5067,7 @@
 				344458F3070B5BF500D8E932 /* Debugging */,
 				9EB3C52304F94DB7001D1F74 /* Source */,
 				F50A325A03B5798301A8010A /* Resources */,
-				349C2F310867ACF7000BF883 /* ApplescriptRunner */,
+				76B73B2214BE287D00A58BAB /* AIApplescriptRunner */,
 				312ED3D80C7E89CC00A6BDA9 /* Unit tests */,
 				29B97323FDCFA39411CA2CEA /* Linked Frameworks */,
 				63C7E0280FAF9B7D00B310AC /* xcconfigs */,
@@ -5920,14 +5929,6 @@
 			name = "Views and Cells";
 			sourceTree = "<group>";
 		};
-		349C2F310867ACF7000BF883 /* ApplescriptRunner */ = {
-			isa = PBXGroup;
-			children = (
-				349C2F460867AD16000BF883 /* ApplescriptRunner.m */,
-			);
-			name = ApplescriptRunner;
-			sourceTree = "<group>";
-		};
 		349C6E8207C9728B005EB896 /* Contact List */ = {
 			isa = PBXGroup;
 			children = (
@@ -7201,8 +7202,6 @@
 				34607EE709B228FE000DB3D2 /* AIContactListNameButton.m */,
 				34AE249B09BCCFA900A35B51 /* AIWindowDraggingView.h */,
 				34AE249C09BCCFA900A35B51 /* AIWindowDraggingView.m */,
-				34891C120D4B75EE00AEF48C /* AIStandardListScrollView.h */,
-				34891C130D4B75EE00AEF48C /* AIStandardListScrollView.m */,
 			);
 			name = "Standard Window";
 			sourceTree = "<group>";
@@ -8073,6 +8072,15 @@
 			name = "HTTP Server";
 			sourceTree = "<group>";
 		};
+		76B73B2214BE287D00A58BAB /* AIApplescriptRunner */ = {
+			isa = PBXGroup;
+			children = (
+				76B73B3514BE3BEB00A58BAB /* AIApplescriptRunner-Info.plist */,
+				76B73B3314BE3B9400A58BAB /* AIApplescriptRunner.m */,
+			);
+			path = AIApplescriptRunner;
+			sourceTree = "<group>";
+		};
 		7E824CCD06387FAF00813072 /* Link Management */ = {
 			isa = PBXGroup;
 			children = (
@@ -9163,22 +9171,6 @@
 			productReference = 3485D68009EB416300232CC4 /* AdiumLibpurple.framework */;
 			productType = "com.apple.product-type.framework";
 		};
-		349C2EF90867AC97000BF883 /* AdiumApplescriptRunner */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 349C2F220867ACA9000BF883 /* Build configuration list for PBXNativeTarget "AdiumApplescriptRunner" */;
-			buildPhases = (
-				349C2EF70867AC97000BF883 /* Sources */,
-				349C2EF80867AC97000BF883 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = AdiumApplescriptRunner;
-			productName = ApplescriptRunner;
-			productReference = 349C2EFA0867AC97000BF883 /* AdiumApplescriptRunner */;
-			productType = "com.apple.product-type.tool";
-		};
 		34BD9CD1053146CC000AB133 /* Adium */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DADE8E22085507450062B664 /* Build configuration list for PBXNativeTarget "Adium" */;
@@ -9191,14 +9183,15 @@
 				4BF2E91F067CB76300743318 /* Copy Built-in Xtras */,
 				34BD9D6A053146CC000AB133 /* Copy AdiumPlugins */,
 				345DFF4A05564DB200CEE7B3 /* Run Generate Buildnum File Script */,
+				76B73B2F14BE294900A58BAB /* CopyFiles */,
 			);
 			buildRules = (
 				81F9D1DF0A7F81A5004A35BD /* PBXBuildRule */,
 			);
 			dependencies = (
+				76B73B3214BE2A5200A58BAB /* PBXTargetDependency */,
 				11F6CB2E109BC6AC0070022D /* PBXTargetDependency */,
 				639DF9E30F97E687003C9A32 /* PBXTargetDependency */,
-				349C31630867D199000BF883 /* PBXTargetDependency */,
 				6329EFB50F9D33A600112489 /* PBXTargetDependency */,
 				F5B17CDF0A16C767004AE99E /* PBXTargetDependency */,
 			);
@@ -9266,6 +9259,23 @@
 			productReference = 633D4FA40F9D3073004F491E /* AdiumSpotlightImporter.mdimporter */;
 			productType = "com.apple.product-type.bundle";
 		};
+		76B73B1D14BE287D00A58BAB /* AIApplescriptRunner */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 76B73B2B14BE287D00A58BAB /* Build configuration list for PBXNativeTarget "AIApplescriptRunner" */;
+			buildPhases = (
+				76B73B1A14BE287D00A58BAB /* Sources */,
+				76B73B1B14BE287D00A58BAB /* Frameworks */,
+				76B73B1C14BE287D00A58BAB /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = AIApplescriptRunner;
+			productName = AIApplescriptRunner;
+			productReference = 76B73B1E14BE287D00A58BAB /* im.adium.AIApplescriptRunner.xpc */;
+			productType = "com.apple.product-type.bundle";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -9334,12 +9344,12 @@
 				34BD9DAF05314751000AB133 /* Adium.Framework */,
 				3485D67F09EB416300232CC4 /* AdiumLibpurple */,
 				6334FBFB0F9C11DC003C77A9 /* AIUtilities.framework */,
-				349C2EF90867AC97000BF883 /* AdiumApplescriptRunner */,
 				F5B17CCF0A16C6AC004AE99E /* Plist Macros */,
 				F53C25AE0A2F95F100F7B73D /* Setup Build Directory */,
 				34F3B9510BDF15F40011AB34 /* Touch Framework Bundles to Executable Date */,
 				312ED3C90C7E875B00A6BDA9 /* Unit tests */,
 				633D4FA30F9D3073004F491E /* Spotlight Importer */,
+				76B73B1D14BE287D00A58BAB /* AIApplescriptRunner */,
 			);
 		};
 /* End PBXProject section */
@@ -9469,7 +9479,6 @@
 				9EF0DBFA09D944C200FBCC1E /* msg-block-contact.tiff in Resources */,
 				9EF0DBFB09D944C200FBCC1E /* msg-unblock-contact.tiff in Resources */,
 				346F5D3208A43E7B0055C610 /* CurrentTunes.scpt in Resources */,
-				349C30790867ADA3000BF883 /* AdiumApplescriptRunner in Resources */,
 				34E0EA0807CC53ED00A82198 /* NewMessagePrompt.xib in Resources */,
 				347E781A07CA962100350507 /* events-contact.png in Resources */,
 				347E783407CA967100350507 /* SortingDefaults.plist in Resources */,
@@ -9798,6 +9807,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		76B73B1C14BE287D00A58BAB /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
@@ -10042,14 +10058,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		349C2EF70867AC97000BF883 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				349C2F470867AD16000BF883 /* ApplescriptRunner.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		34BD9D42053146CC000AB133 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -10320,7 +10328,6 @@
 				347F4B810D340F16006D5A56 /* AIPreferenceContainer.m in Sources */,
 				0CFA98C90D35C18000A077C6 /* NSDataAdditions.m in Sources */,
 				348C47170D3B20BE00FB6E7A /* AIMessageWindowOutgoingScrollView.m in Sources */,
-				34891C140D4B75EE00AEF48C /* AIStandardListScrollView.m in Sources */,
 				4F1CB6260D640D5C0073A1E6 /* AIContactInfoContentController.m in Sources */,
 				4F1CB6290D640D680073A1E6 /* AIInfoInspectorPane.m in Sources */,
 				4F1CB62E0D640D770073A1E6 /* AIAdvancedInspectorPane.m in Sources */,
@@ -10608,6 +10615,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		76B73B1A14BE287D00A58BAB /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				76B73B3414BE3B9400A58BAB /* AIApplescriptRunner.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
@@ -10631,11 +10646,6 @@
 			target = 34BD9DAF05314751000AB133 /* Adium.Framework */;
 			targetProxy = 340BAB4E09EC6FA7000EC441 /* PBXContainerItemProxy */;
 		};
-		349C31630867D199000BF883 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 349C2EF90867AC97000BF883 /* AdiumApplescriptRunner */;
-			targetProxy = 349C31620867D199000BF883 /* PBXContainerItemProxy */;
-		};
 		6329EFB50F9D33A600112489 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 633D4FA30F9D3073004F491E /* Spotlight Importer */;
@@ -10671,6 +10681,11 @@
 			target = F53C25AE0A2F95F100F7B73D /* Setup Build Directory */;
 			targetProxy = 63DE4C520F9C77D50034ED3A /* PBXContainerItemProxy */;
 		};
+		76B73B3214BE2A5200A58BAB /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 76B73B1D14BE287D00A58BAB /* AIApplescriptRunner */;
+			targetProxy = 76B73B3114BE2A5200A58BAB /* PBXContainerItemProxy */;
+		};
 		F5B17CDF0A16C767004AE99E /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = F5B17CCF0A16C6AC004AE99E /* Plist Macros */;
@@ -12196,27 +12211,6 @@
 			};
 			name = "Release-Debug";
 		};
-		349C2F230867ACA9000BF883 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 63C7E11A0FAFA35E00B310AC /* AdiumApplescriptRunner.xcconfig */;
-			buildSettings = {
-			};
-			name = Debug;
-		};
-		349C2F240867ACA9000BF883 /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 63C7E11A0FAFA35E00B310AC /* AdiumApplescriptRunner.xcconfig */;
-			buildSettings = {
-			};
-			name = Release;
-		};
-		349C2F250867ACA9000BF883 /* Release-Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 63C7E11A0FAFA35E00B310AC /* AdiumApplescriptRunner.xcconfig */;
-			buildSettings = {
-			};
-			name = "Release-Debug";
-		};
 		34F3B95B0BDF16130011AB34 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E1150FAFA35E00B310AC /* Touch Framework Bundles to Executable Date.xcconfig */;
@@ -12280,6 +12274,88 @@
 			};
 			name = "Release-Debug";
 		};
+		76B73B2C14BE287D00A58BAB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = "Plists/AIApplescriptRunner-Info.plist";
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				ONLY_ACTIVE_ARCH = YES;
+				PRODUCT_NAME = "im.adium.$(TARGET_NAME)";
+				SDKROOT = macosx;
+				WRAPPER_EXTENSION = xpc;
+			};
+			name = Debug;
+		};
+		76B73B2D14BE287D00A58BAB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "";
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = "Plists/AIApplescriptRunner-Info.plist";
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				PRODUCT_NAME = "im.adium.$(TARGET_NAME)";
+				SDKROOT = macosx;
+				WRAPPER_EXTENSION = xpc;
+			};
+			name = Release;
+		};
+		76B73B2E14BE287D00A58BAB /* Release-Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "";
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = "Plists/AIApplescriptRunner-Info.plist";
+				MACH_O_TYPE = mh_execute;
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				PRODUCT_NAME = "im.adium.$(TARGET_NAME)";
+				SDKROOT = macosx;
+				WRAPPER_EXTENSION = xpc;
+			};
+			name = "Release-Debug";
+		};
 		DADE8E00085507450062B664 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2070FAFAA4700B310AC /* Adium.framework.xcconfig */;
@@ -12434,16 +12510,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Debug;
 		};
-		349C2F220867ACA9000BF883 /* Build configuration list for PBXNativeTarget "AdiumApplescriptRunner" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				349C2F230867ACA9000BF883 /* Debug */,
-				349C2F240867ACA9000BF883 /* Release */,
-				349C2F250867ACA9000BF883 /* Release-Debug */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
 		34F3B95A0BDF16130011AB34 /* Build configuration list for PBXAggregateTarget "Touch Framework Bundles to Executable Date" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -12474,6 +12540,16 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Debug;
 		};
+		76B73B2B14BE287D00A58BAB /* Build configuration list for PBXNativeTarget "AIApplescriptRunner" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				76B73B2C14BE287D00A58BAB /* Debug */,
+				76B73B2D14BE287D00A58BAB /* Release */,
+				76B73B2E14BE287D00A58BAB /* Release-Debug */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
 		DADE8DFF085507450062B664 /* Build configuration list for PBXNativeTarget "Adium.Framework" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff -r c2db512d2a5c -r b62ccf3a75ba ChangeLogs/Changes.txt
--- a/ChangeLogs/Changes.txt	Wed Sep 05 11:27:21 2012 +0100
+++ b/ChangeLogs/Changes.txt	Thu Sep 06 00:18:31 2012 +0200
@@ -1,5 +1,11 @@
 				Adium Version History
 				-----------------------
+Version 1.5.4 (XX/XX/XXXX)
+ * Updated the included Growl SDK to 2.0, adding support for Notification Center on 10.8 if Growl is not installed. (#15867)
+ * Fixed a problem where accepting a group chat invite on Sametime 8.5.1 would crash Adium. (Jere Krischel and Jonathan Rice) (#16114)
+ * Limit the tracking of the last seen time to contacts who are on your contact list.
+
+
 Version 1.5.3 (8/12/2012)
  * Fixed another problem with the transcript viewer causing search to fail when closing and reopening the window. (#13586, #15699)
  * Fixed a problem with iTunes 10.6.3 on Mac OS X 10.6.8 causing the chat window's toolbar to break. (#16046)
diff -r c2db512d2a5c -r b62ccf3a75ba Copyright.txt
--- a/Copyright.txt	Wed Sep 05 11:27:21 2012 +0100
+++ b/Copyright.txt	Thu Sep 06 00:18:31 2012 +0200
@@ -62,6 +62,7 @@
 Eitan Konigsburg
 Alexander Kolov
 Ian Krieg
+Jere Krischel
 Thomas Kunze
 Gayle Laakmann
 Scott Lamb
@@ -92,6 +93,7 @@
 Matthew Plough
 Stephen Poprocki
 Xavid Pretzer
+Jonathan Rice
 Eric Richie
 Eion Robb
 Jesse Rusak
diff -r c2db512d2a5c -r b62ccf3a75ba Dependencies/patches/Meanwhile-srvc_place.c.diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Dependencies/patches/Meanwhile-srvc_place.c.diff	Thu Sep 06 00:18:31 2012 +0200
@@ -0,0 +1,36 @@
+--- 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 @@
+   guint16 login_type;
+   guint32 unknown_a;
+   guint32 unknown_b;
++  char *extraname;
+ };
+ 
+ 
+@@ -189,6 +190,7 @@
+   mwIdBlock_clear(&p->idb);
+   g_free(p->login_id);
+   g_free(p->name);
++  g_free(p->extraname);
+   g_free(p);
+ }
+ 
+@@ -394,6 +396,8 @@
+   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.
+ 
+   PUT_MEMBER(place, pm);
+   if(srvc->handler && srvc->handler->peerJoined)
+@@ -544,6 +548,7 @@
+     guint16_get(b, &m->login_type);
+     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
+ 
+     PUT_MEMBER(place, m);
+   }
+
diff -r c2db512d2a5c -r b62ccf3a75ba Dependencies/phases/build_dependencies.sh
--- a/Dependencies/phases/build_dependencies.sh	Wed Sep 05 11:27:21 2012 +0100
+++ b/Dependencies/phases/build_dependencies.sh	Thu Sep 06 00:18:31 2012 +0200
@@ -142,6 +142,10 @@
 	
 	# The provided libtool ignores our Universal Binary-makin' flags
 	fwdpatch "$ROOTDIR/patches/Meanwhile-ltmain.sh.diff" -p0 || true
+
+	# 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
 	
 	if needsconfigure $@; then
 	(
@@ -175,6 +179,7 @@
 	revpatch "$ROOTDIR/patches/Meanwhile-st_list.c.diff" -p0
 	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
 	
 	quiet popd
 }
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.h
--- a/Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.h	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.h	Thu Sep 06 00:18:31 2012 +0200
@@ -18,6 +18,4 @@
 
 - (NSString *)applicationVersion;
 
-- (BOOL)isOnLionOrNewer;
-
 @end
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIApplicationAdditions.m	Thu Sep 06 00:18:31 2012 +0200
@@ -29,9 +29,4 @@
 	return [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];
 }
 
-- (BOOL)isOnLionOrNewer
-{
-	return (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6);
-}
-
 @end
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIBundleAdditions.h
--- a/Frameworks/AIUtilities Framework/Source/AIBundleAdditions.h	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIBundleAdditions.h	Thu Sep 06 00:18:31 2012 +0200
@@ -18,6 +18,5 @@
 
 - (NSString *)name;
 - (NSSet *)supportedDocumentExtensions;
-- (NSImage *)AI_imageForResource:(NSString *)resource;
 
 @end
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIBundleAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIBundleAdditions.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIBundleAdditions.m	Thu Sep 06 00:18:31 2012 +0200
@@ -17,12 +17,6 @@
 #import "AIBundleAdditions.h"
 #import "AIApplicationAdditions.h"
 
- at interface NSBundle (LionCompatibility)
-
-- (NSImage *)imageForResource:(NSString *)name;
-
- at end
-
 @implementation NSBundle (AIBundleAdditions)
 
 - (NSString *)name
@@ -61,17 +55,4 @@
 	return supportedDocumentTypes;
 }
 
-
-
-- (NSImage *)AI_imageForResource:(NSString *)resource
-{
-	if ([NSApp isOnLionOrNewer]) {
-		resource = [resource stringByDeletingPathExtension];
-		
-		return [self imageForResource:resource];
-	} else {
-		return [[[NSImage alloc] initByReferencingFile:[self pathForImageResource:resource]] autorelease];
-	}
-}
-
 @end
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIColorAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIColorAdditions.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIColorAdditions.m	Thu Sep 06 00:18:31 2012 +0200
@@ -72,76 +72,76 @@
 	//the rgb.txt file that comes with Mac OS X 10.3.8 contains 752 entries.
 	//we create 3 autoreleased objects for each one.
 	//best to not pollute our caller's autorelease pool.
-	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-	
-	NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
-	
-	for (unsigned i = 0; i < length; ++i) {
-		if (state.inComment) {
-			if (ch[i] == '\n') state.inComment = NO;
-		} else if (ch[i] == '\n') {
-			if (state.prevChar != '\n') { //ignore blank lines
-				if (	! ((state.redStart   != NULL)
-					   && (state.greenStart != NULL)
-					   && (state.blueStart  != NULL)
-					   && (state.nameStart  != NULL)))
-				{
+	@autoreleasepool {
+		
+		NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+		
+		for (unsigned i = 0; i < length; ++i) {
+			if (state.inComment) {
+				if (ch[i] == '\n') state.inComment = NO;
+			} else if (ch[i] == '\n') {
+				if (state.prevChar != '\n') { //ignore blank lines
+					if (	! ((state.redStart   != NULL)
+							   && (state.greenStart != NULL)
+							   && (state.blueStart  != NULL)
+							   && (state.nameStart  != NULL)))
+					{
 #if COLOR_DEBUG
-					NSLog(@"Parse error reading rgb.txt file: a non-comment line was encountered that did not have all four of red (%p), green (%p), blue (%p), and name (%p) - index is %u",
-						  state.redStart,
-						  state.greenStart,
-						  state.blueStart,
-						  state.nameStart, i);
+						NSLog(@"Parse error reading rgb.txt file: a non-comment line was encountered that did not have all four of red (%p), green (%p), blue (%p), and name (%p) - index is %u",
+							  state.redStart,
+							  state.greenStart,
+							  state.blueStart,
+							  state.nameStart, i);
 #endif
-					goto end;
-				}
-				
-				NSRange range = {
-					.location = state.nameStart - ch,
-					.length   = (&ch[i]) - state.nameStart,
-				};
-				NSString *name = [NSString stringWithData:[data subdataWithRange:range] encoding:NSUTF8StringEncoding];
-				NSColor *color = [NSColor colorWithCalibratedRed:state.red
-														   green:state.green
-															blue:state.blue
-														   alpha:1.0f];
-				[mutableDict setObject:color forKey:name];
-				NSString *lowercaseName = [name lowercaseString];
-				if (![mutableDict objectForKey:lowercaseName]) {
-					//only add the lowercase version if it isn't already defined
-					[mutableDict setObject:color forKey:lowercaseName];
-				}
-
-				state.redStart = state.greenStart = state.blueStart = state.nameStart = 
-				state.redEnd   = state.greenEnd   = state.blueEnd   = NULL;
-			} //if (prevChar != '\n')
-		} else if ((ch[i] != ' ') && (ch[i] != '\t')) {
-			if (state.prevChar == '\n' && ch[i] == '#') {
-				state.inComment = YES;
-			} else {
-				if (!state.redStart) {
-					state.redStart = &ch[i];
-					state.red = (float)(strtod(state.redStart, (char **)&state.redEnd) / 255.0f);
-				} else if ((!state.greenStart) && state.redEnd && (&ch[i] >= state.redEnd)) {
-					state.greenStart = &ch[i];
-					state.green = (float)(strtod(state.greenStart, (char **)&state.greenEnd) / 255.0f);
-				} else if ((!state.blueStart) && state.greenEnd && (&ch[i] >= state.greenEnd)) {
-					state.blueStart = &ch[i];
-					state.blue = (float)(strtod(state.blueStart, (char **)&state.blueEnd) / 255.0f);
-				} else if ((!state.nameStart) && state.blueEnd && (&ch[i] >= state.blueEnd)) {
-					state.nameStart  = &ch[i];
+						goto end;
+					}
+					
+					NSRange range = {
+						.location = state.nameStart - ch,
+						.length   = (&ch[i]) - state.nameStart,
+					};
+					NSString *name = [NSString stringWithData:[data subdataWithRange:range] encoding:NSUTF8StringEncoding];
+					NSColor *color = [NSColor colorWithCalibratedRed:state.red
+															   green:state.green
+																blue:state.blue
+															   alpha:1.0f];
+					[mutableDict setObject:color forKey:name];
+					NSString *lowercaseName = [name lowercaseString];
+					if (![mutableDict objectForKey:lowercaseName]) {
+						//only add the lowercase version if it isn't already defined
+						[mutableDict setObject:color forKey:lowercaseName];
+					}
+					
+					state.redStart = state.greenStart = state.blueStart = state.nameStart =
+					state.redEnd   = state.greenEnd   = state.blueEnd   = NULL;
+				} //if (prevChar != '\n')
+			} else if ((ch[i] != ' ') && (ch[i] != '\t')) {
+				if (state.prevChar == '\n' && ch[i] == '#') {
+					state.inComment = YES;
+				} else {
+					if (!state.redStart) {
+						state.redStart = &ch[i];
+						state.red = (float)(strtod(state.redStart, (char **)&state.redEnd) / 255.0f);
+					} else if ((!state.greenStart) && state.redEnd && (&ch[i] >= state.redEnd)) {
+						state.greenStart = &ch[i];
+						state.green = (float)(strtod(state.greenStart, (char **)&state.greenEnd) / 255.0f);
+					} else if ((!state.blueStart) && state.greenEnd && (&ch[i] >= state.greenEnd)) {
+						state.blueStart = &ch[i];
+						state.blue = (float)(strtod(state.blueStart, (char **)&state.blueEnd) / 255.0f);
+					} else if ((!state.nameStart) && state.blueEnd && (&ch[i] >= state.blueEnd)) {
+						state.nameStart  = &ch[i];
+					}
 				}
 			}
-		}
-		state.prevChar = ch[i];
-	} //for (unsigned i = 0; i < length; ++i)
+			state.prevChar = ch[i];
+		} //for (unsigned i = 0; i < length; ++i)
+		
+		//why not use -copy? because this is subclass-friendly.
+		//you can call this method on NSMutableDictionary and get a mutable dictionary back.
+		result = [[self alloc] initWithDictionary:mutableDict];
+	}
 	
-	//why not use -copy? because this is subclass-friendly.
-	//you can call this method on NSMutableDictionary and get a mutable dictionary back.
-	result = [[self alloc] initWithDictionary:mutableDict];
 end:
-	[pool release];
-
 	return [result autorelease];
 }
 
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIImageAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIImageAdditions.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIImageAdditions.m	Thu Sep 06 00:18:31 2012 +0200
@@ -32,7 +32,7 @@
     // Get the bundle
     ownerBundle = [NSBundle bundleForClass:inClass];
 	
-    return [ownerBundle AI_imageForResource:name];
+    return [ownerBundle imageForResource:name];
 }
 
 // Returns an image from the owners bundle with the specified name
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m	Thu Sep 06 00:18:31 2012 +0200
@@ -18,12 +18,6 @@
 #import "AIImageAdditions.h"
 #import "AIBezierPathAdditions.h"
 
- at interface NSScreen (LionCompatibility)
-
-- (CGFloat)backingScaleFactor;
-
- at end
-
 @implementation NSImage (AIImageDrawingAdditions)
 
 
diff -r c2db512d2a5c -r b62ccf3a75ba Frameworks/AIUtilities Framework/Source/AIKeychain.m
--- a/Frameworks/AIUtilities Framework/Source/AIKeychain.m	Wed Sep 05 11:27:21 2012 +0100
+++ b/Frameworks/AIUtilities Framework/Source/AIKeychain.m	Thu Sep 06 00:18:31 2012 +0200
@@ -99,30 +99,29 @@
 
 + (BOOL)unlockDefaultKeychainWithPassword:(NSString *)password error:(out NSError **)outError
 {
-	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
-	NSData *data = [password dataUsingEncoding:NSUTF8StringEncoding];
-	NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
-	OSStatus err = SecKeychainUnlock(/* keychain */ NULL, (UInt32)[data length], [data bytes], /* usePassword */ true);
-
-	[pool release];
-
-	if (outError) {
-		NSError *error = nil;
+	@autoreleasepool {
 		
-		if (err != noErr) {
-			NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
-				[NSValue valueWithPointer:SecKeychainUnlock], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
-				@"SecKeychainUnlock", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
-				AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
-				nil];
-			error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+		NSData *data = [password dataUsingEncoding:NSUTF8StringEncoding];
+		NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
+		OSStatus err = SecKeychainUnlock(/* keychain */ NULL, (UInt32)[data length], [data bytes], /* usePassword */ true);
+		
+		if (outError) {
+			NSError *error = nil;
+			
+			if (err != noErr) {
+				NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
+										  [NSValue valueWithPointer:SecKeychainUnlock], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
+										  @"SecKeychainUnlock", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
+										  AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
+										  nil];
+				error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+			}
+			
+			*outError = error;
 		}
 		
-		*outError = error;
+		return (err == noErr);
 	}
-
-	return (err == noErr);
 }
 
 + (BOOL)allowsUserInteraction_error:(out NSError **)outError
@@ -337,39 +336,38 @@
 		/* We create our own copy of the string (if any) using NSString to ensure that the NSData that we create is an NSData.
 		 * We create our own pool to ensure that both objects are released ASAP.
 		 */
-		NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
-		void     *passwordBytes  = NULL;
-		u_int32_t passwordLength = 0;
-
-		if (password) {
-			NSData  *data = [password dataUsingEncoding:NSUTF8StringEncoding];
-			passwordBytes      = (void *)[data bytes];
-			NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
-			passwordLength     = (UInt32)[data length];
-		}
-
-		OSStatus err = SecKeychainCreate([path fileSystemRepresentation], passwordLength, passwordBytes, prompt, initialAccess, &keychainRef);
-
-		[pool release];
-
-		if (outError) {
-			NSError *error = nil;
+		@autoreleasepool {
+			
+			void     *passwordBytes  = NULL;
+			u_int32_t passwordLength = 0;
+			
+			if (password) {
+				NSData  *data = [password dataUsingEncoding:NSUTF8StringEncoding];
+				passwordBytes      = (void *)[data bytes];
+				NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
+				passwordLength     = (UInt32)[data length];
+			}
+			
+			OSStatus err = SecKeychainCreate([path fileSystemRepresentation], passwordLength, passwordBytes, prompt, initialAccess, &keychainRef);
+			
+			if (outError) {
+				NSError *error = nil;
+				if (err != noErr) {
+					NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
+											  [NSValue valueWithPointer:SecKeychainCreate], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
+											  @"SecKeychainCreate", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
+											  AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
+											  nil];
+					error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+				}
+				
+				*outError = error;
+			}
+			
 			if (err != noErr) {
-				NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
-					[NSValue valueWithPointer:SecKeychainCreate], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
-					@"SecKeychainCreate", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
-					AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
-					nil];
-				error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+				[self release];
+				self = nil;
 			}
-
-			*outError = error;
-		}
-
-		if (err != noErr) {
-			[self release];
-			self = nil;
 		}
 
 	}
@@ -585,33 +583,32 @@
 
 - (BOOL)unlockKeychainWithPassword:(NSString *)password error:(out NSError **)outError
 {
-	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
-	NSData *data = [password dataUsingEncoding:NSUTF8StringEncoding];
-	
-	// If keychainRef is NULL, the default keychain will unlocked
-	NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
-	OSStatus err = SecKeychainUnlock(keychainRef, (UInt32)[data length], [data bytes], /* usePassword */ true);
-
-	[pool release];
-
-	if (outError) {
-		NSError *error = nil;
+	@autoreleasepool {
 		
-		if (err != noErr) {
-			NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
-				[NSValue valueWithPointer:SecKeychainUnlock], AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTION,
-				@"SecKeychainUnlock", AIKEYCHAIN_ERROR_USERINFO_SECURITYFUNCTIONNAME,
-				AI_LOCALIZED_SECURITY_ERROR_DESCRIPTION(err), AIKEYCHAIN_ERROR_USERINFO_ERRORDESCRIPTION,
-				[NSValue valueWithPointer:keychainRef], AIKEYCHAIN_ERROR_USERINFO_KEYCHAIN,
-				nil];
-			error = [NSError errorWithDomain:AIKEYCHAIN_ERROR_DOMAIN code:err userInfo:userInfo];
+		NSData *data = [password dataUsingEncoding:NSUTF8StringEncoding];
+		
+		// If keychainRef is NULL, the default keychain will unlocked
+		NSAssert( UINT_MAX >= [data length], @"Attempting to send more data than Keychain can handle.  Abort." );
+		OSStatus err = SecKeychainUnlock(keychainRef, (UInt32)[data length], [data bytes], /* usePassword */ true);
+		




More information about the commits mailing list