Index: trunk/launch/launch/README
===================================================================
--- trunk/launch/launch/README	(revision 138)
+++ trunk/launch/launch/README	(revision 146)
@@ -1,4 +1,4 @@
-launch 1.0b3 [xx April 2003]
-============
+launch 1.0 [23 October 2003]
+==========
 
 A command-line launcher for Mac OS X in the spirit of open(1).
@@ -14,5 +14,5 @@
 or by path, launching TextEdit, or opening a number of applications,
 documents, folders, or URLs.  With the exception of special support for
-TextEdit, 'launch' does all this and:
+TextEdit (open -a), 'launch' does all this and:
 
 - opens URLs, directly or in your preferred helper application (-l)
@@ -27,5 +27,5 @@
 - launches Carbon applications in Classic
 - displays file information including type, creator, bundle ID,
-  data and resource fork sizes, and dates
+  data and resource fork sizes, dates and version
 - reports errors intelligibly
 - and much more!
@@ -49,19 +49,20 @@
 modify the install line as appropriate.
 
-% sudo /usr/bin/install -d /usr/local/bin
+% sudo /usr/bin/install -d /usr/local/bin /usr/local/man/man1
 % sudo /usr/bin/install -c build/launch /usr/local/bin
+% sudo /usr/bin/install -c launch.1 /usr/local/man/man1
 % rehash
 
 Uninstallation:
 
-% sudo rm -f /usr/local/bin/launch
+% sudo rm -f /usr/local/bin/launch /usr/local/man/man1/appswitch.1
 
 COMPILATION
 -----------
 
-A Project Builder project, 'launch.pbproj', is included.  A
+An Xcode/Project Builder project, 'launch.pbproj', is included.  A
 precompiled binary is also provided.  'launch' was developed and
-tested under Mac OS 10.2.3 with the December 2002 Developer Tools,
-and does not require any additional software to build.
+tested under Mac OS 10.3 with the October 2003 Developer Tools, and
+does not require any additional software to build.
 
 USAGE
@@ -82,5 +83,5 @@
 
 % launch -i org.mozilla.navigator http://www.apple.com/
