Index: trunk/launch/launch/README
===================================================================
--- trunk/launch/launch/README (revision 163)
+++ trunk/launch/launch/README (revision 166)
@@ -1,4 +1,4 @@
-launch 1.0 [23 October 2003]
-==========
+launch 1.0.1 [3 April 2005]
+============
A command-line launcher for Mac OS X in the spirit of open(1).
@@ -56,5 +56,5 @@
Uninstallation:
-% sudo rm -f /usr/local/bin/launch /usr/local/man/man1/appswitch.1
+% sudo rm -f /usr/local/bin/launch /usr/local/man/man1/launch.1
COMPILATION
@@ -63,6 +63,6 @@
An Xcode/Project Builder project, 'launch.pbproj', is included. A
precompiled binary is also provided. 'launch' was developed and
-tested under Mac OS 10.3 with the October 2003 Developer Tools, and
-does not require any additional software to build.
+tested under Mac OS 10.3.8 with Xcode 1.5, and does not require any
+additional software to build.
USAGE
@@ -202,6 +202,6 @@
various system services owned by the currently logged-on user. If you
aren't using 'launch' from a terminal currently logged into the Mac OS
-X GUI, certain operations may not work. Try opening Terminal.app,
-creating a new terminal, and trying again.
+X GUI, certain operations may not work. Try opening Terminal, creating
+a new terminal window, and trying again.
Another possibility is to create your own interprocess messaging.
@@ -237,4 +237,18 @@
---------------
+1.0.1 - 3 April 2005
+ - prefer files to URLs; added -U for old behavior
+ - don't display extraneous leading './' on file paths
+ - display 'zero items', not '0 items', for consistency
+ - display versions of non-applications
+ - read Info.plists embedded in unbundled Mach-O applications
+ - non-ASCII arguments are now handled with the filesystem, rather
+ than the system encoding [Derrick Bass]
+ - explicitly use UTF-8 everywhere else to properly interpret and
+ display non-ASCII filenames and URLs
+ - reading OSTypes and 'vers' resources, and opening URLs with
+ Internet Config still uses the system encoding, converting as
+ necessary for display
+ - should be buildable on 10.2 again
1.0 - 23 October 2003
- work around CFBundle bug to report bundle identifiers and versions
Index: trunk/launch/launch/VERSION
===================================================================
--- trunk/launch/launch/VERSION (revision 163)
+++ trunk/launch/launch/VERSION (revision 166)
@@ -1,1 +1,1 @@
-1.0
+1.0.1
Index: trunk/launch/launch/launch.1
===================================================================
--- trunk/launch/launch/launch.1 (revision 163)
+++ trunk/launch/launch/launch.1 (revision 166)
@@ -1,5 +1,5 @@
-.Dd Wed Oct 22 2003 \" DATE
+.Dd Sun Apr 3 2005 \" DATE
.Dt LAUNCH 1 LOCAL \" Program name and manual section number
-.Os launch 1.0
+.Os launch 1.0.1
.Sh NAME
.Nm launch
@@ -7,5 +7,5 @@
.Sh SYNOPSIS
.Nm launch
-.Op Fl npswbmhCX \" [-npswbmhCX]
+.Op Fl npswbmhCXU \" [-npswbmhCXU]
.Op Fl c Ar creator \" [-c creator]
.Op Fl i Ar bundleID \" [-i bundleID]
@@ -15,5 +15,5 @@
.Op Ar - \" [-]
.Nm
-.Op Fl npflswbmhCX
+.Op Fl npflswbmhCXU
.Ar item ...
.Sh DESCRIPTION
@@ -99,4 +99,9 @@
Don't start the Classic environment for this Classic application if
Classic isn't running.
+.It Fl U
+Interpret items as URLs, even if files with the same names as the URLs
+exist. (This was the default behavior in
+.Nm
+1.0.)
.El
.Sh SEE ALSO
Index: trunk/launch/launch/launch.pbproj/nicholas.mode1
===================================================================
--- trunk/launch/launch/launch.pbproj/nicholas.mode1 (revision 166)
+++ trunk/launch/launch/launch.pbproj/nicholas.mode1 (revision 166)
@@ -0,0 +1,1171 @@
+
+
+
+
+ ActivePerspectiveName
+ Project
+ AllowedModules
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXSmartGroupTreeModule
+ Name
+ Groups and Files Outline View
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXNavigatorGroup
+ Name
+ Editor
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ XCTaskListModule
+ Name
+ Task List
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ XCDetailModule
+ Name
+ File and Smart Group Detail Viewer
+
+
+ BundleLoadPath
+
+ MaxInstances
+ 1
+ Module
+ PBXBuildResultsModule
+ Name
+ Detailed Build Results Viewer
+
+
+ BundleLoadPath
+
+ MaxInstances
+ 1
+ Module
+ PBXProjectFindModule
+ Name
+ Project Batch Find Tool
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXRunSessionModule
+ Name
+ Run Log
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXBookmarksModule
+ Name
+ Bookmarks Tool
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXClassBrowserModule
+ Name
+ Class Browser
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXCVSModule
+ Name
+ Source Code Control Tool
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXDebugBreakpointsModule
+ Name
+ Debug Breakpoints Tool
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ XCDockableInspector
+ Name
+ Inspector
+
+
+ BundleLoadPath
+
+ MaxInstances
+ n
+ Module
+ PBXOpenQuicklyModule
+ Name
+ Open Quickly Tool
+
+
+ BundleLoadPath
+
+ MaxInstances
+ 1
+ Module
+ PBXDebugSessionModule
+ Name
+ Debugger
+
+
+ BundleLoadPath
+
+ MaxInstances
+ 1
+ Module
+ PBXDebugCLIModule
+ Name
+ Debug Console
+
+
+ Description
+ This workspace mimics that found in Xcode 1.2, with various minor improvements such as including attached editors to the build results window and the project find window.
+ DockingSystemVisible
+
+ Extension
+ mode1
+ FirstTimeWindowDisplayed
+
+ Identifier
+ com.apple.perspectives.project.mode1
+ MajorVersion
+ 31
+ MinorVersion
+ 0
+ Name
+ Default Workspace
+ Notifications
+
+
+ XCObserverAutoDisconnectKey
+
+ XCObserverDefintionKey
+
+ PBXStatusErrorsKey
+ 0
+
+ XCObserverFactoryKey
+ XCPerspectivesSpecificationIdentifier
+ XCObserverGUIDKey
+ XCObserverProjectIdentifier
+ XCObserverNotificationKey
+ PBXStatusBuildStateMessageNotification
+ XCObserverTargetKey
+ XCMainBuildResultsModuleGUID
+ XCObserverTriggerKey
+ awakenModuleWithObserver:
+ XCObserverValidationKey
+
+ PBXStatusErrorsKey
+ 2
+
+
+
+ OpenEditors
+
+ Perspectives
+
+
+ ChosenToolbarItems
+
+ active-target-popup
+ NSToolbarFlexibleSpaceItem
+ buildOrClean
+ build-and-runOrDebug
+ com.apple.ide.PBXToolbarStopButton
+ get-info
+ NSToolbarFlexibleSpaceItem
+ com.apple.pbx.toolbar.searchfield
+
+ ControllerClassBaseName
+
+ IconName
+ WindowOfProject
+ Identifier
+ perspective.project
+ IsVertical
+
+ Layout
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ PBXBottomSmartGroupGIDs
+
+ 1C37FBAC04509CD000000102
+ 1C37FAAC04509CD000000102
+ 1C08E77C0454961000C914BD
+ 1C37FABC05509CD000000102
+ 1C37FABC05539CD112110102
+ E2644B35053B69B200211256
+ 1C37FABC04509CD000100104
+ 1CC0EA4004350EF90044410B
+ 1CC0EA4004350EF90041110B
+
+ PBXProjectModuleGUID
+ 1CE0B1FE06471DED0097A5F4
+ PBXProjectModuleLabel
+ Files
+ PBXProjectStructureProvided
+ yes
+ PBXSmartGroupTreeModuleColumnData
+
+ PBXSmartGroupTreeModuleColumnWidthsKey
+
+ 22
+ 178
+
+ PBXSmartGroupTreeModuleColumnsKey_v4
+
+ SCMStatusColumn
+ MainColumn
+
+
+ PBXSmartGroupTreeModuleOutlineStateKey_v7
+
+ PBXSmartGroupTreeModuleOutlineStateExpansionKey
+
+ 08FB7794FE84155DC02AAC07
+ 08FB7795FE84155DC02AAC07
+ 1C37FABC05509CD000000102
+
+ PBXSmartGroupTreeModuleOutlineStateSelectionKey
+
+
+ 2
+ 1
+ 0
+
+
+ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
+ {{0, 0}, {200, 469}}
+
+ PBXTopSmartGroupGIDs
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {217, 487}}
+ GroupTreeTableConfiguration
+
+ SCMStatusColumn
+ 22
+ MainColumn
+ 178
+
+ RubberWindowFrame
+ 8 232 697 508 0 0 1152 746
+
+ Module
+ PBXSmartGroupTreeModule
+ Proportion
+ 217pt
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CE0B20306471E060097A5F4
+ PBXProjectModuleLabel
+ MyNewFile14.java
+ PBXSplitModuleInNavigatorKey
+
+ Split0
+
+ PBXProjectModuleGUID
+ 1CE0B20406471E060097A5F4
+ PBXProjectModuleLabel
+ MyNewFile14.java
+
+ SplitCount
+ 1
+
+ StatusBarVisibility
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {474, 0}}
+ RubberWindowFrame
+ 8 232 697 508 0 0 1152 746
+
+ Module
+ PBXNavigatorGroup
+ Proportion
+ 0pt
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CE0B20506471E060097A5F4
+ PBXProjectModuleLabel
+ Detail
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 7}, {474, 480}}
+ RubberWindowFrame
+ 8 232 697 508 0 0 1152 746
+
+ Module
+ XCDetailModule
+ Proportion
+ 480pt
+
+
+ Proportion
+ 474pt
+
+
+ Name
+ Project
+ ServiceClasses
+
+ XCModuleDock
+ PBXSmartGroupTreeModule
+ XCModuleDock
+ PBXNavigatorGroup
+ XCDetailModule
+
+ TableOfContents
+
+ E106FE530800B979005E16D3
+ 1CE0B1FE06471DED0097A5F4
+ E106FE540800B979005E16D3
+ 1CE0B20306471E060097A5F4
+ 1CE0B20506471E060097A5F4
+
+ ToolbarConfiguration
+ xcode.toolbar.config.default
+
+
+ PerspectivesBarVisible
+
+ StatusbarIsVisible
+
+ TimeStamp
+ 134264568.95548201
+ ToolbarDisplayMode
+ 2
+ ToolbarIsVisible
+
+ ToolbarSizeMode
+ 2
+ Type
+ Perspectives
+ UpdateMessage
+
+ WindowJustification
+ 5
+ WindowOrderList
+
+ 1C0AD2B3069F1EA900FABCE6
+ /Users/nicholas/Documents/Development/launch/launch/launch.pbproj
+
+ WindowString
+ 8 232 697 508 0 0 1152 746
+ WindowTools
+
+
+ FirstTimeWindowDisplayed
+
+ Identifier
+ windowTool.build
+ Layout
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CD0528F0623707200166675
+ PBXProjectModuleLabel
+ main.c
+ PBXSplitModuleInNavigatorKey
+
+ Split0
+
+ PBXProjectModuleGUID
+ 1CD052900623707200166675
+ PBXProjectModuleLabel
+ main.c
+ bookmark
+ E1F40A520800A6C9003CDFFA
+ history
+
+ E1F40A3208009E1D003CDFFA
+
+
+ SplitCount
+ 1
+
+ StatusBarVisibility
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {638, 172}}
+ RubberWindowFrame
+ 313 94 638 457 0 0 1152 746
+
+ Module
+ PBXNavigatorGroup
+ Proportion
+ 172pt
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ XCMainBuildResultsModuleGUID
+ PBXProjectModuleLabel
+ Build
+ XCBuildResultsTrigger_Collapse
+ 1021
+ XCBuildResultsTrigger_Open
+ 1012
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 179}, {638, 236}}
+ RubberWindowFrame
+ 313 94 638 457 0 0 1152 746
+
+ Module
+ PBXBuildResultsModule
+ Proportion
+ 236pt
+
+
+ Proportion
+ 415pt
+
+
+ Name
+ Build Results
+ ServiceClasses
+
+ PBXBuildResultsModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ E14F8BF007066085000B9FBF
+ E1F4095E08006585003CDFFA
+ 1CD0528F0623707200166675
+ XCMainBuildResultsModuleGUID
+
+ ToolbarConfiguration
+ xcode.toolbar.config.build
+ WindowString
+ 313 94 638 457 0 0 1152 746
+ WindowToolGUID
+ E14F8BF007066085000B9FBF
+ WindowToolIsVisible
+
+
+
+ FirstTimeWindowDisplayed
+
+ Identifier
+ windowTool.debugger
+ Layout
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ Debugger
+
+ HorizontalSplitView
+
+ _collapsingFrameDimension
+ 0.0
+ _indexOfCollapsedView
+ 0
+ _percentageOfCollapsedView
+ 0.0
+ isCollapsed
+ yes
+ sizes
+
+ {{0, 0}, {312, 164}}
+ {{312, 0}, {382, 164}}
+
+
+ VerticalSplitView
+
+ _collapsingFrameDimension
+ 0.0
+ _indexOfCollapsedView
+ 0
+ _percentageOfCollapsedView
+ 0.0
+ isCollapsed
+ yes
+ sizes
+
+ {{0, 0}, {694, 164}}
+ {{0, 164}, {694, 216}}
+
+
+
+ LauncherConfigVersion
+ 8
+ PBXProjectModuleGUID
+ 1C162984064C10D400B95A72
+ PBXProjectModuleLabel
+ Debug - GLUTExamples (Underwater)
+
+ GeometryConfiguration
+
+ DebugConsoleDrawerSize
+ {100, 120}
+ DebugConsoleVisible
+ None
+ DebugConsoleWindowFrame
+ {{200, 200}, {500, 300}}
+ DebugSTDIOWindowFrame
+ {{200, 200}, {500, 300}}
+ Frame
+ {{0, 0}, {694, 380}}
+ RubberWindowFrame
+ 427 183 694 422 0 0 1280 832
+
+ Module
+ PBXDebugSessionModule
+ Proportion
+ 380pt
+
+
+ Proportion
+ 380pt
+
+
+ Name
+ Debugger
+ ServiceClasses
+
+ PBXDebugSessionModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1CD10A99069EF8BA00B06720
+ E14F91C707067F7A000B9FBF
+ 1C162984064C10D400B95A72
+ E14F91C807067F7A000B9FBF
+
+ ToolbarConfiguration
+ xcode.toolbar.config.debug
+ WindowString
+ 427 183 694 422 0 0 1280 832
+ WindowToolGUID
+ 1CD10A99069EF8BA00B06720
+ WindowToolIsVisible
+
+
+
+ FirstTimeWindowDisplayed
+
+ Identifier
+ windowTool.find
+ Layout
+
+
+ Dock
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CDD528C0622207200134675
+ PBXProjectModuleLabel
+ JVAppearancePreferences.m
+ PBXSplitModuleInNavigatorKey
+
+ Split0
+
+ PBXProjectModuleGUID
+ 1CD0528D0623707200166675
+ PBXProjectModuleLabel
+ JVAppearancePreferences.m
+ bookmark
+ E14F91F107068327000B9FBF
+ history
+
+ E14F91EE07068327000B9FBF
+ E14F91EF07068327000B9FBF
+
+ prevStack
+
+ E14F91F007068327000B9FBF
+
+
+ SplitCount
+ 1
+
+ StatusBarVisibility
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {781, 116}}
+ RubberWindowFrame
+ 226 291 781 470 0 0 1280 832
+
+ Module
+ PBXNavigatorGroup
+ Proportion
+ 781pt
+
+
+ Proportion
+ 116pt
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CD0528E0623707200166675
+ PBXProjectModuleLabel
+ Project Find
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 123}, {781, 326}}
+ RubberWindowFrame
+ 226 291 781 470 0 0 1280 832
+
+ Module
+ PBXProjectFindModule
+ Proportion
+ 326pt
+
+
+ Proportion
+ 449pt
+
+
+ Name
+ Project Find
+ ServiceClasses
+
+ PBXProjectFindModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1C530D57069F1CE1000CFCEE
+ E14F91A5070668E8000B9FBF
+ E14F91A6070668E8000B9FBF
+ 1CDD528C0622207200134675
+ 1CD0528E0623707200166675
+
+ WindowString
+ 226 291 781 470 0 0 1280 832
+ WindowToolGUID
+ 1C530D57069F1CE1000CFCEE
+ WindowToolIsVisible
+
+
+
+ Identifier
+ MENUSEPARATOR
+
+
+ FirstTimeWindowDisplayed
+
+ Identifier
+ windowTool.debuggerConsole
+ Layout
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1C78EAAC065D492600B07095
+ PBXProjectModuleLabel
+ Debugger Console
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {440, 358}}
+ RubberWindowFrame
+ 448 182 440 400 0 0 1280 832
+
+ Module
+ PBXDebugCLIModule
+ Proportion
+ 358pt
+
+
+ Proportion
+ 358pt
+
+
+ Name
+ Debugger Console
+ ServiceClasses
+
+ PBXDebugCLIModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ E14F91CA07067F7A000B9FBF
+ E14F91CB07067F7A000B9FBF
+ 1C78EAAC065D492600B07095
+
+ WindowString
+ 448 182 440 400 0 0 1280 832
+ WindowToolGUID
+ E14F91CA07067F7A000B9FBF
+ WindowToolIsVisible
+
+
+
+ FirstTimeWindowDisplayed
+
+ Identifier
+ windowTool.run
+ Layout
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ LauncherConfigVersion
+ 3
+ PBXProjectModuleGUID
+ 1CD0528B0623707200166675
+ PBXProjectModuleLabel
+ Run
+ Runner
+
+ HorizontalSplitView
+
+ _collapsingFrameDimension
+ 0.0
+ _indexOfCollapsedView
+ 0
+ _percentageOfCollapsedView
+ 0.0
+ isCollapsed
+ yes
+ sizes
+
+ {{0, 0}, {491, 167}}
+ {{0, 176}, {491, 267}}
+
+
+ VerticalSplitView
+
+ _collapsingFrameDimension
+ 0.0
+ _indexOfCollapsedView
+ 0
+ _percentageOfCollapsedView
+ 0.0
+ isCollapsed
+ yes
+ sizes
+
+ {{0, 0}, {405, 443}}
+ {{414, 0}, {514, 443}}
+
+
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {458, 143}}
+ RubberWindowFrame
+ 285 301 458 185 0 0 1152 746
+
+ Module
+ PBXRunSessionModule
+ Proportion
+ 143pt
+
+
+ Proportion
+ 143pt
+
+
+ Name
+ Run Log
+ ServiceClasses
+
+ PBXRunSessionModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1C0AD2B3069F1EA900FABCE6
+ E106FE550800B979005E16D3
+ 1CD0528B0623707200166675
+ E106FE560800B979005E16D3
+
+ ToolbarConfiguration
+ xcode.toolbar.config.run
+ WindowString
+ 285 301 458 185 0 0 1152 746
+ WindowToolGUID
+ 1C0AD2B3069F1EA900FABCE6
+ WindowToolIsVisible
+
+
+
+ Identifier
+ windowTool.scm
+ Layout
+
+
+ Dock
+
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1C78EAB2065D492600B07095
+ PBXProjectModuleLabel
+ <No Editor>
+ PBXSplitModuleInNavigatorKey
+
+ Split0
+
+ PBXProjectModuleGUID
+ 1C78EAB3065D492600B07095
+
+ SplitCount
+ 1
+
+ StatusBarVisibility
+
+
+ GeometryConfiguration
+
+ Frame
+ {{0, 0}, {452, 0}}
+ RubberWindowFrame
+ 743 379 452 308 0 0 1280 1002
+
+ Module
+ PBXNavigatorGroup
+ Proportion
+ 0pt
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CD052920623707200166675
+ PBXProjectModuleLabel
+ SCM
+
+ GeometryConfiguration
+
+ ConsoleFrame
+ {{0, 259}, {452, 0}}
+ Frame
+ {{0, 7}, {452, 259}}
+ RubberWindowFrame
+ 743 379 452 308 0 0 1280 1002
+ TableConfiguration
+
+ Status
+ 30
+ FileName
+ 199
+ Path
+ 197.09500122070312
+
+ TableFrame
+ {{0, 0}, {452, 250}}
+
+ Module
+ PBXCVSModule
+ Proportion
+ 259pt
+
+
+ Proportion
+ 266pt
+
+
+ Name
+ SCM
+ ServiceClasses
+
+ PBXCVSModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1C78EAB4065D492600B07095
+ 1C78EAB5065D492600B07095
+ 1C78EAB2065D492600B07095
+ 1CD052920623707200166675
+
+ WindowString
+ 743 379 452 308 0 0 1280 1002
+
+
+ Identifier
+ windowTool.breakpoints
+ Layout
+
+
+ Dock
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ PBXProjectModuleGUID
+ 1CD052930623707200166675
+ PBXProjectModuleLabel
+ Breakpoints
+
+ GeometryConfiguration
+
+ BreakpointsTreeTableConfiguration
+
+ enabledColumn
+ 16
+ breakpointColumn
+ 201.5830078125
+
+ Frame
+ {{0, 0}, {240, 195}}
+ RubberWindowFrame
+ 342 421 240 216 0 0 1440 878
+
+ Module
+ PBXDebugBreakpointsModule
+ Proportion
+ 195pt
+
+
+ Proportion
+ 195pt
+
+
+ Name
+ Breakpoints
+ ServiceClasses
+
+ PBXDebugBreakpointsModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1C0AD2AD069F1E9B00FABCE6
+ 1C0AD2AE069F1E9B00FABCE6
+ 1CD052930623707200166675
+
+ WindowString
+ 342 421 240 216 0 0 1440 878
+ WindowToolGUID
+ 1C0AD2AD069F1E9B00FABCE6
+ WindowToolIsVisible
+
+
+
+ Identifier
+ windowTool.bookmarks
+ Layout
+
+
+ Dock
+
+
+ Module
+ PBXBookmarksModule
+ Proportion
+ 166pt
+
+
+ Proportion
+ 166pt
+
+
+ Name
+ Bookmarks
+ ServiceClasses
+
+ PBXBookmarksModule
+
+ StatusbarIsVisible
+
+ WindowString
+ 538 42 401 187 0 0 1280 1002
+
+
+ Identifier
+ windowTool.classBrowser
+ Layout
+
+
+ Dock
+
+
+ BecomeActive
+
+ ContentConfiguration
+
+ OptionsSetName
+ Hierarchy, all classes
+ PBXProjectModuleGUID
+ 1CA6456E063B45B4001379D8
+ PBXProjectModuleLabel
+ Class Browser - NSObject
+
+ GeometryConfiguration
+
+ ClassesFrame
+ {{0, 0}, {374, 96}}
+ ClassesTreeTableConfiguration
+
+ PBXClassNameColumnIdentifier
+ 208
+ PBXClassBookColumnIdentifier
+ 22
+
+ Frame
+ {{0, 0}, {630, 331}}
+ MembersFrame
+ {{0, 105}, {374, 395}}
+ MembersTreeTableConfiguration
+
+ PBXMemberTypeIconColumnIdentifier
+ 22
+ PBXMemberNameColumnIdentifier
+ 216
+ PBXMemberTypeColumnIdentifier
+ 97
+ PBXMemberBookColumnIdentifier
+ 22
+
+ PBXModuleWindowStatusBarHidden2
+
+ RubberWindowFrame
+ 385 179 630 352 0 0 1440 878
+
+ Module
+ PBXClassBrowserModule
+ Proportion
+ 331pt
+
+
+ Proportion
+ 331pt
+
+
+ Name
+ Class Browser
+ ServiceClasses
+
+ PBXClassBrowserModule
+
+ StatusbarIsVisible
+
+ TableOfContents
+
+ 1C0AD2AF069F1E9B00FABCE6
+ 1C0AD2B0069F1E9B00FABCE6
+ 1CA6456E063B45B4001379D8
+
+ ToolbarConfiguration
+ xcode.toolbar.config.classbrowser
+ WindowString
+ 385 179 630 352 0 0 1440 878
+ WindowToolGUID
+ 1C0AD2AF069F1E9B00FABCE6
+ WindowToolIsVisible
+
+
+
+
+
Index: trunk/launch/launch/launch.pbproj/nicholas.pbxuser
===================================================================
--- trunk/launch/launch/launch.pbproj/nicholas.pbxuser (revision 163)
+++ trunk/launch/launch/launch.pbproj/nicholas.pbxuser (revision 166)
@@ -47,7 +47,7 @@
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 341,
+ 236,
20,
- 65,
+ 47,
43,
43,
@@ -76,5 +76,181 @@
);
};
- PBXPerProjectTemplateStateSaveDate = 88649579;
+ PBXPerProjectTemplateStateSaveDate = 134264568;
+ PBXPrepackagedSmartGroups_v2 = (
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ activationKey = OldTargetSmartGroup;
+ clz = PBXTargetSmartGroup;
+ description = "Displays all targets of the project.";
+ globalID = 1C37FABC04509CD000000102;
+ name = Targets;
+ preferences = {
+ image = Targets;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXTargetSmartGroup2;
+ description = "Displays all targets of the project as well as nested build phases.";
+ globalID = 1C37FBAC04509CD000000102;
+ name = Targets;
+ preferences = {
+ image = Targets;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXExecutablesSmartGroup;
+ description = "Displays all executables of the project.";
+ globalID = 1C37FAAC04509CD000000102;
+ name = Executables;
+ preferences = {
+ image = Executable;
+ };
+ },
+ {
+ " PBXTransientLocationAtTop " = bottom;
+ absolutePathToBundle = "";
+ clz = PBXErrorsWarningsSmartGroup;
+ description = "Displays files with errors or warnings.";
+ globalID = 1C08E77C0454961000C914BD;
+ name = "Errors and Warnings";
+ preferences = {
+ fnmatch = "";
+ image = WarningsErrors;
+ recursive = 1;
+ regex = "";
+ root = "";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = 1CC0EA4004350EF90044410B;
+ name = "Implementation Files";
+ preferences = {
+ canSave = 1;
+ fnmatch = "";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "?*\\.[mcMC]";
+ root = "";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "This group displays Interface Builder NIB Files.";
+ globalID = 1CC0EA4004350EF90041110B;
+ name = "NIB Files";
+ preferences = {
+ canSave = 1;
+ fnmatch = "*.nib";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "";
+ root = "";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = no;
+ absolutePathToBundle = "";
+ clz = PBXFindSmartGroup;
+ description = "Displays Find Results.";
+ globalID = 1C37FABC05509CD000000102;
+ name = "Find Results";
+ preferences = {
+ image = spyglass;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = no;
+ absolutePathToBundle = "";
+ clz = PBXBookmarksSmartGroup;
+ description = "Displays Project Bookmarks.";
+ globalID = 1C37FABC05539CD112110102;
+ name = Bookmarks;
+ preferences = {
+ image = Bookmarks;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = XCSCMSmartGroup;
+ description = "Displays files with interesting SCM status.";
+ globalID = E2644B35053B69B200211256;
+ name = SCM;
+ preferences = {
+ image = PBXRepository;
+ isLeaf = 0;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXSymbolsSmartGroup;
+ description = "Displays all symbols for the project.";
+ globalID = 1C37FABC04509CD000100104;
+ name = "Project Symbols";
+ preferences = {
+ image = ProjectSymbols;
+ isLeaf = 1;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = PBXTemplateMarker;
+ name = "Simple Filter SmartGroup";
+ preferences = {
+ canSave = 1;
+ fnmatch = "*.nib";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "";
+ root = "";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = PBXTemplateMarker;
+ name = "Simple Regular Expression SmartGroup";
+ preferences = {
+ canSave = 1;
+ fnmatch = "";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "?*\\.[mcMC]";
+ root = "";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ clz = XDDesignSmartGroup;
+ description = "Displays Xdesign models";
+ globalID = 2E4A936305E6979E00701470;
+ name = Design;
+ preferences = {
+ image = Design;
+ isLeaf = 0;
+ };
+ },
+ );
PBXWorkspaceContents = (
{
@@ -83,8 +259,7 @@
PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = {
Split0 = {
- bookmark = E1A087D20548746200594651;
+ bookmark = E12B212E0548BF6E00CFF4E9;
history = (
E1375C530530898300FE8BF8,
- E103506B05355596002A18D1,
E11E9B8E0544EE7900045D4F,
E11E9B8F0544EE7900045D4F,
@@ -92,12 +267,8 @@
E1A087CE0548746200594651,
E1A087CF0548746200594651,
- E1A087D00548746200594651,
- );
- nextStack = (
- E1A087D10548746200594651,
+ E103506C05355596002A18D1,
);
prevStack = (
E1375C560530898300FE8BF8,
- E103506C05355596002A18D1,
);
};
@@ -124,27 +295,4 @@
};
},
- {
- PBXProjectWorkspaceModule_StateKey_Rev36 = {
- PBXProjectWorkspaceModule_EditorOpen = true;
- PBXProjectWorkspaceModule_EmbeddedNavigatorGroup = {
- Split0 = {
- bookmark = E1A087D40548746200594651;
- history = (
- E1A087D30548746200594651,
- );
- };
- 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.PBXBuildResultsModule" = {
@@ -208,19 +356,4 @@
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}}",
- );
- };
- };
- WindowFrame = "{{523, 63}, {600, 383}}";
- },
);
"PBXWorkspaceGeometries:PBXConfiguration.PBXModule.PBXBuildResultsModule" = {
@@ -277,21 +410,5 @@
WindowFrame = "{{723, 149}, {517, 249}}";
};
- PBXWorkspaceStateSaveDate = 88649579;
- };
- perUserProjectItems = {
- 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;
+ PBXWorkspaceStateSaveDate = 134264568;
};
sourceControlManager = E14C945E052A896100142529;
@@ -302,8 +419,8 @@
08FB7796FE84155DC02AAC07 = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {578, 13369}}";
- sepNavSelRange = "{3507, 26}";
- sepNavVisRect = "{{0, 996}, {578, 654}}";
- sepNavWindowFrame = "{{265, 76}, {725, 703}}";
+ sepNavIntBoundsRect = "{{0, 0}, {740, 11507}}";
+ sepNavSelRange = "{29214, 0}";
+ sepNavVisRect = "{{0, 8530}, {740, 660}}";
+ sepNavWindowFrame = "{{15, 43}, {755, 698}}";
};
};
@@ -314,129 +431,20 @@
);
};
- 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;
- sourceTree = "";
- };
- 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;
- sourceTree = "";
- };
- E11E9B950544EE9700045D4F = {
- isa = PBXFileReference;
- name = CFStringEncodingExt.h;
- path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFStringEncodingExt.h;
- refType = 0;
- sourceTree = "";
- };
- 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 = "";
- };
- 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 = "";
- };
- 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 = "";
- };
- 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 = "";
- };
E14C945E052A896100142529 = {
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 1;
isa = PBXSourceControlManager;
scmConfiguration = {
};
- scmType = scm.cvs;
+ scmType = scm.subversion;
};
E14C945F052A896100142529 = {
indexTemplatePath = "";
isa = PBXCodeSenseManager;
- usesDefaults = 1;
+ usesDefaults = 0;
wantsCodeCompletion = 1;
- wantsCodeCompletionAutoPopup = 0;
wantsCodeCompletionAutoSuggestions = 0;
wantsCodeCompletionCaseSensitivity = 1;
+ wantsCodeCompletionListAlways = 1;
wantsCodeCompletionOnlyMatchingItems = 1;
wantsCodeCompletionParametersIncluded = 1;
@@ -448,5 +456,5 @@
fileReference = 08FB7796FE84155DC02AAC07;
isa = PBXFileBreakpoint;
- lineNumber = 674;
+ lineNumber = 708;
state = 1;
};
@@ -463,107 +471,8 @@
name = "handle URL/file arguments";
rLen = 0;
- rLoc = 17962;
+ rLoc = 18094;
rType = 0;
vrLen = 1773;
vrLoc = 14523;
- };
- 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 = "";
- };
- E1A087CE0548746200594651 = {
- fRef = E11E9B940544EE9700045D4F;
- isa = PBXTextBookmark;
- name = "CFURL.h: CFURLGetFSRef";
- rLen = 58;
- rLoc = 18538;
- rType = 0;
- vrLen = 1812;
- 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 = 33144;
- 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 = 33157;
- 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 = 33280;
- 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;
- sourceTree = "";
- };
- E1A087D60548746200594651 = {
- isa = PBXFileReference;
- name = Files.h;
- path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/Files.h;
- refType = 0;
- sourceTree = "";
};
F561F49E0139D79101AEEDB1 = {
@@ -581,5 +490,9 @@
configStateDict = {
};
+ cppStopOnCatchEnabled = 0;
+ cppStopOnThrowEnabled = 0;
+ customDataFormattersEnabled = 1;
debuggerPlugin = GDBDebugging;
+ disassemblyDisplayState = 0;
dylibVariantSuffix = "";
enableDebugStr = 1;
@@ -587,4 +500,5 @@
);
isa = PBXExecutable;
+ libgmallocEnabled = 0;
name = launch;
shlibInfoDictList = (
@@ -595,8 +509,8 @@
F5C0CA9501B5740C01AEEDB1 = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {709, 3779}}";
- sepNavSelRange = "{7907, 0}";
- sepNavVisRect = "{{0, 3118}, {709, 443}}";
- sepNavWindowFrame = "{{38, 304}, {750, 502}}";
+ sepNavIntBoundsRect = "{{0, 0}, {735, 3479}}";
+ sepNavSelRange = "{8123, 0}";
+ sepNavVisRect = "{{0, 2798}, {735, 464}}";
+ sepNavWindowFrame = "{{130, 134}, {750, 502}}";
};
};
Index: trunk/launch/launch/launch.pbproj/project.pbxproj
===================================================================
--- trunk/launch/launch/launch.pbproj/project.pbxproj (revision 163)
+++ trunk/launch/launch/launch.pbproj/project.pbxproj (revision 166)
@@ -7,6 +7,4 @@
objects = {
014CEA490018CE3211CA2923 = {
- buildRules = (
- );
buildSettings = {
COPY_PHASE_STRIP = NO;
@@ -22,6 +20,4 @@
};
014CEA4A0018CE3211CA2923 = {
- buildRules = (
- );
buildSettings = {
COPY_PHASE_STRIP = YES;
@@ -43,7 +39,6 @@
//034
034768E2FF38A6DC11DB9C8B = {
- expectedFileType = "compiled.mach-o.executable";
- fallbackIsa = PBXFileReference;
- isa = PBXExecutableFileReference;
+ explicitFileType = "compiled.mach-o.executable";
+ isa = PBXFileReference;
path = launch;
refType = 3;
@@ -62,4 +57,6 @@
08FB7793FE84155DC02AAC07 = {
buildSettings = {
+ MACOSX_DEPLOYMENT_TARGET = 10.2;
+ SDKROOT = /Developer/SDKs/MacOSX10.2.8.sdk;
};
buildStyles = (
@@ -98,10 +95,11 @@
};
08FB7796FE84155DC02AAC07 = {
- expectedFileType = sourcecode.c.c;
fileEncoding = 30;
isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.c;
path = main.c;
refType = 4;
sourceTree = "";
+ tabWidth = 8;
};
08FB779DFE84155DC02AAC07 = {
@@ -197,7 +195,6 @@
//094
09AB6884FE841BABC02AAC07 = {
- expectedFileType = wrapper.framework;
- fallbackIsa = PBXFileReference;
- isa = PBXFrameworkReference;
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
name = CoreFoundation.framework;
path = /System/Library/Frameworks/CoreFoundation.framework;
@@ -241,7 +238,6 @@
//F54
F561F49F0139D7DD01AEEDB1 = {
- expectedFileType = wrapper.framework;
- fallbackIsa = PBXFileReference;
- isa = PBXFrameworkReference;
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
name = ApplicationServices.framework;
path = /System/Library/Frameworks/ApplicationServices.framework;
@@ -256,7 +252,7 @@
};
F574340B01B8A47B01AEEDB1 = {
- expectedFileType = text;
fileEncoding = 30;
isa = PBXFileReference;
+ lastKnownFileType = text;
path = VERSION;
refType = 4;
@@ -264,7 +260,6 @@
};
F579CF4B019A1C6D01AEEDB1 = {
- expectedFileType = wrapper.framework;
- fallbackIsa = PBXFileReference;
- isa = PBXFrameworkReference;
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
name = Security.framework;
path = /System/Library/Frameworks/Security.framework;
@@ -279,7 +274,7 @@
};
F5C0CA9501B5740C01AEEDB1 = {
- expectedFileType = text;
fileEncoding = 30;
isa = PBXFileReference;
+ lastKnownFileType = text;
path = README;
refType = 4;
@@ -287,7 +282,6 @@
};
F5E819BF0198DFF701AEEDB1 = {
- expectedFileType = wrapper.framework;
- fallbackIsa = PBXFileReference;
- isa = PBXFrameworkReference;
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
name = Carbon.framework;
path = /System/Library/Frameworks/Carbon.framework;
Index: trunk/launch/launch/main.c
===================================================================
--- trunk/launch/launch/main.c (revision 163)
+++ trunk/launch/launch/main.c (revision 166)
@@ -3,5 +3,5 @@
Nicholas Riley
- Copyright (c) 2001-03, Nicholas Riley
+ Copyright (c) 2001-05, Nicholas Riley
All rights reserved.
@@ -51,5 +51,5 @@
const char *APP_NAME;
-#define VERSION "1.0"
+#define VERSION "1.0.1"
#define STRBUF_LEN 1024
@@ -59,4 +59,5 @@
OSType creator;
CFStringRef bundleID, name;
+ Boolean forceURLs;
enum { ACTION_FIND, ACTION_FIND_ITEMS,
ACTION_OPEN, ACTION_OPEN_ITEMS,
@@ -64,5 +65,5 @@
} OPTS =
{
- kLSUnknownCreator, NULL, NULL,
+ kLSUnknownCreator, NULL, NULL, false,
ACTION_DEFAULT
};
@@ -87,4 +88,5 @@
{ -10827, "application package contains no executable, or an unusable executable" }, /* kLSNoExecutableErr, not defined in 10.2 */
{ -10828, "Classic environment required but not available" }, /* kLSNoClassicEnvironmentErr, not defined in 10.2 */
+ { -10829, "unable to launch multiple instances of application" }, /* kLSMultipleSessionsNotSupportedErr, not defined in 10.2 */
#ifndef BROKEN_AUTHORIZATION
// Security framework errors
@@ -97,4 +99,5 @@
{ icInternalErr, "internal Internet Config error" },
// Misc. errors
+ { nsvErr, "the volume cannot be found (buggy filesystem?)" },
{ procNotFound, "unable to connect to system service.\nAre you logged in?" },
{ kCGErrorIllegalArgument, "window server error.\nAre you logged in?" },
@@ -105,6 +108,6 @@
void usage() {
- fprintf(stderr, "usage: %s [-npswbmhCX] [-c creator] [-i bundleID] [-u URL] [-a name] [item ...] [-]\n"
- " or: %s [-npflswbmhCX] item ...\n", APP_NAME, APP_NAME);
+ fprintf(stderr, "usage: %s [-npswbmhCXU] [-c creator] [-i bundleID] [-u URL] [-a name] [item ...] [-]\n"
+ " or: %s [-npflswbmhCXU] item ...\n", APP_NAME, APP_NAME);
fprintf(stderr,
" -n print matching paths/URLs instead of opening them\n"
@@ -121,4 +124,5 @@
" -C force CFM/PEF Carbon application to launch in Classic\n"
" -X don't start Classic for this app if Classic isn't running\n"
+ " -U interpret items as URLs, even if same-named files exist\n"
" -c creator match application by four-character creator code ('ToyS')\n"
" -i bundle ID match application by bundle identifier (com.apple.scripteditor)\n"
@@ -127,5 +131,5 @@
"'document' may be a file, folder, or disk - whatever the application can open.\n"
"'item' may be a file, folder, disk, or URL.\n\n");
- fprintf(stderr, "launch "VERSION" (c) 2001-03 Nicholas Riley .\n"
+ fprintf(stderr, "launch "VERSION" (c) 2001-05 Nicholas Riley .\n"
"Please send bugs, suggestions, etc. to .\n");
@@ -341,5 +345,5 @@
if (argc == 1) usage();
- while ( (ch = getopt(argc, argv, "npflswbmhCXc:i:u:a:")) != -1) {
+ while ( (ch = getopt(argc, argv, "npflswbmhCXUc:i:u:a:")) != -1) {
switch (ch) {
case 'n':
@@ -384,4 +388,5 @@
case 'C': LSPEC.launchFlags |= kLSLaunchInClassic; break; // force Classic
case 'X': LSPEC.launchFlags ^= kLSLaunchStartClassic; break;// don't start Classic for app
+ case 'U': OPTS.forceURLs = true; break;
case 'c':
if (strlen(optarg) != 4) errexit("creator (argument of -c) must be four characters long");
@@ -390,13 +395,13 @@
break;
case 'i':
- OPTS.bundleID = CFStringCreateWithCString(NULL, optarg, CFStringGetSystemEncoding());
+ OPTS.bundleID = CFStringCreateWithCString(NULL, optarg, kCFStringEncodingUTF8);
appSpecified = true;
break;
case 'a':
- OPTS.name = CFStringCreateWithCString(NULL, optarg, CFStringGetSystemEncoding());
+ OPTS.name = CFStringCreateWithCString(NULL, optarg, kCFStringEncodingUTF8);
appSpecified = true;
break;
case 'u':
- { CFStringRef str = CFStringCreateWithCString(NULL, optarg, CFStringGetSystemEncoding());
+ { CFStringRef str = CFStringCreateWithCString(NULL, optarg, kCFStringEncodingUTF8);
LSPEC.appURL = CFURLCreateWithString(NULL, str, NULL);
if (str != NULL) CFRelease(str);
@@ -471,18 +476,23 @@
LSPEC.launchFlags ^= kLSLaunchAsync;
} else {
- argStr = CFStringCreateWithCString(NULL, argv[i], CFStringGetSystemEncoding());
- // check for URLs
- itemURL = normalizedURLFromString(argStr);
- if (itemURL == NULL && OPTS.action == ACTION_LAUNCH_URLS) {
- // check for email addresses
- if (strchr(argv[i], '@') != NULL && strchr(argv[i], '/') == NULL)
- itemURL = normalizedURLFromPrefixSlack(CFSTR("mailto:"), argStr);
- // check for "slack" URLs
- if (itemURL == NULL && strchr(argv[i], '.') != NULL && strchr(argv[i], '/') != argv[i])
- itemURL = normalizedURLFromPrefixSlack(CFSTR("http://"), argStr);
- }
+ struct stat stat_buf;
+ if (!OPTS.forceURLs && stat(argv[i], &stat_buf) == 0) {
+ itemURL = NULL;
+ } else {
+ argStr = CFStringCreateWithCString(NULL, argv[i], kCFStringEncodingUTF8);
+ // check for URLs
+ itemURL = normalizedURLFromString(argStr);
+ if (itemURL == NULL && OPTS.action == ACTION_LAUNCH_URLS) {
+ // check for email addresses
+ if (strchr(argv[i], '@') != NULL && strchr(argv[i], '/') == NULL)
+ itemURL = normalizedURLFromPrefixSlack(CFSTR("mailto:"), argStr);
+ // check for "slack" URLs
+ if (itemURL == NULL && strchr(argv[i], '.') != NULL && strchr(argv[i], '/') != argv[i])
+ itemURL = normalizedURLFromPrefixSlack(CFSTR("http://"), argStr);
+ }
+ }
if (itemURL == NULL) {
// check for file paths
- itemURL = CFURLCreateWithFileSystemPath(NULL, argStr, kCFURLPOSIXPathStyle, false);
+ itemURL = CFURLCreateFromFileSystemRepresentation(NULL, argv[i], strlen(argv[i]), false);
err = LSCopyItemInfoForURL(itemURL, kLSRequestExtensionFlagsOnly, &docInfo);
if (err != noErr) osstatusexit(err, "unable to locate '%s'", argv[i]);
@@ -496,22 +506,38 @@
}
+Boolean stringFromURLIsRemote(CFURLRef url, char *strBuffer) {
+ CFStringRef scheme = CFURLCopyScheme(url);
+ Boolean isRemote = !CFEqual(scheme, CFSTR("file"));
+ CFRelease(scheme);
+
+ strBuffer[0] = '\0';
+ if (isRemote) {
+ CFStringRef urlString = CFURLGetString(url);
+ CFStringGetCString(urlString, strBuffer, STRBUF_LEN, kCFStringEncodingUTF8);
+ CFRelease(urlString);
+ } else {
+ if (CFURLGetFileSystemRepresentation(url, false, strBuffer, STRBUF_LEN)) {
+ if (strBuffer[0] == '.' && strBuffer[1] == '/') {
+ // remove the leading "./"
+ char *fromBufPtr = strBuffer + 2;
+ while (true) {
+ *strBuffer = *fromBufPtr;
+ if (*fromBufPtr == '\0') break;
+ strBuffer++;
+ fromBufPtr++;
+ }
+ }
+ } else {
+ strcpy(strBuffer, "[can't get path: CFURLGetFileSystemRepresentation failed]");
+ }
+ }
+ return isRemote;
+}
+
void printPathFromURL(CFURLRef url, FILE *stream) {
- CFStringRef scheme, pathOrURL;
static char strBuffer[STRBUF_LEN];
-
check(url != NULL && stream != NULL);
-
- scheme = CFURLCopyScheme(url);
-
- if (CFEqual(scheme, CFSTR("file")))
- pathOrURL = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle);
- else
- pathOrURL = CFURLGetString(url);
-
- strBuffer[0] = '\0';
- CFStringGetCString(pathOrURL, strBuffer, STRBUF_LEN, CFStringGetSystemEncoding()); // XXX buffer size issues?
+ stringFromURLIsRemote(url, strBuffer);
fprintf(stream, "%s\n", strBuffer);
- CFRelease(scheme);
- CFRelease(pathOrURL);
}
@@ -582,5 +608,10 @@
if (fscInfo.nodeFlags & kFSNodeIsDirectoryMask) {
- printf("\tcontents: %lu item%s\n", fscInfo.valence, fscInfo.valence != 1 ? "s" : "");
+ printf("\tcontents: ");
+ switch (fscInfo.valence) {
+ case 0: printf("zero items\n"); break;
+ case 1: printf("1 item\n"); break;
+ default: printf("%lu items\n", fscInfo.valence);
+ }
} else {
printSizes("data fork size", fscInfo.dataLogicalSize, fscInfo.dataPhysicalSize, true);
@@ -605,26 +636,37 @@
}
+const char *utf8StringFromCFStringRef(CFStringRef cfStr) {
+ static char tmpBuffer[STRBUF_LEN];
+ CFStringGetCString(cfStr, tmpBuffer, STRBUF_LEN, kCFStringEncodingUTF8);
+ return tmpBuffer;
+}
+
+const char *utf8StringFromOSType(OSType osType) {
+ CFStringRef typeStr = CFStringCreateWithBytes(NULL, (const char *)&osType, 4, CFStringGetSystemEncoding(), false);
+ if (typeStr == NULL) {
+ // punt to displaying verbatim
+ static char tmpBuffer[4];
+ tmpBuffer[4] = '\0';
+ strncpy(tmpBuffer, (const char *)&osType, 4);
+ return tmpBuffer;
+ }
+ const char *buffer = utf8StringFromCFStringRef(typeStr);
+ CFRelease(typeStr);
+ return buffer;
+}
+
// 'context' is to match prototype for CFArrayApplierFunction, it's unused
void printInfoFromURL(CFURLRef url, void *context) {
- CFStringRef scheme, pathOrURL, kind;
- Boolean isRemote;
- static char strBuffer[STRBUF_LEN], tmpBuffer[STRBUF_LEN];
+ CFStringRef kind;
+ static char strBuffer[STRBUF_LEN];
check(url != NULL && context == NULL);
- scheme = CFURLCopyScheme(url);
-
- isRemote = !CFEqual(scheme, CFSTR("file"));
- if (isRemote)
- pathOrURL = CFURLGetString(url);
- else
- pathOrURL = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle);
-
- strBuffer[0] = '\0';
- CFStringGetCString(pathOrURL, strBuffer, STRBUF_LEN, CFStringGetSystemEncoding()); // XXX buffer size issues?
- if (isRemote)
+ if (stringFromURLIsRemote(url, strBuffer))
printf("<%s>: URL\n", strBuffer);
else {
static LSItemInfoRecord info;
+ CFStringRef version = NULL;
+ UInt32 intVersion = 0;
OSStatus err = LSCopyItemInfoForURL(url, kLSRequestAllInfo, &info);
if (err != noErr) osstatusexit(err, "unable to get information about '%s'", strBuffer);
@@ -655,7 +697,6 @@
printf("\n");
if (!(info.flags & kLSItemInfoIsContainer) || info.flags & kLSItemInfoIsPackage) {
- tmpBuffer[4] = '\0';
- strncpy(tmpBuffer, (char *)&info.filetype, 4); printf("\ttype: '%s'", tmpBuffer);
- strncpy(tmpBuffer, (char *)&info.creator, 4); printf("\tcreator: '%s'\n", tmpBuffer);
+ printf("\ttype: '%s'", utf8StringFromOSType(info.filetype));
+ printf("\tcreator: '%s'\n", utf8StringFromOSType(info.creator));
}
if (info.flags & kLSItemInfoIsPackage || info.flags & kLSItemInfoIsApplication) {
@@ -663,6 +704,4 @@
CFBundleRef bundle = CFBundleCreate(NULL, url);
CFStringRef bundleID = NULL;
- CFStringRef appVersion = NULL;
- UInt32 intVersion = 0;
if (bundle == NULL && (info.flags & kLSItemInfoIsApplication)) {
FSRef fsr;
@@ -683,10 +722,12 @@
CFPropertyListRef infoPlist = CFPropertyListCreateFromXMLData(NULL, plstData, kCFPropertyListImmutable, &error);
if (plstData != NULL) {
- CFRelease(plstData);
- plstData = NULL;
+ CFRelease(plstData);
+ plstData = NULL;
+ } else {
+ // this function should handle the 'plst' 0 case too, but it doesn't provide error messages; however, it handles the case of an unbundled Mach-O binary, so it is useful as a fallback
+ infoPlist = CFBundleCopyInfoDictionaryForURL(url);
}
if (infoPlist == NULL) {
- CFStringGetCString(error, tmpBuffer, STRBUF_LEN, CFStringGetSystemEncoding());
- printf("\t['plst' 0 resource invalid: %s]\n", tmpBuffer);
+ printf("\t['plst' 0 resource invalid: %s]\n", utf8StringFromCFStringRef(error));
CFRelease(error);
} else {
@@ -694,8 +735,8 @@
bundleID = CFDictionaryGetValue(infoPlist, kCFBundleIdentifierKey);
if (bundleID != NULL) CFRetain(bundleID);
- appVersion = CFDictionaryGetValue(infoPlist, CFSTR("CFBundleShortVersionString"));
- if (appVersion == NULL)
- appVersion = CFDictionaryGetValue(infoPlist, kCFBundleVersionKey);
- if (appVersion != NULL) CFRetain(appVersion);
+ version = CFDictionaryGetValue(infoPlist, CFSTR("CFBundleShortVersionString"));
+ if (version == NULL)
+ version = CFDictionaryGetValue(infoPlist, kCFBundleVersionKey);
+ if (version != NULL) CFRetain(version);
CFRelease(infoPlist);
}
@@ -705,6 +746,6 @@
if (err != noErr && err != resNotFound) osstatusexit(err, "unable to read 'vers' 1 resource");
} else {
- if (appVersion == NULL) { // prefer 'plst' version
- appVersion = CFStringCreateWithPascalString(NULL, vers[0]->shortVersion, CFStringGetSystemEncoding()); // XXX use country code instead?
+ if (version == NULL) { // prefer 'plst' version
+ version = CFStringCreateWithPascalString(NULL, vers[0]->shortVersion, CFStringGetSystemEncoding()); // XXX use country code instead?
}
intVersion = ((NumVersionVariant)vers[0]->numericVersion).whole;
@@ -717,9 +758,9 @@
if (bundleID != NULL) CFRetain(bundleID);
// prefer a short version string, e.g. "1.0 Beta" instead of "51" for Safari
- appVersion = CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("CFBundleShortVersionString"));
- if (appVersion == NULL)
- appVersion = CFBundleGetValueForInfoDictionaryKey(bundle, kCFBundleVersionKey);
- if (appVersion != NULL) {
- CFRetain(appVersion);
+ version = CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("CFBundleShortVersionString"));
+ if (version == NULL)
+ version = CFBundleGetValueForInfoDictionaryKey(bundle, kCFBundleVersionKey);
+ if (version != NULL) {
+ CFRetain(version);
intVersion = CFBundleGetVersionNumber(bundle);
}
@@ -727,27 +768,37 @@
}
if (bundleID != NULL) {
- CFStringGetCString(bundleID, tmpBuffer, STRBUF_LEN, CFStringGetSystemEncoding());
- printf("\tbundle ID: %s\n", tmpBuffer);
+ printf("\tbundle ID: %s\n", utf8StringFromCFStringRef(bundleID));
CFRelease(bundleID);
}
- if (appVersion != NULL) {
- CFStringGetCString(appVersion, tmpBuffer, STRBUF_LEN, CFStringGetSystemEncoding());
- printf("\tversion: %s", tmpBuffer);
- if (intVersion != 0) printf(" [0x%lx = %lu]", intVersion, intVersion);
- putchar('\n');
- CFRelease(appVersion);
- }
- }
-
+ } else {
+ // try to get a version if we can, but don't complain if we can't
+ FSRef fsr;
+ if (CFURLGetFSRef(url, &fsr)) {
+ SInt16 resFork = FSOpenResFile(&fsr, fsRdPerm);
+ if (ResError() == noErr) {
+ VersRecHndl vers = (VersRecHndl)Get1Resource('vers', 1);
+ if (ResError() == noErr && vers != NULL) {
+ version = CFStringCreateWithPascalString(NULL, vers[0]->shortVersion, CFStringGetSystemEncoding()); // XXX use country code instead?
+ intVersion = ((NumVersionVariant)vers[0]->numericVersion).whole;
+ }
+ }
+ CloseResFile(resFork);
+ }
+ }
+
+ if (version != NULL) {
+ printf("\tversion: %s", utf8StringFromCFStringRef(version));
+ if (intVersion != 0) printf(" [0x%lx = %lu]", intVersion, intVersion);
+ putchar('\n');
+ CFRelease(version);
+ }
+
// kind string
err = LSCopyKindStringForURL(url, &kind);
if (err != noErr) osstatusexit(err, "unable to get kind of '%s'", strBuffer);
- CFStringGetCString(kind, tmpBuffer, STRBUF_LEN, CFStringGetSystemEncoding());
- printf("\tkind: %s\n", tmpBuffer);
+ printf("\tkind: %s\n", utf8StringFromCFStringRef(kind));
CFRelease(kind);
printMoreInfoFromURL(url);
}
- CFRelease(scheme);
- CFRelease(pathOrURL);
}
@@ -760,5 +811,5 @@
strBuffer[0] = '\0';
- CFStringGetCString(urlStr, strBuffer, STRBUF_LEN, CFStringGetSystemEncoding()); // XXX buffer size issues?
+ CFStringGetCString(urlStr, strBuffer, STRBUF_LEN, CFStringGetSystemEncoding()); // XXX no idea what encoding ICLaunchURL is supposed to take; leave as is for now
strStart = 0;
strEnd = strlen(strBuffer);
Index: trunk/launch/package-launch.sh
===================================================================
--- trunk/launch/package-launch.sh (revision 163)
+++ trunk/launch/package-launch.sh (revision 166)
@@ -1,3 +1,3 @@
-#!/bin/sh
+#!/bin/zsh
set -x -v
@@ -5,9 +5,11 @@
cd launch && \
find . -name \*~ -exec rm '{}' \; && \
-xcodebuild && \
+xcodebuild -buildstyle Deployment && \
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 && \
+chmod 755 build/launch && \
+chmod 644 launch.1 && \
rm -rf build/launch.build build/intermediates build/.gdb_history && \
VERSION=`cat VERSION` TARBALL="launch-$VERSION.tar.gz" && \
@@ -16,5 +18,5 @@
rm -f launch-$VERSION $TARBALL $DMG && \
ln -s launch launch-$VERSION && \
-tar --exclude=.DS_Store --exclude=.svn --exclude=.gdb_history -zchf launch-$VERSION.tar.gz launch-$VERSION && \
+tar --owner=root --group=wheel --exclude=.DS_Store --exclude=.svn --exclude=.gdb_history -zchf launch-$VERSION.tar.gz launch-$VERSION && \
#hdiutil create $DMG -megabytes 5 -ov -type UDIF && \
#DISK=`hdid $DMG | sed -ne ' /Apple_partition_scheme/ s|^/dev/\([^ ]*\).*$|\1|p'` && \