-[Chimera Navigator opens Apple's Web site]
+[Camino opens Apple's Web site]
 
 % launch -l launchsw@sabi.net
@@ -91,7 +92,21 @@
         type: 'APPL'    creator: 'prvw'
         bundle ID: com.apple.Preview
+        version: 2.1.0
         kind: Application
-        contents: 2 items
+        contents: 1 item
 [...]
+
+A scripting example: a zsh function which provides an OS X wrapper
+around emacsclient and the Carbon build of GNU Emacs, using launch and
+appswitch (another one of my command-line tools).
+
+    e() {
+      ( emacsclient -n $@ >&/dev/null && \
+	appswitch -a Emacs ) || \
+      ( launch -ba Emacs && \
+  	until { emacsclient -n $@ >&/dev/null } do sleep 1; done;
+        appswitch -a Emacs )
+      export EDITOR=emacsclient
+    }
 
 FREQUENTLY ASKED QUESTIONS
@@ -108,4 +123,5 @@
         type: 'APPL'    creator: 'OWEB'
         bundle ID: com.omnigroup.OmniWeb
+        version: 4.5
         kind: Application
 
@@ -119,8 +135,9 @@
 A. Your application does not support stationery.  Applications which
 support stationery respond to it by creating a new untitled document
-with the contents of the stationery.  Most (all?) Cocoa applications,
-such as TextEdit, do not support stationery.  If you're looking for
-a text editor which supports stationery, try BBEdit, Tex-Edit Plus,
-the CodeWarrior IDE, or almost any other Carbon editor.
+with the contents of the stationery.  Most Cocoa applications, such as
+TextEdit, do not support stationery.  (Omni Group applications are a
+notable exception.)  If you're looking for a text editor which
+supports stationery, try BBEdit, Tex-Edit Plus, the CodeWarrior IDE,
+or almost any other Carbon editor.
 
 For the curious: launch processes input by simultaneously reading it
@@ -146,5 +163,8 @@
 /Volumes/GrayApps/Utilities/Resorcerer 2.4/Resorcerer: scriptable Mac OS X application [Carbon, prefers native OS X]
         type: 'APPL'    creator: 'Doug'
+        bundle ID: com.mathemaesthetics.resorcerer
+        version: 2.4 [0x2418010 = 37847056]
         kind: Application
+[...]
 
 
@@ -162,12 +182,4 @@
 using the creator instead of the bundle ID as a workaround (-c instead
 of -i).
-
-
-Q. Why does launch display '[can't access CFBundle for application]'
-in place of the bundle identifiers of non-packaged applications?
-
-A. This is a CFBundle bug which remains as of Mac OS X 10.2.3.  If
-this matters to you, please ask Apple to fix it, or implement a
-workaround in launch by parsing the 'plst' id 0 resource directly.
 
 
@@ -225,8 +237,17 @@
 ---------------
 
-1.0b3 - xx April 2003
+1.0 - 23 October 2003
  - work around CFBundle bug to report bundle identifiers and versions
    from resource forks of unpackaged Carbon applications and Classic
    applications [Lloyd Dupont]
+ - added descriptions for more error codes and clarified error
+   reporting
+ - output all errors to stderr
+ - provide better errors for -X option
+ - restored -m: OS X bug is fixed in Panther
+ - fixed a couple of tiny memory leaks
+ - added man page [Hisashi T Fujinaka]
+ - work around bug in LSOpenFromURLSpec opening multiple items in
+   Mac OS X 10.3
 1.0b2 - 9 March 2003
  - fixed install instructions to create /usr/local/bin if needed
Index: trunk/launch/launch/VERSION
===================================================================
--- trunk/launch/launch/VERSION	(revision 138)
+++ trunk/launch/launch/VERSION	(revision 146)
@@ -1,1 +1,1 @@
-1.0b3
+1.0
Index: trunk/launch/launch/launch.1
===================================================================
--- trunk/launch/launch/launch.1	(revision 146)
+++ trunk/launch/launch/launch.1	(revision 146)
@@ -0,0 +1,132 @@
+.Dd Wed Oct 22 2003      \" DATE 
+.Dt LAUNCH 1 LOCAL	 \" Program name and manual section number 
+.Os launch 1.0
+.Sh NAME
+.Nm launch
+.Nd find, open, print, or get information about files, folders, disks and URLs
+.Sh SYNOPSIS
+.Nm launch
+.Op Fl npswbmhCX         \" [-npswbmhCX]
+.Op Fl c Ar creator      \" [-c creator]
+.Op Fl i Ar bundleID     \" [-i bundleID]
+.Op Fl u Ar URL          \" [-u URL]
+.Op Fl a Ar name         \" [-a name]
+.Op Ar item ...          \" [item ...]
+.Op Ar -                 \" [-]
+.Nm 
+.Op Fl npflswbmhCX
+.Ar item ...
+.Sh DESCRIPTION
+The
+.Nm
+command is a replacement for Mac OS X's
+.Xr open 1
+command and opens a file (or a folder/directory or URL), as if you had
+double-clicked its icon in the Finder. If no application is specified,
+the default application determined by LaunchServices is used to open
+items.
+.Pp
+.Nm
+invoked with a file or URL argument will open the URL directly or in
+your preferred helper application. Applications can be specified by
+their four-character creators (e.g. 'ToyS') or Java-style bundle ID
+(e.g. com.apple.scripteditor).
+.Pp
+.Nm
+can ask applications to print documents, a feature the OS X Finder is
+still missing.  It can open applications in the background; can open
+multiple copies of applications; can open Carbon applications in
+Classic, or prevent Classic from starting; and can show information
+about any item on disk, including file type, creator, data and
+resource fork sizes, dates, and bundle ID.
+.Pp
+The options to
+.Nm
+are divided in three sections according to purpose. You can give
+.Nm
+a reference to an application in many ways, using the matching
+options. Once
+.Nm
+has identified one or more items, the action options indicate what to
+do with these items. Finally, if the action involves launching an
+application, the launch options allow further customization.
+.Ss Matching options
+.Bl -tag -width -indent
+.It Fl c Ar creator
+Match by creator (a four-character code, also known as a signature).
+.It Fl i Ar bundleID
+Match by bundle identifier, usually consisting of the reversed dot
+(.)-separated components of the application developer's Internet domain
+name, followed by the application name.  For example, the Finder's
+bundle identifier is
+.Ar com.apple.Finder .
+Bundle identifiers are not case-sensitive.
+.It Fl u Ar URL
+Match application at
+.Ar URL
+(which must be a file:// URL).
+.El
+.Pp
+In addition to the above, you can specify applications, documents,
+folders, disks and URLs as item arguments.
+.Ss Action options
+.Bl -tag -width -indent
+.It Fl n
+Print matching paths/URLs instead of opening them.
+.It Fl p
+Ask application(s) to print document(s).
+.It Fl f
+Display information about item(s).
+.It Fl l
+Launch URLs, treating "http://" URLs as Web sites instead of WebDAV
+resources.
+.El
+.Ss Launch options
+.Bl -tag -width -indent
+.It Fl s
+Launch target(s) as superuser, authenticating if needed.
+.It Fl w
+Wait for application to finish opening before exiting.
+.It Fl b
+Launch application in the background.
+.It Fl m
+Launch application again, even if already running.
+.It Fl h
+Hide application after it finishes opening.
+.It Fl C
+Force CFM/PEF Carbon application to open in Classic.
+.It Fl X
+Don't start the Classic environment for this Classic application if
+Classic isn't running.
+.El
+.Sh SEE ALSO 
+.\" List links in ascending order by section, alphabetically within a section.
+.\" Please do not reference files that do not exist without filing a bug report
+.Xr appswitch 1 ,
+.Xr GetFileInfo 1 ,
+.Xr open 1
+.Sh BUGS              \" Document known, unremedied bugs
+Launching may be very slow on Mac OS X 10.2.8 and earlier; this is an
+acknowledged Mac OS X bug with no known workaround, and may affect
+Apple's
+.Xr open 1
+command as well in certain cases.  It is fixed in Mac OS X 10.3.
+.Pp
+The
+.Fl m
+option may not work well (or at all) before Mac OS X 10.3 because of
+Mac OS X bugs.
+.Pp
+The
+.Fl h
+option requires the
+.Fl b
+option to be used as well, or Cocoa applications will not hide on
+startup.  This is a Mac OS X bug which is still unfixed as of Mac OS X
+10.3.
+.Sh AUTHOR
+.An "Nicholas Riley" Aq launchsw@sabi.net
+.Pp
+This page written in part by
+.An "Hisashi T Fujinaka" Aq htodd@twofifty.com .
+.\" .Sh HISTORY           \" Document history if command behaves in a unique manner 
Index: trunk/launch/launch/launch.pbproj/nicholas.pbxuser
===================================================================
--- trunk/launch/launch/launch.pbproj/nicholas.pbxuser	(revision 138)
+++ trunk/launch/launch/launch.pbproj/nicholas.pbxuser	(revision 146)
@@ -9,469 +9,301 @@
 		);
 		breakpoints = (
-			F5F4D74101B55E0801AEEDB1,
-			E190CFFD03AAA8A300AEFBE0,
-		);
+			E14C949A052A8B0600142529,
+		);
+		codeSenseManager = E14C945F052A896100142529;
 		executables = (
 			F561F49E0139D79101AEEDB1,
 		);
 		perUserDictionary = {
-			PBXPerProjectTemplateStateSaveDate = 71736398;
+			PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = -1;
+				PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					353.8799,
+					199.2085,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXErrorsWarningsDataSource_TypeID,
+					PBXErrorsWarningsDataSource_MessageID,
+					PBXErrorsWarningsDataSource_LocationID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					22,
+					407.7974,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXExecutablesDataSource_ActiveFlagID,
+					PBXExecutablesDataSource_NameID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = -1;
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					341,
+					20,
+					65,
+					43,
+					43,
+					20,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFileDataSource_FiletypeID,
+					PBXFileDataSource_Filename_ColumnID,
+					PBXFileDataSource_Built_ColumnID,
+					PBXFileDataSource_ObjectSize_ColumnID,
+					PBXFileDataSource_Errors_ColumnID,
+					PBXFileDataSource_Warnings_ColumnID,
+					PBXFileDataSource_Target_ColumnID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					284.2974,
+					287.2085,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFindDataSource_MessageID,
+					PBXFindDataSource_LocationID,
+				);
+			};
+			PBXPerProjectTemplateStateSaveDate = 88634057;
 			PBXWorkspaceContents = (
 				{
-					LeftSlideOut = {
-						Split0 = {
+					PBXProjectWorkspaceModule_StateKey_Rev36 = {
+						PBXProjectWorkspaceModule_EditorOpen = true;
+						PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = {
 							Split0 = {
-								NavContent0 = {
-									bookmark = E17A87E30446BD4A00050002;
-									history = (
-										E190CFFE03AAD96100AEFBE0,
-										E190CFFF03AAD96100AEFBE0,
-										E190D00203AAD96100AEFBE0,
-										E190D01403ABB17800AEFBE0,
-										E190D01503ABB17800AEFBE0,
-										E190D01603ABB17800AEFBE0,
-										E190D01703ABB17800AEFBE0,
-										E190D01803ABB17800AEFBE0,
-										E190D01903ABB17800AEFBE0,
-										E190D01A03ABB17800AEFBE0,
-										E190D01B03ABB17800AEFBE0,
-										E190D01C03ABB17800AEFBE0,
-										E190D01D03ABB17800AEFBE0,
-										E190D01E03ABB17800AEFBE0,
-										E190D02303ABB17800AEFBE0,
-										E17A87CF0446BD4A00050002,
-										E17A87D00446BD4A00050002,
-										E17A87D10446BD4A00050002,
-										E17A87D20446BD4A00050002,
-										E17A87D30446BD4A00050002,
-										E17A87D40446BD4A00050002,
-										E17A87D50446BD4A00050002,
-										E17A87D60446BD4A00050002,
-										E17A87D70446BD4A00050002,
-										E17A87D80446BD4A00050002,
-										E17A87D90446BD4A00050002,
-										E17A87DA0446BD4A00050002,
-										E17A87DB0446BD4A00050002,
-										E17A87DC0446BD4A00050002,
-										E17A87DD0446BD4A00050002,
-										E17A87DE0446BD4A00050002,
-									);
-									prevStack = (
-										E190D00403AAD96100AEFBE0,
-										E190D00503AAD96100AEFBE0,
-										E190D00603AAD96100AEFBE0,
-										E190D00703AAD96100AEFBE0,
-										E190D00803AAD96100AEFBE0,
-										E190D00903AAD96100AEFBE0,
-										E190D02603ABB17800AEFBE0,
-										E190D02803ABB17800AEFBE0,
-										E190D02903ABB17800AEFBE0,
-										E190D02B03ABB17800AEFBE0,
-										E16C83C603F7980800050002,
-										E18D1CC8040C2AFC00050002,
-										E18D1CC9040C2AFC00050002,
-										E17A87DF0446BD4A00050002,
-										E17A87E00446BD4A00050002,
-										E17A87E10446BD4A00050002,
-										E17A87E20446BD4A00050002,
-									);
-								};
-								NavCount = 1;
-								NavGeometry0 = {
-									Frame = "{{0, 0}, {683, 704}}";
-									NavBarVisible = YES;
-								};
-								NavSplitVertical = NO;
+								bookmark = E1A087D20548746200594651;
+								history = (
+									E1375C530530898300FE8BF8,
+									E103506B05355596002A18D1,
+									E11E9B8E0544EE7900045D4F,
+									E11E9B8F0544EE7900045D4F,
+									E1A087BB0548731500594651,
+									E1A087CE0548746200594651,
+									E1A087CF0548746200594651,
+									E1A087D00548746200594651,
+								);
+								nextStack = (
+									E1A087D10548746200594651,
+								);
+								prevStack = (
+									E1375C560530898300FE8BF8,
+									E103506C05355596002A18D1,
+								);
 							};
 							SplitCount = 1;
-							Tab1 = {
-								Debugger = {
-									Split0 = {
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									TabCount = 2;
-								};
-								LauncherConfigVersion = 7;
-							};
-							Tab2 = {
-								LauncherConfigVersion = 3;
-								Runner = {
-								};
-							};
-							TabCount = 5;
 						};
-						SplitCount = 1;
-						Tab1 = {
-							OptionsSetName = "Hierarchy, all classes";
+						PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {595, 0}}";
+						PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 0}, {595, 671}}";
+						PBXProjectWorkspaceModule_OldSuperviewFrame = "{{180, 0}, {595, 671}}";
+						PBXProjectWorkspaceModule_RunWindowVisible = true;
+						PBXProjectWorkspaceModule_SGTM = {
+							PBXBottomSmartGroupGIDs = (
+								1C37FBAC04509CD000000102,
+								1C37FAAC04509CD000000102,
+								1C08E77C0454961000C914BD,
+								1CC0EA4004350EF90044410B,
+								1CC0EA4004350EF90041110B,
+								1C37FABC05509CD000000102,
+								1C37FABC05539CD112110102,
+								1C37FABC04509CD000100104,
+							);
+							PBXTopSmartGroupGIDs = (
+							);
 						};
-						TabCount = 5;
 					};
 				},
 				{
-					LeftSlideOut = {
-						Split0 = {
+					PBXProjectWorkspaceModule_StateKey_Rev36 = {
+						PBXProjectWorkspaceModule_EditorOpen = true;
+						PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = {
 							Split0 = {
-								NavContent0 = {
-									bookmark = E17A87E50446BD4A00050002;
-									history = (
-										E17A87E40446BD4A00050002,
-									);
-								};
-								NavCount = 1;
-								NavGeometry0 = {
-									Frame = "{{0, 0}, {685, 150}}";
-									NavBarVisible = YES;
-								};
-								NavSplitVertical = NO;
+								bookmark = E1A087D40548746200594651;
+								history = (
+									E1A087D30548746200594651,
+								);
 							};
 							SplitCount = 1;
-							Tab1 = {
-								Debugger = {
-									Split0 = {
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									TabCount = 2;
-								};
-								LauncherConfigVersion = 7;
-							};
-							Tab2 = {
-								LauncherConfigVersion = 3;
-								Runner = {
-								};
-							};
-							TabCount = 5;
 						};
-						SplitCount = 1;
-						Tab1 = {
-							OptionsSetName = "Hierarchy, all classes";
+						PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {600, 115}}";
+						PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 115}, {600, 186}}";
+						PBXProjectWorkspaceModule_OldSuperviewFrame = "{{0, 0}, {600, 301}}";
+						PBXProjectWorkspaceModule_SGTM = {
+							PBXBottomSmartGroupGIDs = (
+							);
+							PBXTopSmartGroupGIDs = (
+							);
 						};
-						TabCount = 5;
 					};
 				},
 			);
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXBuildResultsModule" = {
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXDebugBreakpointsModule" = {
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXDebugCLIModule" = {
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXDebugSessionModule" = {
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXDebugSingleDataValueViewModule" = {
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXNavigatorGroup" = {
+				Split0 = {
+					bookmark = E1A087CB0548731E00594651;
+					history = (
+						E1A087CA0548731E00594651,
+					);
+				};
+				SplitCount = 1;
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXProjectWorkspaceModule" = {
+				PBXProjectWorkspaceModule_StateKey_Rev36 = {
+					PBXProjectWorkspaceModule_EditorOpen = true;
+					PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = {
+						Split0 = {
+							bookmark = E1A087C60548731900594651;
+							history = (
+								E1A087C40548731800594651,
+							);
+						};
+						SplitCount = 1;
+					};
+					PBXProjectWorkspaceModule_OldDetailFrame = "{{0, 0}, {600, 115}}";
+					PBXProjectWorkspaceModule_OldEditorFrame = "{{0, 115}, {600, 186}}";
+					PBXProjectWorkspaceModule_OldSuperviewFrame = "{{0, 0}, {600, 301}}";
+					PBXProjectWorkspaceModule_SGTM = {
+						PBXBottomSmartGroupGIDs = (
+						);
+						PBXTopSmartGroupGIDs = (
+						);
+					};
+				};
+			};
+			"PBXWorkspaceContents:PBXConfiguration.PBXModule.PBXRunSessionModule" = {
+			};
 			PBXWorkspaceGeometries = (
 				{
-					ContentSize = "{967, 727}";
-					LeftSlideOut = {
-						ActiveTab = 0;
-						ActiveTabName = PBXGroupTreeModule;
-						Collapsed = NO;
-						Frame = "{{0, 23}, {967, 704}}";
-						Split0 = {
-							Collapsed = NO;
-							Frame = "{{284, 0}, {683, 704}}";
-							Split0 = {
-								Frame = "{{0, 0}, {683, 704}}";
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Frame = "{{0, 0}, {681, 289}}";
-							};
-							Tab1 = {
-								Debugger = {
-									Collapsed = NO;
-									Frame = "{{0, 0}, {681, 150}}";
-									Split0 = {
-										Frame = "{{0, 24}, {681, 126}}";
-										Split0 = {
-											Frame = "{{0, 0}, {333, 126}}";
-										};
-										Split1 = {
-											DebugVariablesTableConfiguration = (
-												Name,
-												123,
-												Value,
-												85,
-												Summary,
-												105.123,
-											);
-											Frame = "{{342, 0}, {339, 126}}";
-										};
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									Tab0 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									Tab1 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									TabCount = 2;
-									TabsVisible = YES;
-								};
-								Frame = "{{0, 0}, {681, 120}}";
-								LauncherConfigVersion = 7;
-							};
-							Tab2 = {
-								Frame = "{{0, 0}, {681, 234}}";
-								LauncherConfigVersion = 3;
-								Runner = {
-									Frame = "{{0, 0}, {681, 234}}";
-								};
-							};
-							Tab3 = {
-								BuildMessageFrame = "{{0, 0}, {683, 205}}";
-								BuildTranscriptFrame = "{{0, 214}, {683, 2}}";
-								BuildTranscriptFrameExpanded = YES;
-								Frame = "{{0, 0}, {681, 238}}";
-							};
-							Tab4 = {
-								Frame = "{{0, 0}, {612, 295}}";
-							};
-							TabCount = 5;
-							TabsVisible = NO;
-						};
-						SplitCount = 1;
-						Tab0 = {
-							Frame = "{{0, 0}, {260, 704}}";
-							GroupTreeTableConfiguration = (
-								TargetStatusColumn,
-								18,
-								MainColumn,
-								227,
+					Frame = "{{0, 0}, {775, 691}}";
+					PBXProjectWorkspaceModule_GeometryKey_Rev11 = {
+						PBXProjectWorkspaceModule_SGTM_Geometry = {
+							_collapsingFrameDimension = 182;
+							_indexOfCollapsedView = 0;
+							_percentageOfCollapsedView = 0.2363636;
+							sizes = (
+								"{{0, 0}, {180, 671}}",
+								"{{180, 0}, {595, 671}}",
 							);
 						};
-						Tab1 = {
-							ClassesFrame = "{{0, 0}, {250, 333}}";
-							ClassesTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXClassColumnIdentifier,
-								207,
-							);
-							Frame = "{{0, 0}, {248, 554}}";
-							MembersFrame = "{{0, 342}, {250, 212}}";
-							MembersTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXMethodColumnIdentifier,
-								206,
+					};
+					WindowFrame = "{{8, 70}, {775, 753}}";
+				},
+				{
+					Frame = "{{0, 0}, {600, 321}}";
+					PBXProjectWorkspaceModule_GeometryKey_Rev11 = {
+						GroupTreeCollapsed = yes;
+						PBXProjectWorkspaceModule_SGTM_Geometry = {
+							_collapsingFrameDimension = 182;
+							_indexOfCollapsedView = 0;
+							_percentageOfCollapsedView = 0.3033333;
+							sizes = (
+								"{{0, 0}, {600, 301}}",
 							);
 						};
-						Tab2 = {
-							Frame = "{{0, 0}, {216, 554}}";
-						};
-						Tab3 = {
-							Frame = "{{0, 0}, {239, 554}}";
-							TargetTableConfiguration = (
-								ActiveObject,
-								16,
-								ObjectNames,
-								206.296,
-							);
-						};
-						Tab4 = {
-							BreakpointsTreeTableConfiguration = (
-								breakpointColumn,
-								197,
-								enabledColumn,
-								31,
-							);
-							Frame = "{{0, 0}, {250, 554}}";
-						};
-						TabCount = 5;
-						TabsVisible = YES;
 					};
-					NavBarShownByDefault = YES;
-					StatusViewVisible = YES;
-					Template = 64ABBB4501FA494900185B06;
-					ToolbarVisible = YES;
-					WindowLocation = "{303, 43}";
-				},
-				{
-					ContentSize = "{685, 434}";
-					LeftSlideOut = {
-						Collapsed = NO;
-						Frame = "{{0, 23}, {685, 411}}";
-						Split0 = {
-							ActiveTab = 2;
-							ActiveTabName = PBXBuildResultsModule;
-							Collapsed = NO;
-							Frame = "{{0, 0}, {685, 411}}";
-							Split0 = {
-								Frame = "{{0, 301}, {685, 110}}";
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Frame = "{{0, 0}, {952, 321}}";
-							};
-							Tab1 = {
-								Debugger = {
-									Collapsed = NO;
-									Frame = "{{0, 0}, {781, 452}}";
-									Split0 = {
-										Frame = "{{0, 24}, {781, 428}}";
-										Split0 = {
-											Frame = "{{0, 0}, {383, 428}}";
-										};
-										Split1 = {
-											DebugVariablesTableConfiguration = (
-												Name,
-												123,
-												Value,
-												85,
-												Summary,
-												155.123,
-											);
-											Frame = "{{392, 0}, {389, 428}}";
-										};
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									Tab0 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									Tab1 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									TabCount = 2;
-									TabsVisible = YES;
-								};
-								Frame = "{{0, 0}, {781, 452}}";
-								LauncherConfigVersion = 7;
-							};
-							Tab2 = {
-								Frame = "{{0, 0}, {685, 215}}";
-								LauncherConfigVersion = 3;
-								Runner = {
-									Frame = "{{0, 0}, {685, 215}}";
-								};
-							};
-							Tab3 = {
-								BuildMessageFrame = "{{0, 0}, {687, 262}}";
-								BuildTranscriptFrame = "{{0, 271}, {687, 2}}";
-								BuildTranscriptFrameExpanded = YES;
-								Frame = "{{0, 0}, {685, 295}}";
-							};
-							Tab4 = {
-								Frame = "{{0, 0}, {612, 295}}";
-							};
-							TabCount = 5;
-							TabsVisible = NO;
-						};
-						SplitCount = 1;
-						Tab0 = {
-							Frame = "{{0, 0}, {300, 533}}";
-							GroupTreeTableConfiguration = (
-								TargetStatusColumn,
-								18,
-								MainColumn,
-								267,
-							);
-						};
-						Tab1 = {
-							ClassesFrame = "{{0, 0}, {280, 398}}";
-							ClassesTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXClassColumnIdentifier,
-								237,
-							);
-							Frame = "{{0, 0}, {278, 659}}";
-							MembersFrame = "{{0, 407}, {280, 252}}";
-							MembersTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXMethodColumnIdentifier,
-								236,
-							);
-						};
-						Tab2 = {
-							Frame = "{{0, 0}, {200, 100}}";
-						};
-						Tab3 = {
-							Frame = "{{0, 0}, {200, 100}}";
-							TargetTableConfiguration = (
-								ActiveObject,
-								16,
-								ObjectNames,
-								202.296,
-							);
-						};
-						Tab4 = {
-							BreakpointsTreeTableConfiguration = (
-								breakpointColumn,
-								197,
-								enabledColumn,
-								31,
-							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						TabCount = 5;
-						TabsVisible = NO;
-					};
-					NavBarShownByDefault = YES;
-					StatusViewVisible = YES;
-					Template = F5314676015831810DCA290F;
-					ToolbarVisible = YES;
-					WindowLocation = "{328, 75}";
+					WindowFrame = "{{523, 63}, {600, 383}}";
 				},
 			);
-			PBXWorkspaceStateSaveDate = 71736398;
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXBuildResultsModule" = {
+				Frame = "{{0, 0}, {480, 216}}";
+				WindowFrame = "{{790, 46}, {480, 294}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXDebugBreakpointsModule" = {
+				BreakpointsTreeTableConfiguration = (
+					enabledColumn,
+					16,
+					breakpointColumn,
+					141.583,
+				);
+				Frame = "{{0, 0}, {180, 158}}";
+				WindowFrame = "{{62, 4}, {180, 180}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXDebugCLIModule" = {
+				Frame = "{{0, 0}, {500, 278}}";
+				WindowFrame = "{{200, 200}, {500, 300}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXDebugSessionModule" = {
+				DebugConsoleDrawerSize = "{100, 120}";
+				DebugConsoleVisible = None;
+				DebugConsoleWindowFrame = "{{200, 200}, {500, 300}}";
+				DebugSTDIOWindowFrame = "{{200, 200}, {500, 300}}";
+				Frame = "{{0, 0}, {745, 442}}";
+				WindowFrame = "{{267, 311}, {745, 511}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXDebugSingleDataValueViewModule" = {
+				Frame = "{{0, 0}, {400, 66}}";
+				WindowFrame = "{{20, 632}, {400, 88}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXNavigatorGroup" = {
+				Frame = "{{0, 0}, {750, 480}}";
+				WindowFrame = "{{15, 325}, {750, 502}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXProjectWorkspaceModule" = {
+				Frame = "{{0, 0}, {600, 321}}";
+				PBXProjectWorkspaceModule_GeometryKey_Rev11 = {
+					GroupTreeCollapsed = yes;
+					PBXProjectWorkspaceModule_SGTM_Geometry = {
+						_collapsingFrameDimension = 182;
+						_indexOfCollapsedView = 0;
+						_percentageOfCollapsedView = 0.3033333;
+						sizes = (
+							"{{0, 0}, {600, 301}}",
+						);
+					};
+				};
+				WindowFrame = "{{523, 63}, {600, 383}}";
+			};
+			"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXRunSessionModule" = {
+				Frame = "{{0, 0}, {517, 227}}";
+				WindowFrame = "{{723, 149}, {517, 249}}";
+			};
+			PBXWorkspaceStateSaveDate = 88634057;
 		};
 		perUserProjectItems = {
-			E16C83C603F7980800050002 = E16C83C603F7980800050002;
-			E17A87CF0446BD4A00050002 = E17A87CF0446BD4A00050002;
-			E17A87D00446BD4A00050002 = E17A87D00446BD4A00050002;
-			E17A87D10446BD4A00050002 = E17A87D10446BD4A00050002;
-			E17A87D20446BD4A00050002 = E17A87D20446BD4A00050002;
-			E17A87D30446BD4A00050002 = E17A87D30446BD4A00050002;
-			E17A87D40446BD4A00050002 = E17A87D40446BD4A00050002;
-			E17A87D50446BD4A00050002 = E17A87D50446BD4A00050002;
-			E17A87D60446BD4A00050002 = E17A87D60446BD4A00050002;
-			E17A87D70446BD4A00050002 = E17A87D70446BD4A00050002;
-			E17A87D80446BD4A00050002 = E17A87D80446BD4A00050002;
-			E17A87D90446BD4A00050002 = E17A87D90446BD4A00050002;
-			E17A87DA0446BD4A00050002 = E17A87DA0446BD4A00050002;
-			E17A87DB0446BD4A00050002 = E17A87DB0446BD4A00050002;
-			E17A87DC0446BD4A00050002 = E17A87DC0446BD4A00050002;
-			E17A87DD0446BD4A00050002 = E17A87DD0446BD4A00050002;
-			E17A87DE0446BD4A00050002 = E17A87DE0446BD4A00050002;
-			E17A87DF0446BD4A00050002 = E17A87DF0446BD4A00050002;
-			E17A87E00446BD4A00050002 = E17A87E00446BD4A00050002;
-			E17A87E10446BD4A00050002 = E17A87E10446BD4A00050002;
-			E17A87E20446BD4A00050002 = E17A87E20446BD4A00050002;
-			E17A87E30446BD4A00050002 = E17A87E30446BD4A00050002;
-			E17A87E40446BD4A00050002 = E17A87E40446BD4A00050002;
-			E17A87E50446BD4A00050002 = E17A87E50446BD4A00050002;
-			E18D1CC8040C2AFC00050002 = E18D1CC8040C2AFC00050002;
-			E18D1CC9040C2AFC00050002 = E18D1CC9040C2AFC00050002;
-			E190CFFE03AAD96100AEFBE0 = E190CFFE03AAD96100AEFBE0;
-			E190CFFF03AAD96100AEFBE0 = E190CFFF03AAD96100AEFBE0;
-			E190D00203AAD96100AEFBE0 = E190D00203AAD96100AEFBE0;
-			E190D00403AAD96100AEFBE0 = E190D00403AAD96100AEFBE0;
-			E190D00503AAD96100AEFBE0 = E190D00503AAD96100AEFBE0;
-			E190D00603AAD96100AEFBE0 = E190D00603AAD96100AEFBE0;
-			E190D00703AAD96100AEFBE0 = E190D00703AAD96100AEFBE0;
-			E190D00803AAD96100AEFBE0 = E190D00803AAD96100AEFBE0;
-			E190D00903AAD96100AEFBE0 = E190D00903AAD96100AEFBE0;
-			E190D01403ABB17800AEFBE0 = E190D01403ABB17800AEFBE0;
-			E190D01503ABB17800AEFBE0 = E190D01503ABB17800AEFBE0;
-			E190D01603ABB17800AEFBE0 = E190D01603ABB17800AEFBE0;
-			E190D01703ABB17800AEFBE0 = E190D01703ABB17800AEFBE0;
-			E190D01803ABB17800AEFBE0 = E190D01803ABB17800AEFBE0;
-			E190D01903ABB17800AEFBE0 = E190D01903ABB17800AEFBE0;
-			E190D01A03ABB17800AEFBE0 = E190D01A03ABB17800AEFBE0;
-			E190D01B03ABB17800AEFBE0 = E190D01B03ABB17800AEFBE0;
-			E190D01C03ABB17800AEFBE0 = E190D01C03ABB17800AEFBE0;
-			E190D01D03ABB17800AEFBE0 = E190D01D03ABB17800AEFBE0;
-			E190D01E03ABB17800AEFBE0 = E190D01E03ABB17800AEFBE0;
-			E190D02303ABB17800AEFBE0 = E190D02303ABB17800AEFBE0;
-			E190D02603ABB17800AEFBE0 = E190D02603ABB17800AEFBE0;
-			E190D02803ABB17800AEFBE0 = E190D02803ABB17800AEFBE0;
-			E190D02903ABB17800AEFBE0 = E190D02903ABB17800AEFBE0;
-			E190D02B03ABB17800AEFBE0 = E190D02B03ABB17800AEFBE0;
-		};
-		projectwideBuildSettings = {
-		};
+			E103506B05355596002A18D1 = E103506B05355596002A18D1;
+			E103506C05355596002A18D1 = E103506C05355596002A18D1;
+			E11E9B8E0544EE7900045D4F = E11E9B8E0544EE7900045D4F;
+			E11E9B8F0544EE7900045D4F = E11E9B8F0544EE7900045D4F;
+			E1375C530530898300FE8BF8 = E1375C530530898300FE8BF8;
+			E1375C560530898300FE8BF8 = E1375C560530898300FE8BF8;
+			E1A087BB0548731500594651 = E1A087BB0548731500594651;
+			E1A087CE0548746200594651 = E1A087CE0548746200594651;
+			E1A087CF0548746200594651 = E1A087CF0548746200594651;
+			E1A087D00548746200594651 = E1A087D00548746200594651;
+			E1A087D10548746200594651 = E1A087D10548746200594651;
+			E1A087D20548746200594651 = E1A087D20548746200594651;
+			E1A087D30548746200594651 = E1A087D30548746200594651;
+			E1A087D40548746200594651 = E1A087D40548746200594651;
+		};
+		sourceControlManager = E14C945E052A896100142529;
 		userBookmarkGroup = E190CFF903AAA80600AEFBE0;
-		wantsIndex = 1;
-		wantsSCM = 0;
+		userBuildSettings = {
+		};
 	};
 	08FB7796FE84155DC02AAC07 = {
 		uiCtxt = {
-			sepNavWindowFrame = "{{15, 495}, {750, 502}}";
+			sepNavIntBoundsRect = "{{0, 0}, {559, 13579}}";
+			sepNavSelRange = "{33212, 0}";
+			sepNavVisRect = "{{0, 12355}, {559, 169}}";
+			sepNavWindowFrame = "{{265, 76}, {725, 703}}";
 		};
 	};
@@ -482,338 +314,150 @@
 		);
 	};
-	E16C83C603F7980800050002 = {
-		fRef = F5C0CA9501B5740C01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "README: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1585;
-		vrLoc = 0;
-	};
-	E17A87CF0446BD4A00050002 = {
-		fRef = E17A87E80446BD4A00050002;
-		glyphRangeLength = 375;
-		glyphRangeLocation = 1432;
-		isa = PBXDocBookmark;
-		name = "Miscellaneou17456789101112.html: FSRef newRef...";
-	};
-	E17A87D00446BD4A00050002 = {
-		fRef = E17A87EA0446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFURL.h: 282";
-		rLen = 58;
-		rLoc = 13157;
-		rType = 0;
-		vrLen = 1459;
-		vrLoc = 11853;
-	};
-	E17A87D10446BD4A00050002 = {
-		fRef = E17A87EB0446BD4A00050002;
-		glyphRangeLength = 2251;
-		glyphRangeLocation = 6098;
-		isa = PBXDocBookmark;
-		name = "Reading_Reso__Into_Memory.html: Handle GetRe...";
-	};
-	E17A87D20446BD4A00050002 = {
-		fRef = E17A87E90446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "Resources.h: 345";
-		rLen = 12;
-		rLoc = 9749;
-		rType = 0;
-		vrLen = 1176;
-		vrLoc = 9312;
-	};
-	E17A87D30446BD4A00050002 = {
-		fRef = E17A87EC0446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "memory: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 2067;
-		vrLoc = 0;
-	};
-	E17A87D40446BD4A00050002 = {
-		fRef = E17A87ED0446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFData.h: 21";
-		rLen = 0;
-		rLoc = 395;
-		rType = 0;
-		vrLen = 1169;
-		vrLoc = 0;
-	};
-	E17A87D50446BD4A00050002 = {
-		fRef = E17A87EE0446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFBase.h: 125";
-		rLen = 0;
-		rLoc = 3306;
-		rType = 0;
-		vrLen = 1468;
-		vrLoc = 4163;
-	};
-	E17A87D60446BD4A00050002 = {
-		fRef = E17A87EF0446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFDictionary.h: 516";
-		rLen = 76;
-		rLoc = 25628;
-		rType = 0;
-		vrLen = 2298;
-		vrLoc = 24570;
-	};
-	E17A87D70446BD4A00050002 = {
-		fRef = E17A87F00446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFPropertyList.h: 19";
-		rLen = 0;
-		rLoc = 449;
-		rType = 0;
-		vrLen = 1661;
-		vrLoc = 0;
-	};
-	E17A87D80446BD4A00050002 = {
-		fRef = E17A87F10446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFBundle.h: 99";
-		rLen = 0;
-		rLoc = 3680;
-		rType = 0;
-		vrLen = 1808;
-		vrLoc = 1718;
-	};
-	E17A87D90446BD4A00050002 = {
-		fRef = E17A87F20446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "MacMemory.h: 815";
-		rLen = 105;
-		rLoc = 21843;
-		rType = 0;
-		vrLen = 1330;
-		vrLoc = 21226;
-	};
-	E17A87DA0446BD4A00050002 = {
-		fRef = E17A87E60446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "CFString.h: 143";
-		rLen = 116;
-		rLoc = 6615;
-		rType = 0;
-		vrLen = 2410;
-		vrLoc = 5535;
-	};
-	E17A87DB0446BD4A00050002 = {
-		fRef = E17A87E70446BD4A00050002;
-		isa = PBXTextBookmark;
-		name = "MacTypes.h: 568";
-		rLen = 59;
-		rLoc = 23905;
-		rType = 0;
-		vrLen = 2364;
-		vrLoc = 22870;
-	};
-	E17A87DC0446BD4A00050002 = {
-		fRef = F5C0CA9501B5740C01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "README: 227";
-		rLen = 0;
-		rLoc = 7729;
-		rType = 0;
-		vrLen = 1764;
-		vrLoc = 7580;
-	};
-	E17A87DD0446BD4A00050002 = {
-		fRef = F574340B01B8A47B01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "VERSION: 1";
-		rLen = 0;
-		rLoc = 3;
-		rType = 0;
-		vrLen = 3;
-		vrLoc = 0;
-	};
-	E17A87DE0446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		name = "main.c: printInfoFromURL";
-		rLen = 0;
-		rLoc = 27861;
-		rType = 0;
-		vrLen = 3053;
-		vrLoc = 26387;
-	};
-	E17A87DF0446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		name = "main.c: printInfoFromURL";
-		rLen = 0;
-		rLoc = 29655;
-		rType = 0;
-		vrLen = 1523;
-		vrLoc = 26297;
-	};
-	E17A87E00446BD4A00050002 = {
-		fRef = F5C0CA9501B5740C01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "README: 228";
-		rLen = 0;
-		rLoc = 7899;
-		rType = 0;
-		vrLen = 1387;
-		vrLoc = 7538;
-	};
-	E17A87E10446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		name = "main.c: printInfoFromURL";
-		rLen = 0;
-		rLoc = 27861;
-		rType = 0;
-		vrLen = 3053;
-		vrLoc = 26387;
-	};
-	E17A87E20446BD4A00050002 = {
-		fRef = F574340B01B8A47B01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "VERSION: 1";
-		rLen = 0;
-		rLoc = 3;
-		rType = 0;
-		vrLen = 3;
-		vrLoc = 0;
-	};
-	E17A87E30446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		name = "main.c: osstatusstr";
-		rLen = 0;
-		rLoc = 6606;
-		rType = 0;
-		vrLen = 2056;
-		vrLoc = 286;
-	};
-	E17A87E40446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		rLen = 0;
-		rLoc = 715;
-		rType = 1;
-	};
-	E17A87E50446BD4A00050002 = {
-		fRef = 08FB7796FE84155DC02AAC07;
-		isa = PBXTextBookmark;
-		name = "main.c: printInfoFromURL";
-		rLen = 0;
-		rLoc = 29672;
-		rType = 0;
-		vrLen = 419;
-		vrLoc = 26900;
-	};
-	E17A87E60446BD4A00050002 = {
+	E103506B05355596002A18D1 = {
+		fRef = E1375C5D0530898300FE8BF8;
+		isa = PBXTextBookmark;
+		name = "LSOpen.h: 241";
+		rLen = 0;
+		rLoc = 8490;
+		rType = 0;
+		vrLen = 1029;
+		vrLoc = 7546;
+	};
+	E103506C05355596002A18D1 = {
+		fRef = E1375C5D0530898300FE8BF8;
+		isa = PBXTextBookmark;
+		name = "LSOpen.h: 241";
+		rLen = 0;
+		rLoc = 8490;
+		rType = 0;
+		vrLen = 1029;
+		vrLoc = 7546;
+	};
+	E103508E0535B52C002A18D1 = {
 		isa = PBXFileReference;
 		name = CFString.h;
 		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
 		refType = 0;
-	};
-	E17A87E70446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = MacTypes.h;
-		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacTypes.h;
-		refType = 0;
-	};
-	E17A87E80446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = Miscellaneou17456789101112.html;
-		path = /Developer/Documentation/Carbon/Files/ResourceManager/Resource_Manager/Functions/Miscellaneou17456789101112.html;
-		refType = 0;
-	};
-	E17A87E90446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = Resources.h;
-		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Resources.h;
-		refType = 0;
-	};
-	E17A87EA0446BD4A00050002 = {
+		sourceTree = "<absolute>";
+	};
+	E11E9B8E0544EE7900045D4F = {
+		fRef = E11E9B950544EE9700045D4F;
+		isa = PBXTextBookmark;
+		name = "(null): 158";
+		rLen = 0;
+		rLoc = 8234;
+		rType = 0;
+		vrLen = 1977;
+		vrLoc = 6660;
+	};
+	E11E9B8F0544EE7900045D4F = {
+		fRef = E103508E0535B52C002A18D1;
+		isa = PBXTextBookmark;
+		name = "CFString.h: CFStringCreateWithCString";
+		rLen = 16;
+		rLoc = 6861;
+		rType = 0;
+		vrLen = 2215;
+		vrLoc = 5649;
+	};
+	E11E9B940544EE9700045D4F = {
+		expectedFileType = sourcecode.c.h;
 		isa = PBXFileReference;
 		name = CFURL.h;
 		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFURL.h;
 		refType = 0;
-	};
-	E17A87EB0446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = Reading_Reso__Into_Memory.html;
-		path = /Developer/Documentation/Carbon/Files/ResourceManager/Resource_Manager/Functions/Reading_Reso__Into_Memory.html;
-		refType = 0;
-	};
-	E17A87EC0446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = memory;
-		path = "/usr/include/gcc/darwin/3.1/g++-v3/memory";
-		refType = 0;
-	};
-	E17A87ED0446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = CFData.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFData.h;
-		refType = 0;
-	};
-	E17A87EE0446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = CFBase.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h;
-		refType = 0;
-	};
-	E17A87EF0446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = CFDictionary.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFDictionary.h;
-		refType = 0;
-	};
-	E17A87F00446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = CFPropertyList.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFPropertyList.h;
-		refType = 0;
-	};
-	E17A87F10446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = CFBundle.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h;
-		refType = 0;
-	};
-	E17A87F20446BD4A00050002 = {
-		isa = PBXFileReference;
-		name = MacMemory.h;
-		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacMemory.h;
-		refType = 0;
-	};
-	E18D1CC8040C2AFC00050002 = {
-		fRef = F5C0CA9501B5740C01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "README: 236";
-		rLen = 0;
-		rLoc = 8342;
-		rType = 0;
-		vrLen = 1380;
-		vrLoc = 7710;
-	};
-	E18D1CC9040C2AFC00050002 = {
-		fRef = E18D1CCF040C2AFC00050002;
-		isa = PBXTextBookmark;
-		name = "CFBundle.h: 102";
-		rLen = 24;
-		rLoc = 3704;
-		rType = 0;
-		vrLen = 1174;
-		vrLoc = 3020;
-	};
-	E18D1CCF040C2AFC00050002 = {
-		isa = PBXFileReference;
-		name = CFBundle.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h;
-		refType = 0;
+		sourceTree = "<absolute>";
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {554, 6019}}";
+			sepNavSelRange = "{18538, 58}";
+			sepNavVisRect = "{{0, 5362}, {554, 654}}";
+		};
+	};
+	E11E9B950544EE9700045D4F = {
+		isa = PBXFileReference;
+		name = CFStringEncodingExt.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFStringEncodingExt.h;
+		refType = 0;
+		sourceTree = "<absolute>";
+	};
+	E11E9B960544EE9700045D4F = {
+		expectedFileType = sourcecode.c.h;
+		isa = PBXFileReference;
+		name = LSOpen.h;
+		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LSOpen.h;
+		refType = 0;
+		sourceTree = "<absolute>";
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {578, 3891}}";
+			sepNavSelRange = "{2548, 27}";
+			sepNavVisRect = "{{0, 856}, {578, 654}}";
+		};
+	};
+	E1375C530530898300FE8BF8 = {
+		fRef = E1375C5C0530898300FE8BF8;
+		isa = PBXTextBookmark;
+		name = "(null): 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 688;
+		vrLoc = 0;
+	};
+	E1375C560530898300FE8BF8 = {
+		fRef = E1375C5B0530898300FE8BF8;
+		isa = PBXTextBookmark;
+		name = "(null): 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 688;
+		vrLoc = 0;
+	};
+	E1375C5B0530898300FE8BF8 = {
+		isa = PBXFileReference;
+		name = LaunchServices.h;
+		path = /Developer/SDKs/MacOSX10.2.7.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LaunchServices.h;
+		refType = 0;
+		sourceTree = "<absolute>";
+	};
+	E1375C5C0530898300FE8BF8 = {
+		isa = PBXFileReference;
+		name = LaunchServices.h;
+		path = /Developer/SDKs/MacOSX10.2.7.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LaunchServices.h;
+		refType = 0;
+		sourceTree = "<absolute>";
+	};
+	E1375C5D0530898300FE8BF8 = {
+		isa = PBXFileReference;
+		name = LSOpen.h;
+		path = /Developer/SDKs/MacOSX10.3.0.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LSOpen.h;
+		refType = 0;
+		sourceTree = "<absolute>";
+	};
+	E14C945E052A896100142529 = {
+		isa = PBXSourceControlManager;
+		scmConfiguration = {
+		};
+		scmType = scm.cvs;
+	};
+	E14C945F052A896100142529 = {
+		indexTemplatePath = "";
+		isa = PBXCodeSenseManager;
+		usesDefaults = 1;
+		wantsCodeCompletion = 1;
+		wantsCodeCompletionAutoPopup = 0;
+		wantsCodeCompletionAutoSuggestions = 0;
+		wantsCodeCompletionCaseSensitivity = 1;
+		wantsCodeCompletionOnlyMatchingItems = 1;
+		wantsCodeCompletionParametersIncluded = 1;
+		wantsCodeCompletionPlaceholdersInserted = 1;
+		wantsCodeCompletionTabCompletes = 1;
+		wantsIndex = 1;
+	};
+	E14C949A052A8B0600142529 = {
+		fileReference = 08FB7796FE84155DC02AAC07;
+		isa = PBXFileBreakpoint;
+		lineNumber = 674;
+		state = 1;
 	};
 	E190CFF903AAA80600AEFBE0 = {
@@ -829,313 +473,112 @@
 		name = "handle URL/file arguments";
 		rLen = 0;
-		rLoc = 17797;
+		rLoc = 17894;
 		rType = 0;
 		vrLen = 1773;
 		vrLoc = 14523;
 	};
-	E190CFFD03AAA8A300AEFBE0 = {
-		fileReference = 08FB7796FE84155DC02AAC07;
-		isa = PBXFileBreakpoint;
-		lineNumber = 479;
-		state = 1;
-	};
-	E190CFFE03AAD96100AEFBE0 = {
-		isa = PBXTargetBookmark;
-		trg = 08FB779FFE84155DC02AAC07;
-	};
-	E190CFFF03AAD96100AEFBE0 = {
-		exec = F561F49E0139D79101AEEDB1;
-		isa = PBXExecutableBookmark;
-	};
-	E190D00203AAD96100AEFBE0 = {
-		fRef = E190D00E03AAD96100AEFBE0;
-		glyphRangeLength = 886;
-		glyphRangeLocation = 314;
-		isa = PBXDocBookmark;
-		name = "Miscellaneous234567891011.html: Adds the val...";
-	};
-	E190D00403AAD96100AEFBE0 = {
-		isa = PBXTargetBookmark;
-		trg = 08FB779FFE84155DC02AAC07;
-	};
-	E190D00503AAD96100AEFBE0 = {
-		exec = F561F49E0139D79101AEEDB1;
-		isa = PBXExecutableBookmark;
-	};
-	E190D00603AAD96100AEFBE0 = {
-		isa = PBXTargetBookmark;
-		trg = 08FB779FFE84155DC02AAC07;
-	};
-	E190D00703AAD96100AEFBE0 = {
-		isa = PBXTargetBookmark;
-		trg = 08FB779FFE84155DC02AAC07;
-	};
-	E190D00803AAD96100AEFBE0 = {
-		exec = F561F49E0139D79101AEEDB1;
-		isa = PBXExecutableBookmark;
-	};
-	E190D00903AAD96100AEFBE0 = {
-		fRef = E190D01003AAD96100AEFBE0;
-		isa = PBXTextBookmark;
-		name = "CFString.h: 146";
-		rLen = 25;
-		rLoc = 6754;
+	E1A087BB0548731500594651 = {
+		fRef = E11E9B960544EE9700045D4F;
+		isa = PBXTextBookmark;
+		name = "LSOpen.h: LSLaunchFSRefSpec";
+		rLen = 27;
+		rLoc = 2548;
+		rType = 0;
+		vrLen = 2176;
+		vrLoc = 1426;
+	};
+	E1A087C80548731D00594651 = {
+		expectedFileType = sourcecode.c.c;
+		isa = PBXFileReference;
+		name = main.c;
+		path = /Volumes/Ti/Users/nicholas/Documents/Development/launch/launch/main.c;
+		refType = 0;
+		sourceTree = "<absolute>";
+	};
+	E1A087CE0548746200594651 = {
+		fRef = E11E9B940544EE9700045D4F;
+		isa = PBXTextBookmark;
+		name = "CFURL.h: CFURLGetFSRef";
+		rLen = 58;
+		rLoc = 18538;
 		rType = 0;
 		vrLen = 1812;
-		vrLoc = 6085;
-	};
-	E190D00E03AAD96100AEFBE0 = {
-		isa = PBXFileReference;
-		name = Miscellaneous234567891011.html;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation/CollectionServices/Collection_Services/Functions/Miscellaneous234567891011.html;
-		refType = 0;
-	};
-	E190D01003AAD96100AEFBE0 = {
-		isa = PBXFileReference;
-		name = CFString.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
-		refType = 0;
-	};
-	E190D01403ABB17800AEFBE0 = {
-		fRef = E190D03803ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "CFArray.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1987;
-		vrLoc = 18422;
-	};
-	E190D01503ABB17800AEFBE0 = {
-		fRef = E190D03E03ABB17800AEFBE0;
-		glyphRangeLength = 682;
-		glyphRangeLocation = 46353;
-		isa = PBXDocBookmark;
-		name = "Miscellaneous.html: Creates an i...";
-	};
-	E190D01603ABB17800AEFBE0 = {
-		fRef = E190D03903ABB17800AEFBE0;
-		glyphRangeLength = 765;
-		glyphRangeLocation = 0;
-		isa = PBXDocBookmark;
-		name = "FSCatalogInfo.html: PATHDocument...";
-	};
-	E190D01703ABB17800AEFBE0 = {
-		fRef = E190D03F03ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "Finder.h: 245";
-		rLen = 0;
-		rLoc = 10667;
-		rType = 0;
-		vrLen = 1889;
-		vrLoc = 9430;
-	};
-	E190D01803ABB17800AEFBE0 = {
-		fRef = E190D04003ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "unistd.h: 180";
-		rLen = 28;
-		rLoc = 6936;
-		rType = 0;
-		vrLen = 1346;
-		vrLoc = 6238;
-	};
-	E190D01903ABB17800AEFBE0 = {
-		fRef = E190D04103ABB17800AEFBE0;
-		glyphRangeLength = 1207;
-		glyphRangeLocation = 99;
-		isa = PBXDocBookmark;
-		name = "Accessing_In__Directories.html: Returns cata...";
-	};
-	E190D01A03ABB17800AEFBE0 = {
-		fRef = E190D03003ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "stat.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1792;
-		vrLoc = 3421;
-	};
-	E190D01B03ABB17800AEFBE0 = {
-		fRef = E190D03103ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "Files.h: 5736";
-		rLen = 105;
-		rLoc = 193930;
-		rType = 0;
-		vrLen = 1145;
-		vrLoc = 193348;
-	};
-	E190D01C03ABB17800AEFBE0 = {
-		fRef = E190D03203ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "stdio.h: 301";
-		rLen = 0;
-		rLoc = 11200;
-		rType = 0;
-		vrLen = 1154;
-		vrLoc = 10552;
-	};
-	E190D01D03ABB17800AEFBE0 = {
-		fRef = E190D03303ABB17800AEFBE0;
-		glyphRangeLength = 702;
-		glyphRangeLocation = 18151;
-		isa = PBXDocBookmark;
-		name = "Miscellaneou39456789101112.html: Creates a ne...";
-	};
-	E190D01E03ABB17800AEFBE0 = {
-		fRef = E190D03403ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "string.h: 78";
-		rLen = 42;
-		rLoc = 3286;
-		rType = 0;
-		vrLen = 1261;
-		vrLoc = 2846;
-	};
-	E190D02303ABB17800AEFBE0 = {
-		fRef = E190D03D03ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "InternetConfig.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1212;
-		vrLoc = 5916;
-	};
-	E190D02603ABB17800AEFBE0 = {
-		fRef = E190D03603ABB17800AEFBE0;
-		glyphRangeLength = 682;
-		glyphRangeLocation = 46353;
-		isa = PBXDocBookmark;
-		name = "Miscellaneous.html: Creates an i...";
-	};
-	E190D02803ABB17800AEFBE0 = {
-		fRef = E190D03A03ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "Files.h: 3008";
-		rLen = 16;
-		rLoc = 102224;
-		rType = 0;
-		vrLen = 1154;
-		vrLoc = 101600;
-	};
-	E190D02903ABB17800AEFBE0 = {
-		fRef = E190D04203ABB17800AEFBE0;
-		glyphRangeLength = 1207;
-		glyphRangeLocation = 99;
-		isa = PBXDocBookmark;
-		name = "Accessing_In__Directories.html: Returns cata...";
-	};
-	E190D02B03ABB17800AEFBE0 = {
-		fRef = E190D03503ABB17800AEFBE0;
-		isa = PBXTextBookmark;
-		name = "InternetConfig.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1212;
-		vrLoc = 5916;
-	};
-	E190D03003ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = stat.h;
-		path = /usr/include/sys/stat.h;
-		refType = 0;
-	};
-	E190D03103ABB17800AEFBE0 = {
+		vrLoc = 16881;
+	};
+	E1A087CF0548746200594651 = {
+		fRef = E1A087D50548746200594651;
+		isa = PBXTextBookmark;
+		name = "(null): 5155";
+		rLen = 0;
+		rLoc = 175675;
+		rType = 0;
+		vrLen = 2070;
+		vrLoc = 174398;
+	};
+	E1A087D00548746200594651 = {
+		fRef = 08FB7796FE84155DC02AAC07;
+		isa = PBXTextBookmark;
+		name = "main.c: 805";
+		rLen = 5;
+		rLoc = 33076;
+		rType = 0;
+		vrLen = 1438;
+		vrLoc = 31911;
+	};
+	E1A087D10548746200594651 = {
+		fRef = E1A087D60548746200594651;
+		isa = PBXTextBookmark;
+		name = "(null): 5155";
+		rLen = 0;
+		rLoc = 175675;
+		rType = 0;
+		vrLen = 2070;
+		vrLoc = 174398;
+	};
+	E1A087D20548746200594651 = {
+		fRef = 08FB7796FE84155DC02AAC07;
+		isa = PBXTextBookmark;
+		name = "main.c: 805";
+		rLen = 0;
+		rLoc = 33089;
+		rType = 0;
+		vrLen = 1436;
+		vrLoc = 31909;
+	};
+	E1A087D30548746200594651 = {
+		fRef = E1A087C80548731D00594651;
+		isa = PBXTextBookmark;
+		rLen = 1;
+		rLoc = 808;
+		rType = 1;
+	};
+	E1A087D40548746200594651 = {
+		fRef = 08FB7796FE84155DC02AAC07;
+		isa = PBXTextBookmark;
+		name = "main.c: 809";
+		rLen = 0;
+		rLoc = 33212;
+		rType = 0;
+		vrLen = 325;
+		vrLoc = 33020;
+	};
+	E1A087D50548746200594651 = {
 		isa = PBXFileReference;
 		name = Files.h;
 		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Files.h;
 		refType = 0;
-	};
-	E190D03203ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = stdio.h;
-		path = /usr/include/stdio.h;
-		refType = 0;
-	};
-	E190D03303ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Miscellaneou39456789101112.html;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation/URLServices/URL_Services/Functions/Miscellaneou39456789101112.html;
-		refType = 0;
-	};
-	E190D03403ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = string.h;
-		path = /usr/include/string.h;
-		refType = 0;
-	};
-	E190D03503ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = InternetConfig.h;
-		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/InternetConfig.h;
-		refType = 0;
-	};
-	E190D03603ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Miscellaneous.html;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation/StringServices/String_Services/Functions/Miscellaneous.html;
-		refType = 0;
-	};
-	E190D03803ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = CFArray.h;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFArray.h;
-		refType = 0;
-	};
-	E190D03903ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = FSCatalogInfo.html;
-		path = /Developer/Documentation/Carbon/Files/FileManager/File_Manager/DataTypes/FSCatalogInfo.html;
-		refType = 0;
-	};
-	E190D03A03ABB17800AEFBE0 = {
+		sourceTree = "<absolute>";
+	};
+	E1A087D60548746200594651 = {
 		isa = PBXFileReference;
 		name = Files.h;
 		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Files.h;
 		refType = 0;
-	};
-	E190D03D03ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = InternetConfig.h;
-		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/InternetConfig.h;
-		refType = 0;
-	};
-	E190D03E03ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Miscellaneous.html;
-		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation/StringServices/String_Services/Functions/Miscellaneous.html;
-		refType = 0;
-	};
-	E190D03F03ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Finder.h;
-		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Finder.h;
-		refType = 0;
-	};
-	E190D04003ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = unistd.h;
-		path = /usr/include/unistd.h;
-		refType = 0;
-	};
-	E190D04103ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Accessing_In__Directories.html;
-		path = /Developer/Documentation/Carbon/Files/FileManager/File_Manager/Functions/Accessing_In__Directories.html;
-		refType = 0;
-	};
-	E190D04203ABB17800AEFBE0 = {
-		isa = PBXFileReference;
-		name = Accessing_In__Directories.html;
-		path = /Developer/Documentation/Carbon/Files/FileManager/File_Manager/Functions/Accessing_In__Directories.html;
-		refType = 0;
+		sourceTree = "<absolute>";
 	};
 	F561F49E0139D79101AEEDB1 = {
-		activeArgIndex = 1;
+		activeArgIndex = 2;
 		activeArgIndices = (
+			NO,
 			NO,
 			YES,
@@ -1144,4 +587,5 @@
 			"-nu file:///Applications/Prerelease/Mozilla.app",
 			"-c MSIE http://web.sabi.net/",
+			"-f /Volumes/Ti/Applications/iTunes.app",
 		);
 		configStateDict = {
@@ -1159,9 +603,11 @@
 		);
 	};
-	F5F4D74101B55E0801AEEDB1 = {
-		fileReference = 08FB7796FE84155DC02AAC07;
-		isa = PBXFileBreakpoint;
-		lineNumber = 609;
-		state = 1;
+	F5C0CA9501B5740C01AEEDB1 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {709, 3779}}";
+			sepNavSelRange = "{7907, 0}";
+			sepNavVisRect = "{{0, 3118}, {709, 443}}";
+			sepNavWindowFrame = "{{38, 304}, {750, 502}}";
+		};
 	};
 }
Index: trunk/launch/launch/launch.pbproj/project.pbxproj
===================================================================
--- trunk/launch/launch/launch.pbproj/project.pbxproj	(revision 138)
+++ trunk/launch/launch/launch.pbproj/project.pbxproj	(revision 146)
@@ -4,5 +4,5 @@
 	classes = {
 	};
-	objectVersion = 38;
+	objectVersion = 39;
 	objects = {
 		014CEA490018CE3211CA2923 = {
@@ -11,5 +11,10 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
 				OPTIMIZATION_CFLAGS = "-O0";
+				ZERO_LINK = YES;
 			};
 			isa = PBXBuildStyle;
@@ -21,4 +26,6 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				ZERO_LINK = NO;
 			};
 			isa = PBXBuildStyle;
@@ -36,7 +43,10 @@
 //034
 		034768E2FF38A6DC11DB9C8B = {
+			expectedFileType = "compiled.mach-o.executable";
+			fallbackIsa = PBXFileReference;
 			isa = PBXExecutableFileReference;
 			path = launch;
 			refType = 3;
+			sourceTree = BUILT_PRODUCTS_DIR;
 		};
 //030
@@ -51,4 +61,6 @@
 //084
 		08FB7793FE84155DC02AAC07 = {
+			buildSettings = {
+			};
 			buildStyles = (
 				014CEA490018CE3211CA2923,
@@ -74,4 +86,5 @@
 			name = launch;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		08FB7795FE84155DC02AAC07 = {
@@ -82,10 +95,13 @@
 			name = Source;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		08FB7796FE84155DC02AAC07 = {
+			expectedFileType = sourcecode.c.c;
 			fileEncoding = 30;
 			isa = PBXFileReference;
 			path = main.c;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		08FB779DFE84155DC02AAC07 = {
@@ -99,4 +115,5 @@
 			name = "External Frameworks and Libraries";
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		08FB779FFE84155DC02AAC07 = {
@@ -180,8 +197,11 @@
 //094
 		09AB6884FE841BABC02AAC07 = {
+			expectedFileType = wrapper.framework;
+			fallbackIsa = PBXFileReference;
 			isa = PBXFrameworkReference;
 			name = CoreFoundation.framework;
 			path = /System/Library/Frameworks/CoreFoundation.framework;
 			refType = 0;
+			sourceTree = "<absolute>";
 		};
 		09AB6885FE841BABC02AAC07 = {
@@ -208,4 +228,5 @@
 			name = Products;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 //190
@@ -220,8 +241,11 @@
 //F54
 		F561F49F0139D7DD01AEEDB1 = {
+			expectedFileType = wrapper.framework;
+			fallbackIsa = PBXFileReference;
 			isa = PBXFrameworkReference;
 			name = ApplicationServices.framework;
 			path = /System/Library/Frameworks/ApplicationServices.framework;
 			refType = 0;
+			sourceTree = "<absolute>";
 		};
 		F561F4A00139D7DD01AEEDB1 = {
@@ -232,14 +256,19 @@
 		};
 		F574340B01B8A47B01AEEDB1 = {
+			expectedFileType = text;
 			fileEncoding = 30;
 			isa = PBXFileReference;
 			path = VERSION;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		F579CF4B019A1C6D01AEEDB1 = {
+			expectedFileType = wrapper.framework;
+			fallbackIsa = PBXFileReference;
 			isa = PBXFrameworkReference;
 			name = Security.framework;
 			path = /System/Library/Frameworks/Security.framework;
 			refType = 0;
+			sourceTree = "<absolute>";
 		};
 		F579CF4C019A1C6D01AEEDB1 = {
@@ -250,14 +279,19 @@
 		};
 		F5C0CA9501B5740C01AEEDB1 = {
+			expectedFileType = text;
 			fileEncoding = 30;
 			isa = PBXFileReference;
 			path = README;
 			refType = 4;
+			sourceTree = "<group>";
 		};
 		F5E819BF0198DFF701AEEDB1 = {
+			expectedFileType = wrapper.framework;
+			fallbackIsa = PBXFileReference;
 			isa = PBXFrameworkReference;
 			name = Carbon.framework;
 			path = /System/Library/Frameworks/Carbon.framework;
 			refType = 0;
+			sourceTree = "<absolute>";
 		};
 		F5E819C00198DFF701AEEDB1 = {
Index: trunk/launch/launch/main.c
===================================================================
--- trunk/launch/launch/main.c	(revision 138)
+++ trunk/launch/launch/main.c	(revision 146)
@@ -18,9 +18,4 @@
 /* To do/think about:
 
-- Do we need to assume -b if -h?  Hiding the foreground app just makes
-it flash (only if Cocoa?)
-
-- Does -X work at all?  What does it return if it fails?
-
 - Launching as root: use authentication framework - doesn't work.
 
@@ -37,7 +32,7 @@
 */
 
-#define DEBUG 1
+/* #define DEBUG 1 */
 #define BROKEN_AUTHORIZATION 1
-#define BROKEN_LAUNCHNEWINSTANCE 1
+#define BROKEN_LSOPENFROMURLSPEC 1
 #define kComponentSignatureString "launch"
 
@@ -56,5 +51,5 @@
 const char *APP_NAME;
 
-#define VERSION "1.0b3"
+#define VERSION "1.0"
 
 #define STRBUF_LEN 1024
@@ -90,4 +85,6 @@
     { kLSLaunchInProgressErr, "application is being opened; please try again after the application is open" },
     { kLSNotRegisteredErr, "application not registered in Launch Services database" },
+    { kLSNoExecutableErr, "application package contains no executable, or an unusable executable" },
+    { kLSNoClassicEnvironmentErr, "Classic environment required but not available" },
 #ifndef BROKEN_AUTHORIZATION
     // Security framework errors
@@ -102,4 +99,5 @@
     { procNotFound, "unable to connect to system service.\nAre you logged in?" },
     { kCGErrorIllegalArgument, "window server error.\nAre you logged in?" },
+    { kCGErrorApplicationRequiresNewerSystem, "application requires a newer Mac OS X version" },
     { fnfErr, "file not found" },
     { 0, NULL }
@@ -119,7 +117,5 @@
         "  -w            wait for application to finish opening before exiting\n"
         "  -b            launch application in the background\n"
-#ifndef BROKEN_LAUNCHNEWINSTANCE
         "  -m            launch application again, even if already running\n"
-#endif
         "  -h            hide application once it's finished opening\n"
         "  -C            force CFM/PEF Carbon application to launch in Classic\n"
@@ -254,5 +250,7 @@
                 CFRelease(url);
                 url = NULL;
-            }
+            } else {
+	        CFRelease(scheme);
+	    }
         }
     }
@@ -382,9 +380,5 @@
         case 'w': LSPEC.launchFlags ^= kLSLaunchAsync; break;      // synchronous
         case 'b': LSPEC.launchFlags |= kLSLaunchDontSwitch; break; // open in background
-#ifdef BROKEN_LAUNCHNEWINSTANCE
-        case 'm': errexit("-m option not functional (LaunchServices bug?), sorry");
-#else
         case 'm': LSPEC.launchFlags |= kLSLaunchNewInstance; break;// open multiple
-#endif
         case 'h': LSPEC.launchFlags |= kLSLaunchAndHide; break;    // hide once launched
         case 'C': LSPEC.launchFlags |= kLSLaunchInClassic; break;  // force Classic
@@ -419,4 +413,5 @@
 		    if (scheme == NULL || !CFEqual(scheme, CFSTR("file")))
 			errexit("invalid file:// URL (argument of -u)");
+		    CFRelease(scheme);
 		}
 	    }
@@ -501,10 +496,9 @@
 }
 
-// 'context' is to match prototype for CFArrayApplierFunction, it's unused
-void printPathFromURL(CFURLRef url, void *context) {
+void printPathFromURL(CFURLRef url, FILE *stream) {
     CFStringRef scheme, pathOrURL;
     static char strBuffer[STRBUF_LEN];
     
-    check(url != NULL && context == NULL);
+    check(url != NULL && stream != NULL);
 
     scheme = CFURLCopyScheme(url);
@@ -517,5 +511,5 @@
     strBuffer[0] = '\0';
     CFStringGetCString(pathOrURL, strBuffer, STRBUF_LEN, CFStringGetSystemEncoding()); // XXX buffer size issues?
-    printf("%s\n", strBuffer);
+    fprintf(stream, "%s\n", strBuffer);
     CFRelease(scheme);
     CFRelease(pathOrURL);
@@ -700,5 +694,5 @@
                                 bundleID = CFDictionaryGetValue(infoPlist, kCFBundleIdentifierKey);
                                 if (bundleID != NULL) CFRetain(bundleID);
-                                CFStringRef appVersion = CFDictionaryGetValue(infoPlist, CFSTR("CFBundleShortVersionString"));
+                                appVersion = CFDictionaryGetValue(infoPlist, CFSTR("CFBundleShortVersionString"));
                                 if (appVersion == NULL)
                                     appVersion = CFDictionaryGetValue(infoPlist, kCFBundleVersionKey);
@@ -723,9 +717,11 @@
                 if (bundleID != NULL) CFRetain(bundleID);
 		// prefer a short version string, e.g. "1.0 Beta" instead of "51" for Safari
-		CFStringRef appVersion = CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("CFBundleShortVersionString"));
+                appVersion = CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("CFBundleShortVersionString"));
 		if (appVersion == NULL)
 		    appVersion = CFBundleGetValueForInfoDictionaryKey(bundle, kCFBundleVersionKey);
-		if (appVersion != NULL)
+                if (appVersion != NULL) {
+                    CFRetain(appVersion);
                     intVersion = CFBundleGetVersionNumber(bundle);
+                }
                 CFRelease(bundle);
             }
@@ -749,4 +745,5 @@
         CFStringGetCString(kind, tmpBuffer, STRBUF_LEN, CFStringGetSystemEncoding());
         printf("\tkind: %s\n", tmpBuffer);
+	CFRelease(kind);
         printMoreInfoFromURL(url);
     }
@@ -772,4 +769,55 @@
     
     CFRelease(urlStr);
+}
+
+OSStatus openFromURLSpec() {
+#ifndef BROKEN_LSOPENFROMURLSPEC
+    return LSOpenFromURLSpec(&LSPEC, NULL);
+#else
+    LSLaunchFSRefSpec spec = {NULL, 0, NULL, LSPEC.passThruParams,
+			      LSPEC.launchFlags, LSPEC.asyncRefCon};
+    CFIndex urlIndex, urlCount = LSPEC.itemURLs ? CFArrayGetCount(LSPEC.itemURLs) : 0;
+    FSRef *itemRefs = malloc(urlCount * sizeof(FSRef));
+    CFURLRef url;
+    CFStringRef scheme, fileScheme = CFSTR("file");
+    int itemIndex = 0;
+    OSStatus err;
+
+    for (urlIndex = 0 ; urlIndex < urlCount ; urlIndex++) {
+	url = CFArrayGetValueAtIndex(LSPEC.itemURLs, urlIndex);
+	scheme = CFURLCopyScheme(url);
+	if (CFEqual(scheme, fileScheme)) {
+	    if (CFURLGetFSRef(url, &itemRefs[itemIndex])) {
+		itemIndex++;
+		CFArrayRemoveValueAtIndex((CFMutableArrayRef)LSPEC.itemURLs, urlIndex);
+		urlIndex--;
+		urlCount--;
+	    } else {
+		fprintf(stderr, "%s: unable to locate: ", APP_NAME);
+		printPathFromURL(url, stderr);
+	    }
+	}
+        CFRelease(scheme);
+    }
+
+    if (urlCount > 0 || itemIndex == 0) { /* URLs, or no items */
+	err = LSOpenFromURLSpec(&LSPEC, NULL);
+	if (err != noErr)
+	    return err;
+    }
+    if (itemIndex > 0) {
+        FSRef appRef;
+	spec.numDocs = itemIndex;
+	spec.itemRefs = itemRefs;
+	if (LSPEC.appURL != NULL) {
+	    if (!CFURLGetFSRef(LSPEC.appURL, &appRef)) {
+		errexit("can't find application");
+	    }
+            spec.appRef = &appRef;
+	}
+	return LSOpenFromRefSpec(&spec, NULL);
+    }
+    return noErr;
+#endif
 }
 
@@ -798,16 +846,16 @@
     switch (OPTS.action) {
     case ACTION_FIND:
-	printPathFromURL(LSPEC.appURL, NULL);
+	printPathFromURL(LSPEC.appURL, stdout);
 	break;
     case ACTION_OPEN:
-	err = LSOpenFromURLSpec(&LSPEC, NULL);
+	err = openFromURLSpec();
 	if (err != noErr) osstatusexit(err, "can't open application", argv[1]);
 	break;
     case ACTION_FIND_ITEMS:
         CFArrayApplyFunction(LSPEC.itemURLs, CFRangeMake(0, CFArrayGetCount(LSPEC.itemURLs)),
-			     (CFArrayApplierFunction) printPathFromURL, NULL);
+			     (CFArrayApplierFunction) printPathFromURL, stdout);
 	break;
     case ACTION_OPEN_ITEMS:
-	err = LSOpenFromURLSpec(&LSPEC, NULL);
+	err = openFromURLSpec();
 	if (err != noErr) osstatusexit(err, "can't open items", argv[1]);
 	break;
@@ -819,5 +867,5 @@
     {
         ICInstance icInst;
-        err = ICStart(&icInst, '????');
+        err = ICStart(&icInst, '\?\?\?\?'); // in case GCC trigraph handling is enabled
         if (err != noErr) osstatusexit(err, "can't initialize Internet Config", argv[1]);
         CFArrayApplyFunction(LSPEC.itemURLs, CFRangeMake(0, CFArrayGetCount(LSPEC.itemURLs)),
Index: trunk/launch/package-launch.sh
===================================================================
--- trunk/launch/package-launch.sh	(revision 138)
+++ trunk/launch/package-launch.sh	(revision 146)
@@ -6,7 +6,8 @@
 find . -name \*~ -exec rm '{}' \; && \
 pbxbuild && \ 
-SetFile -c 'R*ch' -t 'TEXT' README VERSION && \
+SetFile -c 'R*ch' -t 'TEXT' README VERSION launch.1 && \
 strip build/launch && \
 sudo /usr/bin/install -c build/launch /usr/local/bin && \
+sudo /usr/bin/install -c launch.1 /usr/local/man/man1 && \
 rm -rf build/launch.build build/intermediates build/.gdb_history && \
 VERSION=`cat VERSION` TARBALL="launch-$VERSION.tar.gz" && \
@@ -31,2 +32,3 @@
 #mv z$DMG $DMG && \
 scp $TARBALL ainaz:web/nriley/software/ #$DMG 
+:
