Repository: karelia/ConnectionKit
Branch: v2.x-beta
Commit: 2d7235aa7e13
Files: 292
Total size: 2.7 MB
Directory structure:
gitextract_rey4k_n1/
├── .appledoc.plist
├── .gitignore
├── .gitmodules
├── AuthTester/
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── AuthTester-Info.plist
│ ├── AuthTester-Prefix.pch
│ ├── en.lproj/
│ │ ├── Credits.rtf
│ │ ├── InfoPlist.strings
│ │ └── MainMenu.xib
│ └── main.m
├── Connection-Info.plist
├── Connection.svxSite
├── Connection.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ └── contents.xcworkspacedata
│ └── xcshareddata/
│ └── xcschemes/
│ └── ConnectionKit.xcscheme
├── ConnectionKit/
│ ├── CK2Authentication.h
│ ├── CK2Authentication.m
│ ├── CK2BrowserPreviewController.h
│ ├── CK2BrowserPreviewController.m
│ ├── CK2BrowserPreviewView.h
│ ├── CK2BrowserPreviewView.m
│ ├── CK2CURLBasedProtocol.h
│ ├── CK2CURLBasedProtocol.m
│ ├── CK2CurlTransferStackManager.h
│ ├── CK2CurlTransferStackManager.m
│ ├── CK2FTPProtocol.h
│ ├── CK2FTPProtocol.m
│ ├── CK2FileCell.h
│ ├── CK2FileCell.m
│ ├── CK2FileManager.h
│ ├── CK2FileManager.m
│ ├── CK2FileManagerWithTestSupport.h
│ ├── CK2FileManagerWithTestSupport.m
│ ├── CK2FileOperation.h
│ ├── CK2FileOperation.m
│ ├── CK2FileOperationWithTestSupport.h
│ ├── CK2FileOperationWithTestSupport.m
│ ├── CK2FileProtocol.h
│ ├── CK2FileProtocol.m
│ ├── CK2FileSizeFormatter.h
│ ├── CK2FileSizeFormatter.m
│ ├── CK2IconItemView.h
│ ├── CK2IconItemView.m
│ ├── CK2IconView.h
│ ├── CK2IconView.m
│ ├── CK2IconViewItem.h
│ ├── CK2IconViewItem.m
│ ├── CK2NewFolderWindowController.h
│ ├── CK2NewFolderWindowController.m
│ ├── CK2OpenPanel.h
│ ├── CK2OpenPanel.m
│ ├── CK2OpenPanelColumnViewController.h
│ ├── CK2OpenPanelColumnViewController.m
│ ├── CK2OpenPanelController.h
│ ├── CK2OpenPanelController.m
│ ├── CK2OpenPanelIconViewController.h
│ ├── CK2OpenPanelIconViewController.m
│ ├── CK2OpenPanelListViewController.h
│ ├── CK2OpenPanelListViewController.m
│ ├── CK2OpenPanelViewController.h
│ ├── CK2OpenPanelViewController.m
│ ├── CK2PathControl.h
│ ├── CK2PathControl.m
│ ├── CK2PathFieldWindowController.h
│ ├── CK2PathFieldWindowController.m
│ ├── CK2Protocol.h
│ ├── CK2Protocol.m
│ ├── CK2SFTPProtocol.h
│ ├── CK2SFTPProtocol.m
│ ├── CK2WebDAVProtocol.h
│ ├── CK2WebDAVProtocol.m
│ ├── CKConnectionProtocol.h
│ ├── CKS3Connection.h
│ ├── CKS3Connection.m
│ ├── CKTransferProgressCell.h
│ ├── CKTransferProgressCell.m
│ ├── CKTransferRecord.h
│ ├── CKTransferRecord.m
│ ├── CKUploader.h
│ ├── CKUploader.m
│ ├── ConnectionKit.h
│ ├── ConnectionTest.h
│ ├── ConnectionTest.m
│ ├── Connection_Prefix.pch
│ ├── NSImage+CK2OpenPanel.h
│ ├── NSImage+CK2OpenPanel.m
│ ├── NSURL+CK2OpenPanel.h
│ ├── NSURL+CK2OpenPanel.m
│ ├── en.lproj/
│ │ ├── CK2FilePreview.xib
│ │ ├── CK2NewFolderWindow.xib
│ │ ├── CK2OpenPanel.xib
│ │ └── CK2PathFieldWindow.xib
│ └── main.m
├── ConnectionKit 2.graffle
├── ConnectionKit.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ └── ConnectionKit.xccheckout
├── ConnectionKitUI/
│ ├── ConnectionKitUI-Info.plist
│ ├── ConnectionKitUI-Prefix.pch
│ ├── ConnectionKitUI.h
│ └── en.lproj/
│ └── InfoPlist.strings
├── Documentation/
│ └── Standard Errors.md
├── Example/
│ ├── Connection-Info.plist
│ ├── Connection.svxSite
│ ├── ConnectionApp.xcodeproj/
│ │ └── project.pbxproj
│ ├── ConnectionTest.h
│ ├── ConnectionTest.m
│ ├── Connection_Prefix.pch
│ ├── Controller.h
│ ├── Controller.m
│ ├── DropletController.h
│ ├── DropletController.m
│ ├── DropletHelper-Info.plist
│ ├── DropletIcon.icns
│ ├── DropletLauncher.m
│ ├── DropletMain.m
│ ├── DropletOutlineView.h
│ ├── DropletOutlineView.m
│ ├── DropletPanel.h
│ ├── DropletPanel.m
│ ├── FileTransfer.h
│ ├── FileTransfer.m
│ ├── Framework Debug.xcconfig
│ ├── Framework Release.xcconfig
│ ├── Framework-Info.plist
│ ├── InputDialog.h
│ ├── InputDialog.m
│ ├── KTLog Viewer-Info.plist
│ ├── KTLogController.h
│ ├── KTLogController.m
│ ├── LeopardFolder.tiff
│ ├── Logs.icns
│ ├── ONBSSLContext.h
│ ├── ONBSSLContext.m
│ ├── ONBSSLIdentity.h
│ ├── ONBSSLIdentity.m
│ ├── PermissionsController.h
│ ├── PermissionsController.m
│ ├── ProgressCell.h
│ ├── ProgressCell.m
│ ├── README
│ ├── ReleaseNotes.txt
│ ├── Stop.tiff
│ ├── UKKQueue_Symbols
│ ├── channel.c
│ ├── comp.c
│ ├── connect.tiff
│ ├── console.tiff
│ ├── crypt.c
│ ├── da.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── de.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── delete.tiff
│ ├── download.tif
│ ├── en.lproj/
│ │ ├── Droplet.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ ├── InputDialog.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── KTLogViewer.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── Localizable.strings
│ │ ├── MainMenu.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ ├── keyedobjects.nib
│ │ │ └── objects.nib
│ │ └── Permissions.nib/
│ │ ├── classes.nib
│ │ ├── info.nib
│ │ └── keyedobjects.nib
│ ├── fr.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── home.tiff
│ ├── hostkey.c
│ ├── icon.icns
│ ├── it.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── ja.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── kex.c
│ ├── ktlogviewer_main.m
│ ├── libssh2.h
│ ├── libssh2_config.h
│ ├── libssh2_priv.h
│ ├── libssh2_publickey.h
│ ├── libssh2_sftp.h
│ ├── lock.tiff
│ ├── mac.c
│ ├── main.m
│ ├── misc.c
│ ├── openssl.c
│ ├── openssl.h
│ ├── packet.c
│ ├── pem.c
│ ├── publickey.c
│ ├── redo.tif
│ ├── scp.c
│ ├── session.c
│ ├── sftp.c
│ ├── symlink_file.tif
│ ├── symlink_folder.tif
│ ├── upload.tif
│ ├── userauth.c
│ ├── version.plist
│ ├── zh_CN.lproj/
│ │ ├── DropletLauncher.nib/
│ │ │ ├── classes.nib
│ │ │ ├── info.nib
│ │ │ └── keyedobjects.nib
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ └── zh_TW.lproj/
│ ├── DropletLauncher.nib/
│ │ ├── classes.nib
│ │ ├── info.nib
│ │ └── keyedobjects.nib
│ ├── InfoPlist.strings
│ └── Localizable.strings
├── Framework Debug.xcconfig
├── Framework Release.xcconfig
├── ProfilingTester/
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── ProfilingTester-Info.plist
│ ├── ProfilingTester-Prefix.pch
│ ├── en.lproj/
│ │ ├── Credits.rtf
│ │ ├── InfoPlist.strings
│ │ └── MainMenu.xib
│ └── main.m
├── README.md
├── Resources/
│ ├── Framework-Info.plist
│ ├── bookmark.tif
│ ├── da.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── de.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── en.lproj/
│ │ └── Localizable.strings
│ ├── es.lproj/
│ │ └── Localizable.strings
│ ├── fr.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── it.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── ja.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ ├── pt_BR.lproj/
│ │ └── Localizable.strings
│ ├── zh_CN.lproj/
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ └── zh_TW.lproj/
│ ├── InfoPlist.strings
│ └── Localizable.strings
├── UKQueue/
│ └── UKKQueue_Symbols
├── UnitTests/
│ ├── BaseCKProtocolTests.h
│ ├── BaseCKProtocolTests.m
│ ├── BaseCKTests.h
│ ├── BaseCKTests.m
│ ├── CKUploaderTests.m
│ ├── ErrorTests.m
│ ├── FTPAuthenticationTests.m
│ ├── FTPTests.m
│ ├── FileTests.m
│ ├── PathTests.m
│ ├── README.md
│ ├── SFTPTests.m
│ ├── URLAppendingTests.m
│ ├── URLCanonicalizationTests.m
│ ├── URLDirectoryTests.m
│ ├── URLTests.m
│ ├── URLs.testdata
│ ├── UnitTest-Info.plist
│ ├── UnitTests_Prefix.pch
│ ├── WebDAVTests.m
│ ├── test.sh
│ ├── use-ftp-server.sh
│ ├── use-mockserver.sh
│ ├── use-sftp-server.sh
│ └── use-webdav-server.sh
└── version.plist
================================================
FILE CONTENTS
================================================
================================================
FILE: .appledoc.plist
================================================
--include
Documentation
--ignore
CurlHandle
DAVKit
AuthTester
Example
ProfilingTester
UKQueue
.git
.gitmodules
.gitignore
--index-desc
README.md
--logformat
xcode
--exit-threshold
2
--explicit-crossref
--project-company
Karelia Systems
--company-id
com.karelia
--keep-undocumented-members
--keep-undocumented-objects
--merge-categories
--keep-merged-sections
--prefix-merged-sections
================================================
FILE: .gitignore
================================================
# Mac OS X
*.DS_Store
# Xcode
build
profile
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
xcuserdata/
================================================
FILE: .gitmodules
================================================
[submodule "DAVKit"]
path = DAVKit
url = https://github.com/karelia/DAVKit.git
[submodule "CurlHandle"]
path = CurlHandle
url = https://github.com/karelia/CurlHandle.git
================================================
FILE: AuthTester/AppDelegate.h
================================================
//
// AppDelegate.h
// AuthTester
//
// Created by Mike on 01/02/2013.
//
//
#import
@interface AppDelegate : NSObject
@property (assign) IBOutlet NSWindow *window;
@end
================================================
FILE: AuthTester/AppDelegate.m
================================================
//
// AppDelegate.m
// AuthTester
//
// Created by Mike on 01/02/2013.
//
//
#import "AppDelegate.h"
@implementation AppDelegate
- (void)dealloc
{
[super dealloc];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://tv.eurosport.com/"]]
delegate:self];
}
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
{
NSLog(@"challenge error: %@", challenge.error);
[[challenge sender] performDefaultHandlingForAuthenticationChallenge:challenge];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
{
[NSApp presentError:error modalForWindow:self.window delegate:nil didPresentSelector:NULL contextInfo:NULL];
}
@end
================================================
FILE: AuthTester/AuthTester-Info.plist
================================================
CFBundleDevelopmentRegion
en
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundleName
${PRODUCT_NAME}
CFBundlePackageType
APPL
CFBundleShortVersionString
1.0
CFBundleSignature
????
CFBundleVersion
1
LSMinimumSystemVersion
${MACOSX_DEPLOYMENT_TARGET}
NSMainNibFile
MainMenu
NSPrincipalClass
NSApplication
================================================
FILE: AuthTester/AuthTester-Prefix.pch
================================================
//
// Prefix header for all source files of the 'AuthTester' target in the 'AuthTester' project
//
#ifdef __OBJC__
#import
#endif
================================================
FILE: AuthTester/en.lproj/Credits.rtf
================================================
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
================================================
FILE: AuthTester/en.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */
================================================
FILE: AuthTester/en.lproj/MainMenu.xib
================================================
1080
11D50
2457
1138.32
568.00
NSWindowTemplate
NSView
NSMenu
NSMenuItem
NSCustomObject
com.apple.InterfaceBuilder.CocoaPlugin
AppDelegate
NSFontManager
terminate:
449
orderFrontStandardAboutPanel:
142
delegate
495
performMiniaturize:
37
arrangeInFront:
39
print:
86
runPageLayout:
87
clearRecentDocuments:
127
performClose:
193
toggleContinuousSpellChecking:
222
undo:
223
copy:
224
checkSpelling:
225
paste:
226
stopSpeaking:
227
cut:
228
showGuessPanel:
230
redo:
231
selectAll:
232
startSpeaking:
233
delete:
235
performZoom:
240
performFindPanelAction:
241
centerSelectionInVisibleArea:
245
toggleGrammarChecking:
347
toggleSmartInsertDelete:
355
toggleAutomaticQuoteSubstitution:
356
toggleAutomaticLinkDetection:
357
saveDocument:
362
revertDocumentToSaved:
364
runToolbarCustomizationPalette:
365
toggleToolbarShown:
366
hide:
367
hideOtherApplications:
368
unhideAllApplications:
370
newDocument:
373
openDocument:
374
raiseBaseline:
426
lowerBaseline:
427
copyFont:
428
subscript:
429
superscript:
430
tightenKerning:
431
underline:
432
orderFrontColorPanel:
433
useAllLigatures:
434
loosenKerning:
435
pasteFont:
436
unscript:
437
useStandardKerning:
438
useStandardLigatures:
439
turnOffLigatures:
440
turnOffKerning:
441
toggleAutomaticSpellingCorrection:
456
orderFrontSubstitutionsPanel:
458
toggleAutomaticDashSubstitution:
461
toggleAutomaticTextReplacement:
463
uppercaseWord:
464
capitalizeWord:
467
lowercaseWord:
468
pasteAsPlainText:
486
performFindPanelAction:
487
performFindPanelAction:
488
performFindPanelAction:
489
showHelp:
493
alignCenter:
518
pasteRuler:
519
toggleRuler:
520
alignRight:
521
copyRuler:
522
alignJustified:
523
alignLeft:
524
makeBaseWritingDirectionNatural:
525
makeBaseWritingDirectionLeftToRight:
526
makeBaseWritingDirectionRightToLeft:
527
makeTextWritingDirectionNatural:
528
makeTextWritingDirectionLeftToRight:
529
makeTextWritingDirectionRightToLeft:
530
performFindPanelAction:
535
addFontTrait:
421
addFontTrait:
422
modifyFont:
423
orderFrontFontPanel:
424
modifyFont:
425
window
532
0
-2
File's Owner
-1
First Responder
-3
Application
29
19
56
217
83
81
75
78
72
82
124
77
73
79
112
74
125
126
205
202
198
207
214
199
203
197
206
215
218
216
200
219
201
204
220
213
210
221
208
209
57
58
134
150
136
144
129
143
236
131
149
145
130
24
92
5
239
23
295
296
297
298
211
212
195
196
346
348
349
350
351
354
371
372
375
376
377
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
450
451
452
453
454
457
459
460
462
465
466
485
490
491
492
494
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
534
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
{{380, 496}, {480, 360}}
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
535
ABCardController
NSObject
id
id
id
id
id
id
id
addCardViewField:
id
copy:
id
cut:
id
doDelete:
id
find:
id
paste:
id
saveChanges:
id
ABCardView
NSButton
NSManagedObjectContext
NSSearchField
NSTextField
NSWindow
mCardView
ABCardView
mEditButton
NSButton
mManagedObjectContext
NSManagedObjectContext
mSearchField
NSSearchField
mStatusTextField
NSTextField
mWindow
NSWindow
IBProjectSource
./Classes/ABCardController.h
ABCardView
NSView
id
id
commitAndSave:
id
statusImageClicked:
id
NSObjectController
NSImageView
NSView
ABNameFrameView
NSView
NSImage
ABImageView
mBindingsController
NSObjectController
mBuddyStatusImage
NSImageView
mHeaderView
NSView
mNameView
ABNameFrameView
mNextKeyView
NSView
mUserImage
NSImage
mUserImageView
ABImageView
IBProjectSource
./Classes/ABCardView.h
ABImageView
NSImageView
id
id
id
id
copy:
id
cut:
id
delete:
id
paste:
id
IBProjectSource
./Classes/ABImageView.h
DVTBorderedView
DVTLayoutView_ML
contentView
NSView
contentView
contentView
NSView
IBProjectSource
./Classes/DVTBorderedView.h
DVTDelayedMenuButton
NSButton
IBProjectSource
./Classes/DVTDelayedMenuButton.h
DVTGradientImageButton
NSButton
IBProjectSource
./Classes/DVTGradientImageButton.h
DVTImageAndTextCell
NSTextFieldCell
IBProjectSource
./Classes/DVTImageAndTextCell.h
DVTImageAndTextColumn
NSTableColumn
IBProjectSource
./Classes/DVTImageAndTextColumn.h
DVTLayoutView_ML
NSView
IBProjectSource
./Classes/DVTLayoutView_ML.h
DVTOutlineView
NSOutlineView
IBProjectSource
./Classes/DVTOutlineView.h
DVTSplitView
NSSplitView
IBProjectSource
./Classes/DVTSplitView.h
DVTStackView_ML
DVTLayoutView_ML
IBProjectSource
./Classes/DVTStackView_ML.h
DVTTableView
NSTableView
IBProjectSource
./Classes/DVTTableView.h
DVTViewController
NSViewController
IBProjectSource
./Classes/DVTViewController.h
HFController
NSObject
selectAll:
id
selectAll:
selectAll:
id
IBProjectSource
./Classes/HFController.h
HFRepresenterTextView
NSView
selectAll:
id
selectAll:
selectAll:
id
IBProjectSource
./Classes/HFRepresenterTextView.h
IBEditor
NSObject
id
id
id
id
id
changeFont:
id
performCopy:
id
performCut:
id
selectAll:
id
sizeSelectionToFit:
id
IBProjectSource
./Classes/IBEditor.h
IDECapsuleListView
DVTStackView_ML
dataSource
id
dataSource
dataSource
id
IBProjectSource
./Classes/IDECapsuleListView.h
IDEDMArrayController
NSArrayController
IBProjectSource
./Classes/IDEDMArrayController.h
IDEDMEditor
IDEEditor
DVTBorderedView
NSView
IDEDMEditorSourceListController
DVTSplitView
bottomToolbarBorderView
DVTBorderedView
sourceListSplitViewPane
NSView
sourceListViewController
IDEDMEditorSourceListController
splitView
DVTSplitView
IBProjectSource
./Classes/IDEDMEditor.h
IDEDMEditorController
IDEViewController
IBProjectSource
./Classes/IDEDMEditorController.h
IDEDMEditorSourceListController
IDEDMEditorController
DVTBorderedView
IDEDMEditor
DVTImageAndTextColumn
DVTOutlineView
NSTreeController
borderedView
DVTBorderedView
parentEditor
IDEDMEditor
primaryColumn
DVTImageAndTextColumn
sourceListOutlineView
DVTOutlineView
sourceListTreeController
NSTreeController
IBProjectSource
./Classes/IDEDMEditorSourceListController.h
IDEDMHighlightImageAndTextCell
DVTImageAndTextCell
IBProjectSource
./Classes/IDEDMHighlightImageAndTextCell.h
IDEDataModelBrowserEditor
IDEDMEditorController
IDEDataModelPropertiesTableController
IDECapsuleListView
NSArrayController
IDEDataModelPropertiesTableController
IDEDataModelEntityContentsEditor
IDEDataModelPropertiesTableController
attributesTableViewController
IDEDataModelPropertiesTableController
capsuleView
IDECapsuleListView
entityArrayController
NSArrayController
fetchedPropertiesTableViewController
IDEDataModelPropertiesTableController
parentEditor
IDEDataModelEntityContentsEditor
relationshipsTableViewController
IDEDataModelPropertiesTableController
IBProjectSource
./Classes/IDEDataModelBrowserEditor.h
IDEDataModelConfigurationEditor
IDEDMEditorController
IDECapsuleListView
IDEDataModelEditor
IDEDataModelConfigurationTableController
capsuleListView
IDECapsuleListView
parentEditor
IDEDataModelEditor
tableController
IDEDataModelConfigurationTableController
IBProjectSource
./Classes/IDEDataModelConfigurationEditor.h
IDEDataModelConfigurationTableController
IDEDMEditorController
NSArrayController
NSArrayController
IDEDataModelConfigurationEditor
XDTableView
configurationsArrayController
NSArrayController
entitiesArrayController
NSArrayController
parentEditor
IDEDataModelConfigurationEditor
tableView
XDTableView
IBProjectSource
./Classes/IDEDataModelConfigurationTableController.h
IDEDataModelDiagramEditor
IDEDMEditorController
XDDiagramView
IDEDataModelEntityContentsEditor
diagramView
XDDiagramView
parentEditor
IDEDataModelEntityContentsEditor
IBProjectSource
./Classes/IDEDataModelDiagramEditor.h
IDEDataModelEditor
IDEDMEditor
DVTDelayedMenuButton
DVTDelayedMenuButton
NSSegmentedControl
IDEDataModelConfigurationEditor
IDEDataModelEntityContentsEditor
IDEDataModelFetchRequestEditor
NSSegmentedControl
NSTabView
addEntityButton
DVTDelayedMenuButton
addPropertyButton
DVTDelayedMenuButton
browserDiagramSegmentControl
NSSegmentedControl
configurationViewController
IDEDataModelConfigurationEditor
entityContentsViewController
IDEDataModelEntityContentsEditor
fetchRequestViewController
IDEDataModelFetchRequestEditor
hierarchySegmentControl
NSSegmentedControl
tabView
NSTabView
IBProjectSource
./Classes/IDEDataModelEditor.h
IDEDataModelEntityContentsEditor
IDEDMEditorController
IDEDataModelBrowserEditor
IDEDataModelDiagramEditor
IDEDataModelEditor
NSTabView
browserViewController
IDEDataModelBrowserEditor
diagramViewController
IDEDataModelDiagramEditor
parentEditor
IDEDataModelEditor
tabView
NSTabView
IBProjectSource
./Classes/IDEDataModelEntityContentsEditor.h
IDEDataModelFetchRequestEditor
IDEDMEditorController
NSArrayController
IDEDataModelEditor
IDECapsuleListView
entityController
NSArrayController
parentEditor
IDEDataModelEditor
tableView
IDECapsuleListView
IBProjectSource
./Classes/IDEDataModelFetchRequestEditor.h
IDEDataModelPropertiesTableController
IDEDMEditorController
IDEDMArrayController
NSTableColumn
NSArrayController
IDEDataModelBrowserEditor
IDEDMHighlightImageAndTextCell
XDTableView
arrayController
IDEDMArrayController
entitiesColumn
NSTableColumn
entityArrayController
NSArrayController
parentEditor
IDEDataModelBrowserEditor
propertyNameAndImageCell
IDEDMHighlightImageAndTextCell
tableView
XDTableView
IBProjectSource
./Classes/IDEDataModelPropertiesTableController.h
IDEDocDownloadsTableViewController
NSObject
NSButtonCell
DVTTableView
IDEDocViewingPrefPaneController
_downloadButtonCell
NSButtonCell
_tableView
DVTTableView
prefPaneController
IDEDocViewingPrefPaneController
IBProjectSource
./Classes/IDEDocDownloadsTableViewController.h
IDEDocSetOutlineView
NSOutlineView
IBProjectSource
./Classes/IDEDocSetOutlineView.h
IDEDocSetOutlineViewController
NSObject
id
id
id
id
id
getDocSetAction:
id
showProblemInfoForUpdate:
id
subscribeToPublisherAction:
id
unsubscribeFromPublisher:
id
updateDocSetAction:
id
docSetOutlineView
IDEDocSetOutlineView
docSetOutlineView
docSetOutlineView
IDEDocSetOutlineView
IBProjectSource
./Classes/IDEDocSetOutlineViewController.h
IDEDocViewingPrefPaneController
IDEViewController
id
id
id
id
id
id
id
id
id
id
id
addSubscription:
id
checkForAndInstallUpdatesNow:
id
deleteDocSet:
id
downloadAction:
id
minimumFontSizeComboBoxAction:
id
minimumFontSizeEnabledAction:
id
showHelp:
id
showSubscriptionSheet:
id
subscriptionCancelAction:
id
toggleAutoCheckForAndInstallUpdates:
id
toggleDocSetInfo:
id
DVTGradientImageButton
DVTGradientImageButton
DVTGradientImageButton
NSSplitView
NSView
NSView
DVTBorderedView
DVTBorderedView
NSButton
NSTextView
IDEDocSetOutlineViewController
IDEDocDownloadsTableViewController
NSComboBox
NSTextField
NSButton
NSTextField
NSWindow
NSButton
_addButton
DVTGradientImageButton
_deleteButton
DVTGradientImageButton
_showInfoAreaButton
DVTGradientImageButton
_splitView
NSSplitView
_splitViewDocSetInfoSubview
NSView
_splitViewDocSetsListSubview
NSView
borderedViewAroundSplitView
DVTBorderedView
borderedViewBelowTable
DVTBorderedView
checkAndInstallNowButton
NSButton
docSetInfoTextView
NSTextView
docSetOutlineViewController
IDEDocSetOutlineViewController
downloadsTableViewController
IDEDocDownloadsTableViewController
minimumFontSizeControl
NSComboBox
noUpdatesAvailableMessage
NSTextField
showInfoButton
NSButton
subscriptionTextField
NSTextField
subscriptionWindow
NSWindow
validateAddSubscriptionButton
NSButton
IBProjectSource
./Classes/IDEDocViewingPrefPaneController.h
IDEEditor
IDEViewController
IBProjectSource
./Classes/IDEEditor.h
IDEViewController
DVTViewController
IBProjectSource
./Classes/IDEViewController.h
IKImageView
id
id
id
id
copy:
id
crop:
id
cut:
id
paste:
id
IBProjectSource
./Classes/IKImageView.h
NSDocument
id
id
id
id
id
id
printDocument:
id
revertDocumentToSaved:
id
runPageLayout:
id
saveDocument:
id
saveDocumentAs:
id
saveDocumentTo:
id
IBProjectSource
./Classes/NSDocument.h
NSResponder
_insertFindPattern:
id
_insertFindPattern:
_insertFindPattern:
id
IBProjectSource
./Classes/NSResponder.h
QLPreviewBubble
NSObject
id
id
hide:
id
show:
id
parentWindow
NSWindow
parentWindow
parentWindow
NSWindow
IBProjectSource
./Classes/QLPreviewBubble.h
QTMovieView
id
id
id
id
id
showAll:
id
showCustomButton:
id
toggleLoops:
id
zoomIn:
id
zoomOut:
id
IBProjectSource
./Classes/QTMovieView.h
WebView
id
id
id
id
reloadFromOrigin:
id
resetPageZoom:
id
zoomPageIn:
id
zoomPageOut:
id
IBProjectSource
./Classes/WebView.h
XDDiagramView
NSView
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
id
_graphLayouterMenuItemAction:
id
_zoomPopUpButtonAction:
id
alignBottomEdges:
id
alignCentersHorizontallyInContainer:
id
alignCentersVerticallyInContainer:
id
alignHorizontalCenters:
id
alignLeftEdges:
id
alignRightEdges:
id
alignTopEdges:
id
alignVerticalCenters:
id
bringToFront:
id
collapseAllCompartments:
id
copy:
id
cut:
id
delete:
id
deleteBackward:
id
deleteForward:
id
deselectAll:
id
diagramZoomIn:
id
diagramZoomOut:
id
expandAllCompartments:
id
flipHorizontally:
id
flipVertically:
id
layoutGraphicsConcentrically:
id
layoutGraphicsHierarchically:
id
lock:
id
makeSameHeight:
id
makeSameWidth:
id
moveDown:
id
moveDownAndModifySelection:
id
moveLeft:
id
moveLeftAndModifySelection:
id
moveRight:
id
moveRightAndModifySelection:
id
moveUp:
id
moveUpAndModifySelection:
id
paste:
id
rollDownAllCompartments:
id
rollUpAllCompartments:
id
selectAll:
id
sendToBack:
id
sizeToFit:
id
toggleGridShown:
id
toggleHiddenGraphicsShown:
id
togglePageBreaksShown:
id
toggleRuler:
id
toggleSnapsToGrid:
id
unlock:
id
_diagramController
IDEDataModelDiagramEditor
_diagramController
_diagramController
IDEDataModelDiagramEditor
IBProjectSource
./Classes/XDDiagramView.h
XDTableView
NSTableView
showAllTableColumns:
id
showAllTableColumns:
showAllTableColumns:
id
IBProjectSource
./Classes/XDTableView.h
AppDelegate
NSObject
id
id
applicationShouldTerminate:
id
applicationWillFinishLaunching:
id
IBProjectSource
./Classes/AppDelegate.h
0
IBCocoaFramework
YES
3
{11, 11}
{10, 3}
YES
================================================
FILE: AuthTester/main.m
================================================
//
// main.m
// AuthTester
//
// Created by Mike on 01/02/2013.
//
//
#import
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **)argv);
}
================================================
FILE: Connection-Info.plist
================================================
CFBundleDevelopmentRegion
en
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIdentifier
com.yourcompany.Connection
CFBundleInfoDictionaryVersion
6.0
CFBundlePackageType
FMWK
CFBundleSignature
????
CFBundleVersion
1.0
================================================
FILE: Connection.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
220526BA165E8C9D00A2BBC9 /* FTPAuthenticationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */; };
220526F8165E9DE400A2BBC9 /* DAVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; };
22052702165EA23800A2BBC9 /* CURLHandle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; };
22052706165EA62500A2BBC9 /* DAVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; };
220C11961715C5E20086F199 /* ErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 220C11951715C5E10086F199 /* ErrorTests.m */; };
22407D54166F9A6100E1EAD4 /* BaseCKProtocolTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */; };
2246AF6516B99987001D39D9 /* KMSSendStringCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */; };
2246AF6616B99987001D39D9 /* KMSSendDataCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */; };
2246AF6716B99987001D39D9 /* KMSSendServerDataCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */; };
2246AF6816B99987001D39D9 /* KMSPauseCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */; };
2246AF6916B99987001D39D9 /* KMSCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF5F16B99986001D39D9 /* KMSCommand.m */; };
2246AF6A16B99987001D39D9 /* KMSCloseCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2246AF6016B99986001D39D9 /* KMSCloseCommand.m */; };
224AB37D166E500E0066B1C6 /* KMSConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB372166E500E0066B1C6 /* KMSConnection.m */; };
224AB37E166E500E0066B1C6 /* KMSListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB374166E500E0066B1C6 /* KMSListener.m */; };
224AB37F166E500E0066B1C6 /* KMSRegExResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB376166E500E0066B1C6 /* KMSRegExResponder.m */; };
224AB380166E500E0066B1C6 /* KMSResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB378166E500E0066B1C6 /* KMSResponder.m */; };
224AB381166E500E0066B1C6 /* KMSResponseCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */; };
224AB382166E500E0066B1C6 /* KMSServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB37C166E500E0066B1C6 /* KMSServer.m */; };
224AB387166E501C0066B1C6 /* KMSCollectionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB386166E501C0066B1C6 /* KMSCollectionTests.m */; };
224AB38A166E52680066B1C6 /* KMSTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB389166E52680066B1C6 /* KMSTestCase.m */; };
224AB38C166E587F0066B1C6 /* KMSManualTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 224AB38B166E587F0066B1C6 /* KMSManualTests.m */; };
225FCA3816B046F800A9F5AE /* CKUploaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 225FCA3716B046F800A9F5AE /* CKUploaderTests.m */; };
22662EE4165D1EE4005FCC4A /* BaseCKTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22662EE3165D1EE3005FCC4A /* BaseCKTests.m */; };
22662EF3165D2EEC005FCC4A /* ftp.json in Resources */ = {isa = PBXBuildFile; fileRef = 22662EF1165D2EEC005FCC4A /* ftp.json */; };
22662EF4165D2EEC005FCC4A /* webdav.json in Resources */ = {isa = PBXBuildFile; fileRef = 22662EF2165D2EEC005FCC4A /* webdav.json */; };
2288CD76165A99FC00F34E24 /* CK2WebDAVProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */; };
228E180C1700AD5600ACDE94 /* CURLHandle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; };
2298E4AB17442272005A4160 /* FileTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2298E4AA17442272005A4160 /* FileTests.m */; };
22AC1C141742980000AB09E1 /* FTPTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C111742980000AB09E1 /* FTPTests.m */; };
22AC1C151742980000AB09E1 /* SFTPTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C121742980000AB09E1 /* SFTPTests.m */; };
22AC1C161742980000AB09E1 /* WebDAVTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C131742980000AB09E1 /* WebDAVTests.m */; };
22AC1C1917429F8200AB09E1 /* URLAppendingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */; };
22AC1C1B17429FAA00AB09E1 /* URLDirectoryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */; };
22C9CF991703327A004610FE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };
22C9CF9F1703327A004610FE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CF9D1703327A004610FE /* InfoPlist.strings */; };
22C9CFA11703327A004610FE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFA01703327A004610FE /* main.m */; };
22C9CFA51703327A004610FE /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CFA31703327A004610FE /* Credits.rtf */; };
22C9CFA81703327A004610FE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFA71703327A004610FE /* AppDelegate.m */; };
22C9CFAB1703327A004610FE /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22C9CFA91703327A004610FE /* MainMenu.xib */; };
22C9CFBA170333A2004610FE /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };
22CC56F91509048E00F94154 /* PathTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22CC56F81509048E00F94154 /* PathTests.m */; };
22CC578B1509068600F94154 /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };
22E67F1B171311C5001ECE34 /* ConnectionKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
22F6D112165A8A2200443CC9 /* URLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F6D102165A8A2200443CC9 /* URLTests.m */; };
22FEB6691680818800BB778B /* KMSTranscriptEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 22FEB6671680818800BB778B /* KMSTranscriptEntry.m */; };
271059521671334500E20511 /* DAVKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 27448C371458100D00EB086F /* DAVKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
27105953167143D800E20511 /* CURLHandle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 220526E8165E96AA00A2BBC9 /* CURLHandle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
27431CA01630381D00F6FB58 /* CK2FileProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */; };
27431CA11630381D00F6FB58 /* CK2FileProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */; };
2743E8091622E47600019979 /* CK2FileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2743E8071622E47600019979 /* CK2FileManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
2743E80A1622E47600019979 /* CK2FileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2743E8081622E47600019979 /* CK2FileManager.m */; };
278CFE1316BADE030018A14B /* URLCanonicalizationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */; };
278D8B79167FF35D00622468 /* CK2Authentication.h in Headers */ = {isa = PBXBuildFile; fileRef = 278D8B77167FF35D00622468 /* CK2Authentication.h */; settings = {ATTRIBUTES = (Public, ); }; };
278D8B7A167FF35D00622468 /* CK2Authentication.m in Sources */ = {isa = PBXBuildFile; fileRef = 278D8B78167FF35D00622468 /* CK2Authentication.m */; };
2790A8291627636E000C9D9F /* CK2Protocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 2790A8271627636E000C9D9F /* CK2Protocol.h */; };
2790A82A1627636E000C9D9F /* CK2Protocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2790A8281627636E000C9D9F /* CK2Protocol.m */; };
2790A94816278F1D000C9D9F /* CK2FTPProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */; };
2790A94916278F1D000C9D9F /* CK2FTPProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */; };
279117EC178B5C64006BF857 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };
279117F2178B5C64006BF857 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 279117F0178B5C64006BF857 /* InfoPlist.strings */; };
279117FD178B5C64006BF857 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279117FC178B5C64006BF857 /* XCTest.framework */; };
279117FE178B5C64006BF857 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };
27911801178B5C64006BF857 /* ConnectionKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279117EB178B5C64006BF857 /* ConnectionKitUI.framework */; };
27911810178B5D33006BF857 /* CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */; settings = {ATTRIBUTES = (Public, ); }; };
27911811178B5D3E006BF857 /* CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */; };
27911812178B5D4B006BF857 /* CK2OpenPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */; };
27911813178B5D4F006BF857 /* CK2OpenPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */; };
27911814178B5D59006BF857 /* CK2OpenPanelViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */; };
27911815178B5D59006BF857 /* CK2OpenPanelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */; };
27911816178B5D59006BF857 /* CK2OpenPanelIconViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */; };
27911817178B5D59006BF857 /* CK2OpenPanelIconViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */; };
27911818178B5D59006BF857 /* CK2OpenPanelListViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */; };
27911819178B5D59006BF857 /* CK2OpenPanelListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */; };
2791181A178B5D59006BF857 /* CK2OpenPanelColumnViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */; };
2791181B178B5D59006BF857 /* CK2OpenPanelColumnViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */; };
2791181C178B5D59006BF857 /* CK2NewFolderWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */; };
2791181D178B5D59006BF857 /* CK2NewFolderWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */; };
2791181E178B5D59006BF857 /* CK2FileCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A516A4960B0020FFE9 /* CK2FileCell.h */; };
2791181F178B5D59006BF857 /* CK2FileCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A616A4960B0020FFE9 /* CK2FileCell.m */; };
27911820178B5D59006BF857 /* CK2PathControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A916A4960B0020FFE9 /* CK2PathControl.h */; };
27911821178B5D59006BF857 /* CK2PathControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AA16A4960B0020FFE9 /* CK2PathControl.m */; };
27911822178B5D59006BF857 /* CK2PathFieldWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */; };
27911823178B5D59006BF857 /* CK2PathFieldWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */; };
27911824178B5D59006BF857 /* CK2IconViewItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */; };
27911825178B5D59006BF857 /* CK2IconViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */; };
27911826178B5D59006BF857 /* CK2IconItemView.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */; };
27911827178B5D59006BF857 /* CK2IconItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */; };
27911828178B5D59006BF857 /* CK2IconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22C716AE1762001CFDE6 /* CK2IconView.h */; };
27911829178B5D59006BF857 /* CK2IconView.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22C816AE1762001CFDE6 /* CK2IconView.m */; };
2791182A178B5D59006BF857 /* CK2BrowserPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */; };
2791182B178B5D59006BF857 /* CK2BrowserPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */; };
2791182C178B5D59006BF857 /* CK2BrowserPreviewView.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */; };
2791182D178B5D59006BF857 /* CK2BrowserPreviewView.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */; };
2791182E178B5D59006BF857 /* CK2FileSizeFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */; };
2791182F178B5D59006BF857 /* CK2FileSizeFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */; };
27911832178B5D59006BF857 /* NSURL+CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */; };
27911833178B5D59006BF857 /* NSURL+CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */; };
27911834178B5D59006BF857 /* NSImage+CK2OpenPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */; };
27911835178B5D59006BF857 /* NSImage+CK2OpenPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */; };
27911836178B5D79006BF857 /* CK2OpenPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7349170E253900219F9A /* CK2OpenPanel.xib */; };
27911837178B5D79006BF857 /* CK2FilePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7356170E254800219F9A /* CK2FilePreview.xib */; };
27911838178B5D79006BF857 /* CK2NewFolderWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B7359170E255200219F9A /* CK2NewFolderWindow.xib */; };
27911839178B5D79006BF857 /* CK2PathFieldWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 323B735C170E256000219F9A /* CK2PathFieldWindow.xib */; };
2791183A178B5E12006BF857 /* ConnectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */; };
2791188D178B6782006BF857 /* ConnectionKitUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 279117F4178B5C64006BF857 /* ConnectionKitUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
27993E8416FCB30D008DC1B0 /* CK2FileOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
27993E8516FCB30D008DC1B0 /* CK2FileOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */; };
27999BAB170B4B9800A54BEE /* CK2FileOperationWithTestSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */; };
27999BB7170B4BA200A54BEE /* CK2FileManagerWithTestSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */; };
27A2072B1671634800D8284D /* CK2CURLBasedProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27A207291671634800D8284D /* CK2CURLBasedProtocol.h */; };
27A2072C1671634800D8284D /* CK2CURLBasedProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */; };
27ADC5771AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */; };
27ADC5781AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */; };
27CFEC7218E73526007158A4 /* URLs.testdata in Resources */ = {isa = PBXBuildFile; fileRef = 27CFEC7118E73526007158A4 /* URLs.testdata */; };
27D03B421471787000FEA588 /* CKUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 27D03B401471787000FEA588 /* CKUploader.h */; settings = {ATTRIBUTES = (Public, ); }; };
27D03B431471787000FEA588 /* CKUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D03B411471787000FEA588 /* CKUploader.m */; };
27F3372B16BC1FB100E70511 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F3372A16BC1FB100E70511 /* Cocoa.framework */; };
27F3373116BC1FB100E70511 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 27F3372F16BC1FB100E70511 /* InfoPlist.strings */; };
27F3373316BC1FB100E70511 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F3373216BC1FB100E70511 /* main.m */; };
27F3373716BC1FB100E70511 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 27F3373516BC1FB100E70511 /* Credits.rtf */; };
27F3373A16BC1FB100E70511 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F3373916BC1FB100E70511 /* AppDelegate.m */; };
27F3373D16BC1FB100E70511 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27F3373B16BC1FB100E70511 /* MainMenu.xib */; };
27F394F5162C162900944F43 /* CK2SFTPProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 27F394F3162C162900944F43 /* CK2SFTPProtocol.h */; };
27F394F6162C162900944F43 /* CK2SFTPProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F394F4162C162900944F43 /* CK2SFTPProtocol.m */; };
791E83050B0EDAC90060E5FC /* error.png in Resources */ = {isa = PBXBuildFile; fileRef = 791E83030B0EDAC90060E5FC /* error.png */; };
791E83060B0EDAC90060E5FC /* finished.png in Resources */ = {isa = PBXBuildFile; fileRef = 791E83040B0EDAC90060E5FC /* finished.png */; };
796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 796DB2F609F8BB1D0065897B /* SecurityInterface.framework */; };
7978FC150B117D7C0048168B /* bookmark.tif in Resources */ = {isa = PBXBuildFile; fileRef = 7978FC140B117D7C0048168B /* bookmark.tif */; };
797CC8C709F861770063FF9B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 797CC8C509F861770063FF9B /* Localizable.strings */; };
798313C90B0D67E000F5078E /* CKTransferProgressCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 798313C70B0D67E000F5078E /* CKTransferProgressCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
798313CA0B0D67E000F5078E /* CKTransferProgressCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 798313C80B0D67E000F5078E /* CKTransferProgressCell.m */; };
7983DF8E0B0C0FAC00F5078E /* CKTransferRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = 7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };
7983DF8F0B0C0FAC00F5078E /* CKTransferRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */; };
79CFD89509F704F400172CDD /* ConnectionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 79CFD89409F704F400172CDD /* ConnectionKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD92D09F7080B00172CDD /* libz.dylib */; };
79CFD93709F7084000172CDD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CFD93609F7084000172CDD /* Security.framework */; };
79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79F9532B09FDC3A80041E345 /* ApplicationServices.framework */; };
79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79FB807109F74185006E7D11 /* Carbon.framework */; };
ADEE5E18169C84DF006188C5 /* KMSState.h in Headers */ = {isa = PBXBuildFile; fileRef = ADEE5E17169C84DF006188C5 /* KMSState.h */; };
CEB6FA0B13A696B200C8059F /* libsasl2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEB6FA0A13A696B200C8059F /* libsasl2.dylib */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
220526E7165E96AA00A2BBC9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
remoteInfo = CURLHandle;
};
220526F0165E97B400A2BBC9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
remoteInfo = DAVKit;
};
220526F2165E97B400A2BBC9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = C9FF77EC121C6F51001250C7;
remoteInfo = Tests;
};
220526FC165EA20600A2BBC9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = CURLHandle;
};
220AD7AD1509021A00748655 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 79CFD12509F702BE00172CDD;
remoteInfo = Framework;
};
22182129170209D300584589 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 223FD091160B523700BE1C80;
remoteInfo = CURLHandleTests;
};
22AC1C0D174297C500AB09E1 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 5FEEF26016CE830C002C1CBF;
remoteInfo = "DAVKit iOS";
};
22AC1C0F174297C500AB09E1 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 221F8BA817259BFF004E7B9D;
remoteInfo = "Tests iOS";
};
22C9CFFA1703AD4D004610FE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 22C9CFBF17035A0A004610FE;
remoteInfo = crashtest;
};
279117E0178B5A86006BF857 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 223FD092160B523700BE1C80;
remoteInfo = CURLHandleTests;
};
279117FF178B5C64006BF857 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 279117EA178B5C64006BF857;
remoteInfo = ConnectionKitUI;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
22E67F1C171312B6001ECE34 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 7;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
22FA97F715090855001728B8 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
22E67F1B171311C5001ECE34 /* ConnectionKit.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
27282EDA167131150057CCF7 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
271059521671334500E20511 /* DAVKit.framework in CopyFiles */,
27105953167143D800E20511 /* CURLHandle.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
09D6601E09FD37990000BA00 /* UnitTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "UnitTest-Info.plist"; sourceTree = ""; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; };
220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FTPAuthenticationTests.m; sourceTree = ""; };
220526F4165E989700A2BBC9 /* Connection_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Connection_Prefix.pch; path = ConnectionKit/Connection_Prefix.pch; sourceTree = ""; };
220526F6165E98B400A2BBC9 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ConnectionKit/main.m; sourceTree = ""; };
220AD7981509019B00748655 /* UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
220C11951715C5E10086F199 /* ErrorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorTests.m; sourceTree = ""; };
22407D5A166FA12500E1EAD4 /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl.dylib; path = CurlHandle/SFTP/libssl.dylib; sourceTree = ""; };
22407D5D166FA17600E1EAD4 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = CurlHandle/SFTP/libcrypto.dylib; sourceTree = ""; };
2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendStringCommand.m; sourceTree = ""; };
2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendDataCommand.m; sourceTree = ""; };
2246AF5B16B99986001D39D9 /* KMSSendStringCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendStringCommand.h; sourceTree = ""; };
2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSSendServerDataCommand.m; sourceTree = ""; };
2246AF5D16B99986001D39D9 /* KMSCloseCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSCloseCommand.h; sourceTree = ""; };
2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSPauseCommand.m; sourceTree = ""; };
2246AF5F16B99986001D39D9 /* KMSCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCommand.m; sourceTree = ""; };
2246AF6016B99986001D39D9 /* KMSCloseCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCloseCommand.m; sourceTree = ""; };
2246AF6116B99986001D39D9 /* KMSCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSCommand.h; sourceTree = ""; };
2246AF6216B99986001D39D9 /* KMSPauseCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSPauseCommand.h; sourceTree = ""; };
2246AF6316B99986001D39D9 /* KMSSendDataCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendDataCommand.h; sourceTree = ""; };
2246AF6416B99986001D39D9 /* KMSSendServerDataCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSSendServerDataCommand.h; sourceTree = ""; };
2248933B165D48CF006C4C7F /* UnitTests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnitTests_Prefix.pch; sourceTree = ""; };
224AB371166E500E0066B1C6 /* KMSConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSConnection.h; sourceTree = ""; };
224AB372166E500E0066B1C6 /* KMSConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSConnection.m; sourceTree = ""; };
224AB373166E500E0066B1C6 /* KMSListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSListener.h; sourceTree = ""; };
224AB374166E500E0066B1C6 /* KMSListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSListener.m; sourceTree = ""; };
224AB375166E500E0066B1C6 /* KMSRegExResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSRegExResponder.h; sourceTree = ""; };
224AB376166E500E0066B1C6 /* KMSRegExResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSRegExResponder.m; sourceTree = ""; };
224AB377166E500E0066B1C6 /* KMSResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSResponder.h; sourceTree = ""; };
224AB378166E500E0066B1C6 /* KMSResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSResponder.m; sourceTree = ""; };
224AB379166E500E0066B1C6 /* KMSResponseCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSResponseCollection.h; sourceTree = ""; };
224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSResponseCollection.m; sourceTree = ""; };
224AB37B166E500E0066B1C6 /* KMSServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSServer.h; sourceTree = ""; };
224AB37C166E500E0066B1C6 /* KMSServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSServer.m; sourceTree = ""; };
224AB386166E501C0066B1C6 /* KMSCollectionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSCollectionTests.m; sourceTree = ""; };
224AB388166E52680066B1C6 /* KMSTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSTestCase.h; sourceTree = ""; };
224AB389166E52680066B1C6 /* KMSTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSTestCase.m; sourceTree = ""; };
224AB38B166E587F0066B1C6 /* KMSManualTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSManualTests.m; sourceTree = ""; };
225FCA3716B046F800A9F5AE /* CKUploaderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CKUploaderTests.m; sourceTree = ""; };
2264399116FCB702001FDC20 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; wrapsLines = 1; };
22662EE2165D1EE3005FCC4A /* BaseCKTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseCKTests.h; sourceTree = ""; };
22662EE3165D1EE3005FCC4A /* BaseCKTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseCKTests.m; sourceTree = ""; };
22662EF1165D2EEC005FCC4A /* ftp.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ftp.json; sourceTree = ""; };
22662EF2165D2EEC005FCC4A /* webdav.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = webdav.json; sourceTree = ""; };
227113BE168388FD00280005 /* http.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = http.json; sourceTree = ""; };
2280F4B1171826D100BBEF22 /* Documentation */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Documentation; sourceTree = ""; };
2280F4B41718276E00BBEF22 /* .appledoc.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = .appledoc.plist; sourceTree = ""; };
2288CD73165A98E300F34E24 /* CK2WebDAVProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2WebDAVProtocol.h; sourceTree = ""; };
2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2WebDAVProtocol.m; sourceTree = ""; };
228E180D1700AEA200ACDE94 /* CK2FileManagerWithTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileManagerWithTestSupport.h; sourceTree = ""; };
228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileManagerWithTestSupport.m; sourceTree = ""; };
2298E4AA17442272005A4160 /* FileTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FileTests.m; sourceTree = ""; };
22AC1BFE174297C500AB09E1 /* BaseCKProtocolTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseCKProtocolTests.h; sourceTree = ""; };
22AC1C111742980000AB09E1 /* FTPTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FTPTests.m; sourceTree = ""; };
22AC1C121742980000AB09E1 /* SFTPTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFTPTests.m; sourceTree = ""; };
22AC1C131742980000AB09E1 /* WebDAVTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebDAVTests.m; sourceTree = ""; };
22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLAppendingTests.m; sourceTree = ""; };
22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLDirectoryTests.m; sourceTree = ""; };
22C7A9E316FCC8C300C88317 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = ""; wrapsLines = 1; };
22C9CF981703327A004610FE /* ProfilingTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProfilingTester.app; sourceTree = BUILT_PRODUCTS_DIR; };
22C9CF9C1703327A004610FE /* ProfilingTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ProfilingTester-Info.plist"; sourceTree = ""; };
22C9CF9E1703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
22C9CFA01703327A004610FE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
22C9CFA21703327A004610FE /* ProfilingTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ProfilingTester-Prefix.pch"; sourceTree = ""; };
22C9CFA41703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; };
22C9CFA61703327A004610FE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
22C9CFA71703327A004610FE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
22C9CFAA1703327A004610FE /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; };
22C9CFED1703AD4C004610FE /* CK2FileOperationWithTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileOperationWithTestSupport.h; sourceTree = ""; };
22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileOperationWithTestSupport.m; sourceTree = ""; };
22CC56F81509048E00F94154 /* PathTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PathTests.m; sourceTree = ""; };
22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseCKProtocolTests.m; sourceTree = ""; };
22F6D102165A8A2200443CC9 /* URLTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLTests.m; sourceTree = ""; };
22FEB6671680818800BB778B /* KMSTranscriptEntry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMSTranscriptEntry.m; sourceTree = ""; };
22FEB6681680818800BB778B /* KMSTranscriptEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSTranscriptEntry.h; sourceTree = ""; };
2702E4671459D0F50085BBC4 /* libssh2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssh2.dylib; path = CurlHandle/SFTP/libssh2.dylib; sourceTree = ""; };
27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileProtocol.h; sourceTree = ""; };
27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileProtocol.m; sourceTree = ""; };
2743E8071622E47600019979 /* CK2FileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileManager.h; sourceTree = ""; };
2743E8081622E47600019979 /* CK2FileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileManager.m; sourceTree = ""; };
27448C2414580F7500EB086F /* DAVKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DAVKit.xcodeproj; path = ../DAVKit/DAVKit.xcodeproj; sourceTree = ""; };
27448C371458100D00EB086F /* DAVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DAVKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLCanonicalizationTests.m; sourceTree = ""; };
278D8B77167FF35D00622468 /* CK2Authentication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2Authentication.h; sourceTree = ""; };
278D8B78167FF35D00622468 /* CK2Authentication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2Authentication.m; sourceTree = ""; };
2790A8271627636E000C9D9F /* CK2Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2Protocol.h; sourceTree = ""; };
2790A8281627636E000C9D9F /* CK2Protocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2Protocol.m; sourceTree = ""; };
2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FTPProtocol.h; sourceTree = ""; };
2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FTPProtocol.m; sourceTree = ""; };
279117EB178B5C64006BF857 /* ConnectionKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConnectionKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
279117EF178B5C64006BF857 /* ConnectionKitUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ConnectionKitUI-Info.plist"; sourceTree = ""; };
279117F1178B5C64006BF857 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
279117F3178B5C64006BF857 /* ConnectionKitUI-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ConnectionKitUI-Prefix.pch"; sourceTree = ""; };
279117F4178B5C64006BF857 /* ConnectionKitUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConnectionKitUI.h; path = ConnectionKitUI/ConnectionKitUI.h; sourceTree = SOURCE_ROOT; };
279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConnectionKitUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
279117FC178B5C64006BF857 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileOperation.h; sourceTree = ""; };
27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileOperation.m; sourceTree = ""; };
27A207291671634800D8284D /* CK2CURLBasedProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2CURLBasedProtocol.h; sourceTree = ""; };
27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2CURLBasedProtocol.m; sourceTree = ""; };
27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2CurlTransferStackManager.h; sourceTree = ""; };
27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2CurlTransferStackManager.m; sourceTree = ""; };
27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CURLHandle.xcodeproj; path = ../CurlHandle/CURLHandleSource/CURLHandle.xcodeproj; sourceTree = ""; };
27CFEC7118E73526007158A4 /* URLs.testdata */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = URLs.testdata; sourceTree = ""; };
27D03B401471787000FEA588 /* CKUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKUploader.h; path = ConnectionKit/CKUploader.h; sourceTree = ""; };
27D03B411471787000FEA588 /* CKUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKUploader.m; path = ConnectionKit/CKUploader.m; sourceTree = ""; };
27F3372816BC1FB100E70511 /* AuthTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AuthTester.app; sourceTree = BUILT_PRODUCTS_DIR; };
27F3372A16BC1FB100E70511 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
27F3372E16BC1FB100E70511 /* AuthTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AuthTester-Info.plist"; sourceTree = ""; };
27F3373016BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
27F3373216BC1FB100E70511 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
27F3373416BC1FB100E70511 /* AuthTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AuthTester-Prefix.pch"; sourceTree = ""; };
27F3373616BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; };
27F3373816BC1FB100E70511 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
27F3373916BC1FB100E70511 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
27F3373C16BC1FB100E70511 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; };
27F394F3162C162900944F43 /* CK2SFTPProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2SFTPProtocol.h; sourceTree = ""; };
27F394F4162C162900944F43 /* CK2SFTPProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2SFTPProtocol.m; sourceTree = ""; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; };
323B7348170E253900219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2OpenPanel.xib; sourceTree = ""; };
323B7355170E254800219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2FilePreview.xib; sourceTree = ""; };
323B7358170E255200219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2NewFolderWindow.xib; sourceTree = ""; };
323B735B170E256000219F9A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CK2PathFieldWindow.xib; sourceTree = ""; };
324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2BrowserPreviewController.h; sourceTree = ""; };
324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2BrowserPreviewController.m; sourceTree = ""; };
324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2BrowserPreviewView.h; sourceTree = ""; };
324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2BrowserPreviewView.m; sourceTree = ""; };
324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileSizeFormatter.h; sourceTree = ""; };
324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileSizeFormatter.m; sourceTree = ""; };
324D22C716AE1762001CFDE6 /* CK2IconView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconView.h; sourceTree = ""; };
324D22C816AE1762001CFDE6 /* CK2IconView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconView.m; sourceTree = ""; };
324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2NewFolderWindowController.h; sourceTree = ""; };
324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2NewFolderWindowController.m; sourceTree = ""; };
3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2PathFieldWindowController.h; sourceTree = ""; };
3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2PathFieldWindowController.m; sourceTree = ""; };
32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+CK2OpenPanel.h"; sourceTree = ""; };
32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+CK2OpenPanel.m"; sourceTree = ""; };
32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanel.h; sourceTree = ""; };
32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanel.m; sourceTree = ""; };
32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelController.h; sourceTree = ""; };
32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelController.m; sourceTree = ""; };
32B592A516A4960B0020FFE9 /* CK2FileCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2FileCell.h; sourceTree = ""; };
32B592A616A4960B0020FFE9 /* CK2FileCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2FileCell.m; sourceTree = ""; };
32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+CK2OpenPanel.h"; sourceTree = ""; };
32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+CK2OpenPanel.m"; sourceTree = ""; };
32B592A916A4960B0020FFE9 /* CK2PathControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2PathControl.h; sourceTree = ""; };
32B592AA16A4960B0020FFE9 /* CK2PathControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2PathControl.m; sourceTree = ""; };
32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconViewItem.h; sourceTree = ""; };
32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconViewItem.m; sourceTree = ""; };
32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2IconItemView.h; sourceTree = ""; };
32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2IconItemView.m; sourceTree = ""; };
32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelViewController.h; sourceTree = ""; };
32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelViewController.m; sourceTree = ""; };
32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelIconViewController.h; sourceTree = ""; };
32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelIconViewController.m; sourceTree = ""; };
32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelListViewController.h; sourceTree = ""; };
32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelListViewController.m; sourceTree = ""; };
32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CK2OpenPanelColumnViewController.h; sourceTree = ""; };
32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CK2OpenPanelColumnViewController.m; sourceTree = ""; };
3C2D8EC10A63FF31008FE1B0 /* zh_TW */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_TW; path = zh_TW.lproj/Localizable.strings; sourceTree = ""; };
3C2D8EC20A63FF3B008FE1B0 /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; };
3C2D8EC30A63FF41008FE1B0 /* da */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; };
791E83030B0EDAC90060E5FC /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = error.png; path = Resources/error.png; sourceTree = ""; };
791E83040B0EDAC90060E5FC /* finished.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = finished.png; path = Resources/finished.png; sourceTree = ""; };
7946B0FC0AC0F4A400CAE90F /* CKS3Connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CKS3Connection.h; sourceTree = ""; };
7946B0FD0AC0F4A400CAE90F /* CKS3Connection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CKS3Connection.m; sourceTree = ""; };
796DB2F609F8BB1D0065897B /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = /System/Library/Frameworks/SecurityInterface.framework; sourceTree = ""; };
7978FC140B117D7C0048168B /* bookmark.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = bookmark.tif; sourceTree = ""; };
797CC8C609F861770063FF9B /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
798313C70B0D67E000F5078E /* CKTransferProgressCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKTransferProgressCell.h; path = ConnectionKit/CKTransferProgressCell.h; sourceTree = ""; };
798313C80B0D67E000F5078E /* CKTransferProgressCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKTransferProgressCell.m; path = ConnectionKit/CKTransferProgressCell.m; sourceTree = ""; };
7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CKTransferRecord.h; path = ConnectionKit/CKTransferRecord.h; sourceTree = ""; };
7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CKTransferRecord.m; path = ConnectionKit/CKTransferRecord.m; sourceTree = ""; };
79CFD12609F702BE00172CDD /* ConnectionKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConnectionKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
79CFD89409F704F400172CDD /* ConnectionKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConnectionKit.h; sourceTree = ""; };
79CFD92C09F7080B00172CDD /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = /usr/lib/libcurl.dylib; sourceTree = ""; };
79CFD92D09F7080B00172CDD /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; };
79CFD93609F7084000172CDD /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; };
79F9532B09FDC3A80041E345 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; };
79FB807109F74185006E7D11 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; };
ADEE5E17169C84DF006188C5 /* KMSState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMSState.h; sourceTree = ""; };
CE1AD3DF0A7E845A0083C01E /* it */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; };
CE55A6620AD194740091C8AE /* zh_CN */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = zh_CN; path = zh_CN.lproj/Localizable.strings; sourceTree = ""; };
CE94B9101463124A00F90408 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; };
CE953A04102BACE70066C08F /* pt_BR */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = pt_BR; path = pt_BR.lproj/Localizable.strings; sourceTree = ""; };
CE9795FC0EC3CF9600FA9C5F /* Framework-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Framework-Info.plist"; sourceTree = ""; };
CEA9AFD30A64224100855897 /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; };
CEB563850A7AB7070081179A /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; lineEnding = 0; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; };
CEB6FA0A13A696B200C8059F /* libsasl2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsasl2.dylib; path = /usr/lib/libsasl2.dylib; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
220AD7941509019B00748655 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
228E180C1700AD5600ACDE94 /* CURLHandle.framework in Frameworks */,
22CC578B1509068600F94154 /* ConnectionKit.framework in Frameworks */,
22052706165EA62500A2BBC9 /* DAVKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
22C9CF951703327A004610FE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
22C9CFBA170333A2004610FE /* ConnectionKit.framework in Frameworks */,
22C9CF991703327A004610FE /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117E7178B5C64006BF857 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2791183A178B5E12006BF857 /* ConnectionKit.framework in Frameworks */,
279117EC178B5C64006BF857 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117F8178B5C64006BF857 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
27911801178B5C64006BF857 /* ConnectionKitUI.framework in Frameworks */,
279117FE178B5C64006BF857 /* Cocoa.framework in Frameworks */,
279117FD178B5C64006BF857 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
27F3372516BC1FB100E70511 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
27F3372B16BC1FB100E70511 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
79CFD12409F702BE00172CDD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
22052702165EA23800A2BBC9 /* CURLHandle.framework in Frameworks */,
79CFD92F09F7080B00172CDD /* libz.dylib in Frameworks */,
79CFD93709F7084000172CDD /* Security.framework in Frameworks */,
79FB807209F74185006E7D11 /* Carbon.framework in Frameworks */,
796DB30109F8BB1D0065897B /* SecurityInterface.framework in Frameworks */,
79F9533D09FDC3A80041E345 /* ApplicationServices.framework in Frameworks */,
CEB6FA0B13A696B200C8059F /* libsasl2.dylib in Frameworks */,
220526F8165E9DE400A2BBC9 /* DAVKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Public */ = {
isa = PBXGroup;
children = (
79CFD89409F704F400172CDD /* ConnectionKit.h */,
2743E8071622E47600019979 /* CK2FileManager.h */,
2743E8081622E47600019979 /* CK2FileManager.m */,
278D8B77167FF35D00622468 /* CK2Authentication.h */,
278D8B78167FF35D00622468 /* CK2Authentication.m */,
27993E8216FCB30D008DC1B0 /* CK2FileOperation.h */,
27993E8316FCB30D008DC1B0 /* CK2FileOperation.m */,
);
name = Public;
path = ConnectionKit;
sourceTree = "";
};
09D6602E09FD37B70000BA00 /* Unit Tests */ = {
isa = PBXGroup;
children = (
2264399116FCB702001FDC20 /* README.md */,
225FCA3716B046F800A9F5AE /* CKUploaderTests.m */,
220C11951715C5E10086F199 /* ErrorTests.m */,
2298E4AA17442272005A4160 /* FileTests.m */,
220526B9165E8C9D00A2BBC9 /* FTPAuthenticationTests.m */,
22AC1C111742980000AB09E1 /* FTPTests.m */,
22CC56F81509048E00F94154 /* PathTests.m */,
22AC1C121742980000AB09E1 /* SFTPTests.m */,
22AC1C1817429F8100AB09E1 /* URLAppendingTests.m */,
278CFE1216BADE030018A14B /* URLCanonicalizationTests.m */,
22AC1C1A17429FAA00AB09E1 /* URLDirectoryTests.m */,
22F6D102165A8A2200443CC9 /* URLTests.m */,
27CFEC7118E73526007158A4 /* URLs.testdata */,
22AC1C131742980000AB09E1 /* WebDAVTests.m */,
22AC1C1717429F1500AB09E1 /* Test Support */,
);
name = "Unit Tests";
path = UnitTests;
sourceTree = "";
};
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
79F9532B09FDC3A80041E345 /* ApplicationServices.framework */,
79FB807109F74185006E7D11 /* Carbon.framework */,
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
27448C371458100D00EB086F /* DAVKit.framework */,
22407D5D166FA17600E1EAD4 /* libcrypto.dylib */,
79CFD92C09F7080B00172CDD /* libcurl.dylib */,
CEB6FA0A13A696B200C8059F /* libsasl2.dylib */,
2702E4671459D0F50085BBC4 /* libssh2.dylib */,
22407D5A166FA12500E1EAD4 /* libssl.dylib */,
79CFD92D09F7080B00172CDD /* libz.dylib */,
79CFD93609F7084000172CDD /* Security.framework */,
796DB2F609F8BB1D0065897B /* SecurityInterface.framework */,
);
name = "Linked Frameworks";
sourceTree = "";
};
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
79CFD12609F702BE00172CDD /* ConnectionKit.framework */,
220AD7981509019B00748655 /* UnitTests.xctest */,
27F3372816BC1FB100E70511 /* AuthTester.app */,
22C9CF981703327A004610FE /* ProfilingTester.app */,
279117EB178B5C64006BF857 /* ConnectionKitUI.framework */,
279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */,
);
name = Products;
sourceTree = "";
};
220526E3165E96AA00A2BBC9 /* Products */ = {
isa = PBXGroup;
children = (
220526E8165E96AA00A2BBC9 /* CURLHandle.framework */,
279117E1178B5A86006BF857 /* CURLHandleTests.xctest */,
22C9CFFB1703AD4D004610FE /* Standalone Test */,
);
name = Products;
sourceTree = "";
};
220526EC165E97B400A2BBC9 /* Products */ = {
isa = PBXGroup;
children = (
220526F1165E97B400A2BBC9 /* DAVKit.framework */,
220526F3165E97B400A2BBC9 /* Tests.octest */,
22AC1C0E174297C500AB09E1 /* libDAVKit.a */,
22AC1C10174297C500AB09E1 /* Tests iOS.octest */,
);
name = Products;
sourceTree = "";
};
2280F4A4171826A500BBEF22 /* Documentation */ = {
isa = PBXGroup;
children = (
2280F4B41718276E00BBEF22 /* .appledoc.plist */,
2280F4B1171826D100BBEF22 /* Documentation */,
);
name = Documentation;
sourceTree = "";
};
2280F4B0171826B700BBEF22 /* Testing */ = {
isa = PBXGroup;
children = (
09D6602E09FD37B70000BA00 /* Unit Tests */,
27F3372C16BC1FB100E70511 /* AuthTester */,
22C9CF9A1703327A004610FE /* ProfilingTester */,
);
name = Testing;
sourceTree = "";
};
22AC1C1717429F1500AB09E1 /* Test Support */ = {
isa = PBXGroup;
children = (
09D6601E09FD37990000BA00 /* UnitTest-Info.plist */,
2248933B165D48CF006C4C7F /* UnitTests_Prefix.pch */,
27999BB8170B4BDD00A54BEE /* Framework Extensions */,
22F6D0E8165A8A2200443CC9 /* MockServer */,
22662EE2165D1EE3005FCC4A /* BaseCKTests.h */,
22662EE3165D1EE3005FCC4A /* BaseCKTests.m */,
22AC1BFE174297C500AB09E1 /* BaseCKProtocolTests.h */,
22F6D0E7165A8A2200443CC9 /* BaseCKProtocolTests.m */,
);
name = "Test Support";
sourceTree = "";
};
22C9CF9A1703327A004610FE /* ProfilingTester */ = {
isa = PBXGroup;
children = (
22C9CFA61703327A004610FE /* AppDelegate.h */,
22C9CFA71703327A004610FE /* AppDelegate.m */,
22C9CFA91703327A004610FE /* MainMenu.xib */,
22C9CF9B1703327A004610FE /* Supporting Files */,
);
path = ProfilingTester;
sourceTree = "";
};
22C9CF9B1703327A004610FE /* Supporting Files */ = {
isa = PBXGroup;
children = (
22C9CF9C1703327A004610FE /* ProfilingTester-Info.plist */,
22C9CF9D1703327A004610FE /* InfoPlist.strings */,
22C9CFA01703327A004610FE /* main.m */,
22C9CFA21703327A004610FE /* ProfilingTester-Prefix.pch */,
22C9CFA31703327A004610FE /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "";
};
22F6D0E8165A8A2200443CC9 /* MockServer */ = {
isa = PBXGroup;
children = (
2246AF5D16B99986001D39D9 /* KMSCloseCommand.h */,
2246AF6016B99986001D39D9 /* KMSCloseCommand.m */,
2246AF6116B99986001D39D9 /* KMSCommand.h */,
2246AF5F16B99986001D39D9 /* KMSCommand.m */,
224AB371166E500E0066B1C6 /* KMSConnection.h */,
224AB372166E500E0066B1C6 /* KMSConnection.m */,
224AB373166E500E0066B1C6 /* KMSListener.h */,
224AB374166E500E0066B1C6 /* KMSListener.m */,
2246AF6216B99986001D39D9 /* KMSPauseCommand.h */,
2246AF5E16B99986001D39D9 /* KMSPauseCommand.m */,
224AB375166E500E0066B1C6 /* KMSRegExResponder.h */,
224AB376166E500E0066B1C6 /* KMSRegExResponder.m */,
224AB377166E500E0066B1C6 /* KMSResponder.h */,
224AB378166E500E0066B1C6 /* KMSResponder.m */,
224AB379166E500E0066B1C6 /* KMSResponseCollection.h */,
224AB37A166E500E0066B1C6 /* KMSResponseCollection.m */,
2246AF6316B99986001D39D9 /* KMSSendDataCommand.h */,
2246AF5A16B99986001D39D9 /* KMSSendDataCommand.m */,
2246AF6416B99986001D39D9 /* KMSSendServerDataCommand.h */,
2246AF5C16B99986001D39D9 /* KMSSendServerDataCommand.m */,
2246AF5B16B99986001D39D9 /* KMSSendStringCommand.h */,
2246AF5916B99986001D39D9 /* KMSSendStringCommand.m */,
224AB37B166E500E0066B1C6 /* KMSServer.h */,
224AB37C166E500E0066B1C6 /* KMSServer.m */,
ADEE5E17169C84DF006188C5 /* KMSState.h */,
224AB388166E52680066B1C6 /* KMSTestCase.h */,
224AB389166E52680066B1C6 /* KMSTestCase.m */,
22FEB6681680818800BB778B /* KMSTranscriptEntry.h */,
22FEB6671680818800BB778B /* KMSTranscriptEntry.m */,
22F6D0FF165A8A2200443CC9 /* UnitTests */,
);
name = MockServer;
path = ../CurlHandle/CURLHandleSource/Tests/MockServer;
sourceTree = "";
};
22F6D0FF165A8A2200443CC9 /* UnitTests */ = {
isa = PBXGroup;
children = (
227113BE168388FD00280005 /* http.json */,
22662EF1165D2EEC005FCC4A /* ftp.json */,
22662EF2165D2EEC005FCC4A /* webdav.json */,
224AB38B166E587F0066B1C6 /* KMSManualTests.m */,
224AB386166E501C0066B1C6 /* KMSCollectionTests.m */,
);
path = UnitTests;
sourceTree = "";
};
273F0E13164E8D3E00588885 /* Protocols */ = {
isa = PBXGroup;
children = (
2790A8271627636E000C9D9F /* CK2Protocol.h */,
2790A8281627636E000C9D9F /* CK2Protocol.m */,
27A207291671634800D8284D /* CK2CURLBasedProtocol.h */,
27A2072A1671634800D8284D /* CK2CURLBasedProtocol.m */,
27ADC5751AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h */,
27ADC5761AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m */,
2790A94616278F1D000C9D9F /* CK2FTPProtocol.h */,
2790A94716278F1D000C9D9F /* CK2FTPProtocol.m */,
27F394F3162C162900944F43 /* CK2SFTPProtocol.h */,
27F394F4162C162900944F43 /* CK2SFTPProtocol.m */,
27431C9E1630381D00F6FB58 /* CK2FileProtocol.h */,
27431C9F1630381D00F6FB58 /* CK2FileProtocol.m */,
2288CD73165A98E300F34E24 /* CK2WebDAVProtocol.h */,
2288CD74165A98E300F34E24 /* CK2WebDAVProtocol.m */,
);
name = Protocols;
sourceTree = "";
};
274DA43516ED52BE008041B6 /* Legacy */ = {
isa = PBXGroup;
children = (
274DA43616ED52CC008041B6 /* Uploader */,
);
name = Legacy;
sourceTree = "";
};
274DA43616ED52CC008041B6 /* Uploader */ = {
isa = PBXGroup;
children = (
27D03B401471787000FEA588 /* CKUploader.h */,
27D03B411471787000FEA588 /* CKUploader.m */,
7983DF8C0B0C0FAC00F5078E /* CKTransferRecord.h */,
7983DF8D0B0C0FAC00F5078E /* CKTransferRecord.m */,
798313C70B0D67E000F5078E /* CKTransferProgressCell.h */,
798313C80B0D67E000F5078E /* CKTransferProgressCell.m */,
791E83030B0EDAC90060E5FC /* error.png */,
791E83040B0EDAC90060E5FC /* finished.png */,
);
name = Uploader;
sourceTree = "";
};
279117EE178B5C64006BF857 /* Supporting Files */ = {
isa = PBXGroup;
children = (
279117EF178B5C64006BF857 /* ConnectionKitUI-Info.plist */,
279117F0178B5C64006BF857 /* InfoPlist.strings */,
279117F3178B5C64006BF857 /* ConnectionKitUI-Prefix.pch */,
);
name = "Supporting Files";
path = ConnectionKitUI;
sourceTree = SOURCE_ROOT;
};
27999BB8170B4BDD00A54BEE /* Framework Extensions */ = {
isa = PBXGroup;
children = (
22C9CFED1703AD4C004610FE /* CK2FileOperationWithTestSupport.h */,
22C9CFEE1703AD4D004610FE /* CK2FileOperationWithTestSupport.m */,
228E180D1700AEA200ACDE94 /* CK2FileManagerWithTestSupport.h */,
228E180E1700AEA300ACDE94 /* CK2FileManagerWithTestSupport.m */,
);
name = "Framework Extensions";
path = ../ConnectionKit;
sourceTree = "";
};
27F3372C16BC1FB100E70511 /* AuthTester */ = {
isa = PBXGroup;
children = (
27F3373816BC1FB100E70511 /* AppDelegate.h */,
27F3373916BC1FB100E70511 /* AppDelegate.m */,
27F3373B16BC1FB100E70511 /* MainMenu.xib */,
27F3372D16BC1FB100E70511 /* Supporting Files */,
);
path = AuthTester;
sourceTree = "";
};
27F3372D16BC1FB100E70511 /* Supporting Files */ = {
isa = PBXGroup;
children = (
27F3372E16BC1FB100E70511 /* AuthTester-Info.plist */,
27F3372F16BC1FB100E70511 /* InfoPlist.strings */,
27F3373216BC1FB100E70511 /* main.m */,
27F3373416BC1FB100E70511 /* AuthTester-Prefix.pch */,
27F3373516BC1FB100E70511 /* Credits.rtf */,
);
name = "Supporting Files";
sourceTree = "";
};
27FD90C20ED5BFA40068D634 /* Experimental */ = {
isa = PBXGroup;
children = (
7946B0FC0AC0F4A400CAE90F /* CKS3Connection.h */,
7946B0FD0AC0F4A400CAE90F /* CKS3Connection.m */,
);
name = Experimental;
path = ConnectionKit;
sourceTree = "";
};
27FD90C60ED5BFC00068D634 /* Dependencies */ = {
isa = PBXGroup;
children = (
27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */,
27448C2414580F7500EB086F /* DAVKit.xcodeproj */,
);
name = Dependencies;
path = ConnectionKit;
sourceTree = "";
};
29B97314FDCFA39411CA2CEA /* Connection */ = {
isa = PBXGroup;
children = (
22C7A9E316FCC8C300C88317 /* README.md */,
080E96DDFE201D6D7F000001 /* Public */,
79CFD8A009F705B400172CDD /* Private */,
79CFD8A509F705FF00172CDD /* UI */,
274DA43516ED52BE008041B6 /* Legacy */,
27FD90C20ED5BFA40068D634 /* Experimental */,
2280F4B0171826B700BBEF22 /* Testing */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
27FD90C60ED5BFC00068D634 /* Dependencies */,
29B97317FDCFA39411CA2CEA /* Resources */,
2280F4A4171826A500BBEF22 /* Documentation */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = Connection;
sourceTree = "";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
220526F4165E989700A2BBC9 /* Connection_Prefix.pch */,
220526F6165E98B400A2BBC9 /* main.m */,
);
name = "Other Sources";
sourceTree = "";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
797CC8C509F861770063FF9B /* Localizable.strings */,
79CFD8E409F7071E00172CDD /* Images */,
CE9795FC0EC3CF9600FA9C5F /* Framework-Info.plist */,
);
path = Resources;
sourceTree = "";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
27F3372A16BC1FB100E70511 /* Cocoa.framework */,
279117FC178B5C64006BF857 /* XCTest.framework */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "";
};
32B592A016A1016A0020FFE9 /* CK2OpenPanel */ = {
isa = PBXGroup;
children = (
32B592A116A4960B0020FFE9 /* CK2OpenPanel.h */,
32B592A216A4960B0020FFE9 /* CK2OpenPanel.m */,
32B592A316A4960B0020FFE9 /* CK2OpenPanelController.h */,
32B592A416A4960B0020FFE9 /* CK2OpenPanelController.m */,
32B592B016A4960B0020FFE9 /* CK2OpenPanelViewController.h */,
32B592B116A4960B0020FFE9 /* CK2OpenPanelViewController.m */,
32B592B216A4960B0020FFE9 /* CK2OpenPanelIconViewController.h */,
32B592B316A4960B0020FFE9 /* CK2OpenPanelIconViewController.m */,
32B592B416A4960B0020FFE9 /* CK2OpenPanelListViewController.h */,
32B592B516A4960B0020FFE9 /* CK2OpenPanelListViewController.m */,
32B592B616A4960B0020FFE9 /* CK2OpenPanelColumnViewController.h */,
32B592B716A4960B0020FFE9 /* CK2OpenPanelColumnViewController.m */,
324D22D116AF490A001CFDE6 /* CK2NewFolderWindowController.h */,
324D22D216AF490A001CFDE6 /* CK2NewFolderWindowController.m */,
32B592A516A4960B0020FFE9 /* CK2FileCell.h */,
32B592A616A4960B0020FFE9 /* CK2FileCell.m */,
32B592A916A4960B0020FFE9 /* CK2PathControl.h */,
32B592AA16A4960B0020FFE9 /* CK2PathControl.m */,
3274F1CB170888430049DDE5 /* CK2PathFieldWindowController.h */,
3274F1CC170888430049DDE5 /* CK2PathFieldWindowController.m */,
32B592AB16A4960B0020FFE9 /* CK2IconViewItem.h */,
32B592AC16A4960B0020FFE9 /* CK2IconViewItem.m */,
32B592AD16A4960B0020FFE9 /* CK2IconItemView.h */,
32B592AE16A4960B0020FFE9 /* CK2IconItemView.m */,
324D22C716AE1762001CFDE6 /* CK2IconView.h */,
324D22C816AE1762001CFDE6 /* CK2IconView.m */,
324D22BB16AE173F001CFDE6 /* CK2BrowserPreviewController.h */,
324D22BC16AE173F001CFDE6 /* CK2BrowserPreviewController.m */,
324D22BD16AE1740001CFDE6 /* CK2BrowserPreviewView.h */,
324D22BE16AE1740001CFDE6 /* CK2BrowserPreviewView.m */,
324D22C316AE1754001CFDE6 /* CK2FileSizeFormatter.h */,
324D22C416AE1754001CFDE6 /* CK2FileSizeFormatter.m */,
32B592A716A4960B0020FFE9 /* NSURL+CK2OpenPanel.h */,
32B592A816A4960B0020FFE9 /* NSURL+CK2OpenPanel.m */,
32B3EA7C16B58FFA003D4836 /* NSImage+CK2OpenPanel.h */,
32B3EA7D16B58FFB003D4836 /* NSImage+CK2OpenPanel.m */,
323B7349170E253900219F9A /* CK2OpenPanel.xib */,
323B7356170E254800219F9A /* CK2FilePreview.xib */,
323B7359170E255200219F9A /* CK2NewFolderWindow.xib */,
323B735C170E256000219F9A /* CK2PathFieldWindow.xib */,
);
name = CK2OpenPanel;
sourceTree = "";
};
79CFD8A009F705B400172CDD /* Private */ = {
isa = PBXGroup;
children = (
273F0E13164E8D3E00588885 /* Protocols */,
);
name = Private;
path = ConnectionKit;
sourceTree = "";
};
79CFD8A509F705FF00172CDD /* UI */ = {
isa = PBXGroup;
children = (
279117F4178B5C64006BF857 /* ConnectionKitUI.h */,
32B592A016A1016A0020FFE9 /* CK2OpenPanel */,
279117EE178B5C64006BF857 /* Supporting Files */,
);
name = UI;
path = ConnectionKit;
sourceTree = "";
};
79CFD8E409F7071E00172CDD /* Images */ = {
isa = PBXGroup;
children = (
7978FC140B117D7C0048168B /* bookmark.tif */,
);
name = Images;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
279117E8178B5C64006BF857 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
27911834178B5D59006BF857 /* NSImage+CK2OpenPanel.h in Headers */,
27911816178B5D59006BF857 /* CK2OpenPanelIconViewController.h in Headers */,
2791182C178B5D59006BF857 /* CK2BrowserPreviewView.h in Headers */,
27911813178B5D4F006BF857 /* CK2OpenPanelController.h in Headers */,
27911814178B5D59006BF857 /* CK2OpenPanelViewController.h in Headers */,
27911824178B5D59006BF857 /* CK2IconViewItem.h in Headers */,
2791181E178B5D59006BF857 /* CK2FileCell.h in Headers */,
2791182A178B5D59006BF857 /* CK2BrowserPreviewController.h in Headers */,
2791181C178B5D59006BF857 /* CK2NewFolderWindowController.h in Headers */,
2791188D178B6782006BF857 /* ConnectionKitUI.h in Headers */,
27911826178B5D59006BF857 /* CK2IconItemView.h in Headers */,
27911822178B5D59006BF857 /* CK2PathFieldWindowController.h in Headers */,
27911820178B5D59006BF857 /* CK2PathControl.h in Headers */,
2791182E178B5D59006BF857 /* CK2FileSizeFormatter.h in Headers */,
2791181A178B5D59006BF857 /* CK2OpenPanelColumnViewController.h in Headers */,
27911818178B5D59006BF857 /* CK2OpenPanelListViewController.h in Headers */,
27911828178B5D59006BF857 /* CK2IconView.h in Headers */,
27911810178B5D33006BF857 /* CK2OpenPanel.h in Headers */,
27911832178B5D59006BF857 /* NSURL+CK2OpenPanel.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
79CFD12109F702BE00172CDD /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
79CFD89509F704F400172CDD /* ConnectionKit.h in Headers */,
7983DF8E0B0C0FAC00F5078E /* CKTransferRecord.h in Headers */,
798313C90B0D67E000F5078E /* CKTransferProgressCell.h in Headers */,
27D03B421471787000FEA588 /* CKUploader.h in Headers */,
2743E8091622E47600019979 /* CK2FileManager.h in Headers */,
2790A8291627636E000C9D9F /* CK2Protocol.h in Headers */,
2790A94816278F1D000C9D9F /* CK2FTPProtocol.h in Headers */,
27ADC5771AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.h in Headers */,
27F394F5162C162900944F43 /* CK2SFTPProtocol.h in Headers */,
27431CA01630381D00F6FB58 /* CK2FileProtocol.h in Headers */,
27A2072B1671634800D8284D /* CK2CURLBasedProtocol.h in Headers */,
278D8B79167FF35D00622468 /* CK2Authentication.h in Headers */,
ADEE5E18169C84DF006188C5 /* KMSState.h in Headers */,
27993E8416FCB30D008DC1B0 /* CK2FileOperation.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
220AD7971509019B00748655 /* UnitTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 220AD7A71509019B00748655 /* Build configuration list for PBXNativeTarget "UnitTests" */;
buildPhases = (
220AD7931509019B00748655 /* Sources */,
220AD7941509019B00748655 /* Frameworks */,
220AD7951509019B00748655 /* Resources */,
22FA97F715090855001728B8 /* CopyFiles */,
220AD7961509019B00748655 /* ShellScript */,
22E67F1C171312B6001ECE34 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
2218212A170209D300584589 /* PBXTargetDependency */,
220AD7AE1509021A00748655 /* PBXTargetDependency */,
);
name = UnitTests;
productName = Tests;
productReference = 220AD7981509019B00748655 /* UnitTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
22C9CF971703327A004610FE /* ProfilingTester */ = {
isa = PBXNativeTarget;
buildConfigurationList = 22C9CFB91703327A004610FE /* Build configuration list for PBXNativeTarget "ProfilingTester" */;
buildPhases = (
22C9CF941703327A004610FE /* Sources */,
22C9CF951703327A004610FE /* Frameworks */,
22C9CF961703327A004610FE /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ProfilingTester;
productName = ProfilingTester;
productReference = 22C9CF981703327A004610FE /* ProfilingTester.app */;
productType = "com.apple.product-type.application";
};
279117EA178B5C64006BF857 /* ConnectionKitUI */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2791180A178B5C64006BF857 /* Build configuration list for PBXNativeTarget "ConnectionKitUI" */;
buildPhases = (
279117E6178B5C64006BF857 /* Sources */,
279117E7178B5C64006BF857 /* Frameworks */,
279117E8178B5C64006BF857 /* Headers */,
279117E9178B5C64006BF857 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ConnectionKitUI;
productName = ConnectionKitUI;
productReference = 279117EB178B5C64006BF857 /* ConnectionKitUI.framework */;
productType = "com.apple.product-type.framework";
};
279117FA178B5C64006BF857 /* ConnectionKitUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2791180D178B5C64006BF857 /* Build configuration list for PBXNativeTarget "ConnectionKitUITests" */;
buildPhases = (
279117F7178B5C64006BF857 /* Sources */,
279117F8178B5C64006BF857 /* Frameworks */,
279117F9178B5C64006BF857 /* Resources */,
);
buildRules = (
);
dependencies = (
27911800178B5C64006BF857 /* PBXTargetDependency */,
);
name = ConnectionKitUITests;
productName = ConnectionKitUITests;
productReference = 279117FB178B5C64006BF857 /* ConnectionKitUITests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
27F3372716BC1FB100E70511 /* AuthTester */ = {
isa = PBXNativeTarget;
buildConfigurationList = 27F3373E16BC1FB100E70511 /* Build configuration list for PBXNativeTarget "AuthTester" */;
buildPhases = (
27F3372416BC1FB100E70511 /* Sources */,
27F3372516BC1FB100E70511 /* Frameworks */,
27F3372616BC1FB100E70511 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AuthTester;
productName = AuthTester;
productReference = 27F3372816BC1FB100E70511 /* AuthTester.app */;
productType = "com.apple.product-type.application";
};
79CFD12509F702BE00172CDD /* ConnectionKit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget "ConnectionKit" */;
buildPhases = (
797CBBEB09F854B60063FF9B /* Generate Localizable.strings */,
79CFD12309F702BE00172CDD /* Sources */,
79CFD12409F702BE00172CDD /* Frameworks */,
79CFD12109F702BE00172CDD /* Headers */,
79CFD12209F702BE00172CDD /* Resources */,
27282EDA167131150057CCF7 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
220526FD165EA20600A2BBC9 /* PBXTargetDependency */,
);
name = ConnectionKit;
productName = Framework;
productReference = 79CFD12609F702BE00172CDD /* ConnectionKit.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastTestingUpgradeCheck = 0600;
LastUpgradeCheck = 0700;
TargetAttributes = {
279117FA178B5C64006BF857 = {
TestTargetID = 79CFD12509F702BE00172CDD;
};
};
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Connection" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
English,
en,
ja,
fr,
de,
zh_TW,
da,
it,
es,
zh_CN,
pt_BR,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* Connection */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 220526E3165E96AA00A2BBC9 /* Products */;
ProjectRef = 27BFFEDA15027F4100EFA319 /* CURLHandle.xcodeproj */;
},
{
ProductGroup = 220526EC165E97B400A2BBC9 /* Products */;
ProjectRef = 27448C2414580F7500EB086F /* DAVKit.xcodeproj */;
},
);
projectRoot = "";
targets = (
79CFD12509F702BE00172CDD /* ConnectionKit */,
279117EA178B5C64006BF857 /* ConnectionKitUI */,
220AD7971509019B00748655 /* UnitTests */,
27F3372716BC1FB100E70511 /* AuthTester */,
22C9CF971703327A004610FE /* ProfilingTester */,
279117FA178B5C64006BF857 /* ConnectionKitUITests */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
220526E8165E96AA00A2BBC9 /* CURLHandle.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = CURLHandle.framework;
remoteRef = 220526E7165E96AA00A2BBC9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
220526F1165E97B400A2BBC9 /* DAVKit.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = DAVKit.framework;
remoteRef = 220526F0165E97B400A2BBC9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
220526F3165E97B400A2BBC9 /* Tests.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = Tests.octest;
remoteRef = 220526F2165E97B400A2BBC9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
22AC1C0E174297C500AB09E1 /* libDAVKit.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libDAVKit.a;
remoteRef = 22AC1C0D174297C500AB09E1 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
22AC1C10174297C500AB09E1 /* Tests iOS.octest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = "Tests iOS.octest";
remoteRef = 22AC1C0F174297C500AB09E1 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
22C9CFFB1703AD4D004610FE /* Standalone Test */ = {
isa = PBXReferenceProxy;
fileType = "compiled.mach-o.executable";
path = "Standalone Test";
remoteRef = 22C9CFFA1703AD4D004610FE /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
279117E1178B5A86006BF857 /* CURLHandleTests.xctest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = CURLHandleTests.xctest;
remoteRef = 279117E0178B5A86006BF857 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
220AD7951509019B00748655 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
27CFEC7218E73526007158A4 /* URLs.testdata in Resources */,
22662EF3165D2EEC005FCC4A /* ftp.json in Resources */,
22662EF4165D2EEC005FCC4A /* webdav.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
22C9CF961703327A004610FE /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
22C9CF9F1703327A004610FE /* InfoPlist.strings in Resources */,
22C9CFA51703327A004610FE /* Credits.rtf in Resources */,
22C9CFAB1703327A004610FE /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117E9178B5C64006BF857 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
279117F2178B5C64006BF857 /* InfoPlist.strings in Resources */,
27911838178B5D79006BF857 /* CK2NewFolderWindow.xib in Resources */,
27911837178B5D79006BF857 /* CK2FilePreview.xib in Resources */,
27911839178B5D79006BF857 /* CK2PathFieldWindow.xib in Resources */,
27911836178B5D79006BF857 /* CK2OpenPanel.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117F9178B5C64006BF857 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
27F3372616BC1FB100E70511 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
27F3373116BC1FB100E70511 /* InfoPlist.strings in Resources */,
27F3373716BC1FB100E70511 /* Credits.rtf in Resources */,
27F3373D16BC1FB100E70511 /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
79CFD12209F702BE00172CDD /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
797CC8C709F861770063FF9B /* Localizable.strings in Resources */,
791E83050B0EDAC90060E5FC /* error.png in Resources */,
791E83060B0EDAC90060E5FC /* finished.png in Resources */,
7978FC150B117D7C0048168B /* bookmark.tif in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
220AD7961509019B00748655 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
showEnvVarsInLog = 0;
};
797CBBEB09F854B60063FF9B /* Generate Localizable.strings */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
files = (
);
inputPaths = (
);
name = "Generate Localizable.strings";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = /bin/sh;
shellScript = "# Skip localization for now\nexit 0\n\necho \"Generating Localizable.strings ...\"\n\ncd \"${SRCROOT}\"\ngenstrings -littleEndian -q -u -s LocalizedStringInConnectionKitBundle -o en.lproj *.m\n\n# Convert UTF-16 into UTF-8 with BOM\necho -ne '\\xEF\\xBB\\xBF' > en.lproj/Localizable.strings.utf8\niconv -f UTF-16 -t UTF-8 en.lproj/Localizable.strings >> en.lproj/Localizable.strings.utf8\nmv en.lproj/Localizable.strings.utf8 en.lproj/Localizable.strings\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
220AD7931509019B00748655 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
22CC56F91509048E00F94154 /* PathTests.m in Sources */,
22F6D112165A8A2200443CC9 /* URLTests.m in Sources */,
22662EE4165D1EE4005FCC4A /* BaseCKTests.m in Sources */,
220526BA165E8C9D00A2BBC9 /* FTPAuthenticationTests.m in Sources */,
224AB37D166E500E0066B1C6 /* KMSConnection.m in Sources */,
224AB37E166E500E0066B1C6 /* KMSListener.m in Sources */,
224AB37F166E500E0066B1C6 /* KMSRegExResponder.m in Sources */,
224AB380166E500E0066B1C6 /* KMSResponder.m in Sources */,
224AB381166E500E0066B1C6 /* KMSResponseCollection.m in Sources */,
224AB382166E500E0066B1C6 /* KMSServer.m in Sources */,
224AB387166E501C0066B1C6 /* KMSCollectionTests.m in Sources */,
224AB38A166E52680066B1C6 /* KMSTestCase.m in Sources */,
224AB38C166E587F0066B1C6 /* KMSManualTests.m in Sources */,
22407D54166F9A6100E1EAD4 /* BaseCKProtocolTests.m in Sources */,
22FEB6691680818800BB778B /* KMSTranscriptEntry.m in Sources */,
225FCA3816B046F800A9F5AE /* CKUploaderTests.m in Sources */,
2246AF6516B99987001D39D9 /* KMSSendStringCommand.m in Sources */,
2246AF6616B99987001D39D9 /* KMSSendDataCommand.m in Sources */,
2246AF6716B99987001D39D9 /* KMSSendServerDataCommand.m in Sources */,
2246AF6816B99987001D39D9 /* KMSPauseCommand.m in Sources */,
2246AF6916B99987001D39D9 /* KMSCommand.m in Sources */,
2246AF6A16B99987001D39D9 /* KMSCloseCommand.m in Sources */,
278CFE1316BADE030018A14B /* URLCanonicalizationTests.m in Sources */,
27999BAB170B4B9800A54BEE /* CK2FileOperationWithTestSupport.m in Sources */,
27999BB7170B4BA200A54BEE /* CK2FileManagerWithTestSupport.m in Sources */,
220C11961715C5E20086F199 /* ErrorTests.m in Sources */,
22AC1C141742980000AB09E1 /* FTPTests.m in Sources */,
22AC1C151742980000AB09E1 /* SFTPTests.m in Sources */,
22AC1C161742980000AB09E1 /* WebDAVTests.m in Sources */,
22AC1C1917429F8200AB09E1 /* URLAppendingTests.m in Sources */,
22AC1C1B17429FAA00AB09E1 /* URLDirectoryTests.m in Sources */,
2298E4AB17442272005A4160 /* FileTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
22C9CF941703327A004610FE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
22C9CFA11703327A004610FE /* main.m in Sources */,
22C9CFA81703327A004610FE /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117E6178B5C64006BF857 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2791182F178B5D59006BF857 /* CK2FileSizeFormatter.m in Sources */,
27911829178B5D59006BF857 /* CK2IconView.m in Sources */,
2791182D178B5D59006BF857 /* CK2BrowserPreviewView.m in Sources */,
27911823178B5D59006BF857 /* CK2PathFieldWindowController.m in Sources */,
2791182B178B5D59006BF857 /* CK2BrowserPreviewController.m in Sources */,
27911821178B5D59006BF857 /* CK2PathControl.m in Sources */,
27911833178B5D59006BF857 /* NSURL+CK2OpenPanel.m in Sources */,
2791181F178B5D59006BF857 /* CK2FileCell.m in Sources */,
27911827178B5D59006BF857 /* CK2IconItemView.m in Sources */,
27911835178B5D59006BF857 /* NSImage+CK2OpenPanel.m in Sources */,
27911811178B5D3E006BF857 /* CK2OpenPanel.m in Sources */,
27911812178B5D4B006BF857 /* CK2OpenPanelController.m in Sources */,
27911817178B5D59006BF857 /* CK2OpenPanelIconViewController.m in Sources */,
27911819178B5D59006BF857 /* CK2OpenPanelListViewController.m in Sources */,
2791181B178B5D59006BF857 /* CK2OpenPanelColumnViewController.m in Sources */,
27911815178B5D59006BF857 /* CK2OpenPanelViewController.m in Sources */,
2791181D178B5D59006BF857 /* CK2NewFolderWindowController.m in Sources */,
27911825178B5D59006BF857 /* CK2IconViewItem.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
279117F7178B5C64006BF857 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
27F3372416BC1FB100E70511 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
27F3373316BC1FB100E70511 /* main.m in Sources */,
27F3373A16BC1FB100E70511 /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
79CFD12309F702BE00172CDD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7983DF8F0B0C0FAC00F5078E /* CKTransferRecord.m in Sources */,
798313CA0B0D67E000F5078E /* CKTransferProgressCell.m in Sources */,
27D03B431471787000FEA588 /* CKUploader.m in Sources */,
2743E80A1622E47600019979 /* CK2FileManager.m in Sources */,
27ADC5781AC0CD7D0085C7F7 /* CK2CurlTransferStackManager.m in Sources */,
2790A82A1627636E000C9D9F /* CK2Protocol.m in Sources */,
2790A94916278F1D000C9D9F /* CK2FTPProtocol.m in Sources */,
27F394F6162C162900944F43 /* CK2SFTPProtocol.m in Sources */,
27431CA11630381D00F6FB58 /* CK2FileProtocol.m in Sources */,
2288CD76165A99FC00F34E24 /* CK2WebDAVProtocol.m in Sources */,
27A2072C1671634800D8284D /* CK2CURLBasedProtocol.m in Sources */,
278D8B7A167FF35D00622468 /* CK2Authentication.m in Sources */,
27993E8516FCB30D008DC1B0 /* CK2FileOperation.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
220526FD165EA20600A2BBC9 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = CURLHandle;
targetProxy = 220526FC165EA20600A2BBC9 /* PBXContainerItemProxy */;
};
220AD7AE1509021A00748655 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 79CFD12509F702BE00172CDD /* ConnectionKit */;
targetProxy = 220AD7AD1509021A00748655 /* PBXContainerItemProxy */;
};
2218212A170209D300584589 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = CURLHandleTests;
targetProxy = 22182129170209D300584589 /* PBXContainerItemProxy */;
};
27911800178B5C64006BF857 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 279117EA178B5C64006BF857 /* ConnectionKitUI */;
targetProxy = 279117FF178B5C64006BF857 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
22C9CF9D1703327A004610FE /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
22C9CF9E1703327A004610FE /* en */,
);
name = InfoPlist.strings;
sourceTree = "";
};
22C9CFA31703327A004610FE /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
22C9CFA41703327A004610FE /* en */,
);
name = Credits.rtf;
sourceTree = "";
};
22C9CFA91703327A004610FE /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
22C9CFAA1703327A004610FE /* en */,
);
name = MainMenu.xib;
sourceTree = "";
};
279117F0178B5C64006BF857 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
279117F1178B5C64006BF857 /* en */,
);
name = InfoPlist.strings;
sourceTree = "";
};
27F3372F16BC1FB100E70511 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
27F3373016BC1FB100E70511 /* en */,
);
name = InfoPlist.strings;
sourceTree = "";
};
27F3373516BC1FB100E70511 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
27F3373616BC1FB100E70511 /* en */,
);
name = Credits.rtf;
sourceTree = "";
};
27F3373B16BC1FB100E70511 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
27F3373C16BC1FB100E70511 /* en */,
);
name = MainMenu.xib;
sourceTree = "";
};
323B7349170E253900219F9A /* CK2OpenPanel.xib */ = {
isa = PBXVariantGroup;
children = (
323B7348170E253900219F9A /* en */,
);
name = CK2OpenPanel.xib;
sourceTree = "";
};
323B7356170E254800219F9A /* CK2FilePreview.xib */ = {
isa = PBXVariantGroup;
children = (
323B7355170E254800219F9A /* en */,
);
name = CK2FilePreview.xib;
sourceTree = "";
};
323B7359170E255200219F9A /* CK2NewFolderWindow.xib */ = {
isa = PBXVariantGroup;
children = (
323B7358170E255200219F9A /* en */,
);
name = CK2NewFolderWindow.xib;
sourceTree = "";
};
323B735C170E256000219F9A /* CK2PathFieldWindow.xib */ = {
isa = PBXVariantGroup;
children = (
323B735B170E256000219F9A /* en */,
);
name = CK2PathFieldWindow.xib;
sourceTree = "";
};
797CC8C509F861770063FF9B /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
797CC8C609F861770063FF9B /* en */,
3C2D8EC10A63FF31008FE1B0 /* zh_TW */,
3C2D8EC20A63FF3B008FE1B0 /* fr */,
3C2D8EC30A63FF41008FE1B0 /* da */,
CEA9AFD30A64224100855897 /* ja */,
CEB563850A7AB7070081179A /* de */,
CE1AD3DF0A7E845A0083C01E /* it */,
CE55A6620AD194740091C8AE /* zh_CN */,
CE953A04102BACE70066C08F /* pt_BR */,
CE94B9101463124A00F90408 /* es */,
);
name = Localizable.strings;
sourceTree = "";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
220AD7A81509019B00748655 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = UnitTests/UnitTests_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "UnitTests/UnitTest-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "\"@loader_path/../Frameworks\" \"@loader_path/../Frameworks/ConnectionKit.framework/Versions/Current/Frameworks\"";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/CurlHandle/SFTP\"",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.UnitTest;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
220AD7A91509019B00748655 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = UnitTests/UnitTests_Prefix.pch;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "UnitTests/UnitTest-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "\"@loader_path/../Frameworks\" \"@loader_path/../Frameworks/ConnectionKit.framework/Versions/Current/Frameworks\"";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/CurlHandle/SFTP\"",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.UnitTest;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
22C9CFAC1703327A004610FE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ProfilingTester/ProfilingTester-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "ProfilingTester/ProfilingTester-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
22C9CFAD1703327A004610FE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ProfilingTester/ProfilingTester-Prefix.pch";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "ProfilingTester/ProfilingTester-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
2791180B178B5C64006BF857 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ConnectionKitUI/ConnectionKitUI-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "ConnectionKitUI/ConnectionKitUI-Info.plist";
INSTALL_PATH = "@rpath";
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
WRAPPER_EXTENSION = framework;
};
name = Debug;
};
2791180C178B5C64006BF857 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ConnectionKitUI/ConnectionKitUI-Prefix.pch";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "ConnectionKitUI/ConnectionKitUI-Info.plist";
INSTALL_PATH = "@rpath";
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
WRAPPER_EXTENSION = framework;
};
name = Release;
};
2791180E178B5C64006BF857 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ConnectionKit.framework/Versions/A/ConnectionKit";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ConnectionKitUI/ConnectionKitUI-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "ConnectionKitUITests/ConnectionKitUITests-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
2791180F178B5C64006BF857 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ConnectionKit.framework/Versions/A/ConnectionKit";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ConnectionKitUI/ConnectionKitUI-Prefix.pch";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
INFOPLIST_FILE = "ConnectionKitUITests/ConnectionKitUITests-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
27F3373F16BC1FB100E70511 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "AuthTester/AuthTester-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "AuthTester/AuthTester-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.connection.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
27F3374016BC1FB100E70511 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "AuthTester/AuthTester-Prefix.pch";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
INFOPLIST_FILE = "AuthTester/AuthTester-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_BUNDLE_IDENTIFIER = "com.karelia.connection.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = app;
};
name = Release;
};
79CFD12909F702BF00172CDD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PFE_FILE_C_DIALECTS = "objective-c c++ objective-c++";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = ConnectionKit/Connection_Prefix.pch;
HEADER_SEARCH_PATHS = "\"$(SOURCE_ROOT)/CURLHandle/SFTP/libssh2/include\"";
INFOPLIST_FILE = "Resources/Framework-Info.plist";
INSTALL_PATH = "@rpath";
LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
"\"$(SRCROOT)/CURLHandle/SFTP\"",
);
LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\"";
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
AppKit,
);
PRODUCT_BUNDLE_IDENTIFIER = com.dlsxtreme.connection;
PRODUCT_NAME = ConnectionKit;
RUN_CLANG_STATIC_ANALYZER = YES;
SKIP_INSTALL = YES;
WARNING_CFLAGS = "-Wdocumentation";
ZERO_LINK = NO;
};
name = Debug;
};
79CFD12A09F702BF00172CDD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PFE_FILE_C_DIALECTS = "objective-c c++ objective-c++";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = ConnectionKit/Connection_Prefix.pch;
HEADER_SEARCH_PATHS = "\"$(SOURCE_ROOT)/CURLHandle/SFTP/libssh2/include\"";
INFOPLIST_FILE = "Resources/Framework-Info.plist";
INSTALL_PATH = "@rpath";
LD_RUNPATH_SEARCH_PATHS = "@loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
"\"$(SRCROOT)/CURLHandle/SFTP\"",
);
LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\"";
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
AppKit,
);
PRODUCT_BUNDLE_IDENTIFIER = com.dlsxtreme.connection;
PRODUCT_NAME = ConnectionKit;
RUN_CLANG_STATIC_ANALYZER = YES;
SKIP_INSTALL = YES;
WARNING_CFLAGS = "-Wdocumentation";
ZERO_LINK = NO;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_TESTABILITY = YES;
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
220AD7A71509019B00748655 /* Build configuration list for PBXNativeTarget "UnitTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
220AD7A81509019B00748655 /* Debug */,
220AD7A91509019B00748655 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
22C9CFB91703327A004610FE /* Build configuration list for PBXNativeTarget "ProfilingTester" */ = {
isa = XCConfigurationList;
buildConfigurations = (
22C9CFAC1703327A004610FE /* Debug */,
22C9CFAD1703327A004610FE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2791180A178B5C64006BF857 /* Build configuration list for PBXNativeTarget "ConnectionKitUI" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2791180B178B5C64006BF857 /* Debug */,
2791180C178B5C64006BF857 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2791180D178B5C64006BF857 /* Build configuration list for PBXNativeTarget "ConnectionKitUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2791180E178B5C64006BF857 /* Debug */,
2791180F178B5C64006BF857 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
27F3373E16BC1FB100E70511 /* Build configuration list for PBXNativeTarget "AuthTester" */ = {
isa = XCConfigurationList;
buildConfigurations = (
27F3373F16BC1FB100E70511 /* Debug */,
27F3374016BC1FB100E70511 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
79CFD12809F702BF00172CDD /* Build configuration list for PBXNativeTarget "ConnectionKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
79CFD12909F702BF00172CDD /* Debug */,
79CFD12A09F702BF00172CDD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Connection" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}
================================================
FILE: Connection.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
================================================
FILE: Connection.xcodeproj/xcshareddata/xcschemes/ConnectionKit.xcscheme
================================================
================================================
FILE: ConnectionKit/CK2Authentication.h
================================================
//
// CK2Authentication.h
// Connection
//
// Created by Mike on 18/12/2012.
//
//
#import
#pragma mark SSH Host Fingerprint
typedef NS_ENUM(NSInteger, CK2KnownHostMatch) {
CK2KnownHostMatchOK,
CK2KnownHostMatchMismatch,
CK2KnownHostMatchMissing,
};
typedef NS_ENUM(NSInteger, CK2KnownHostType) {
CK2KnownHostTypeUnknown,
CK2KnownHostTypeRSA1,
CK2KnownHostTypeRSA,
CK2KnownHostTypeDSS,
};
@interface NSURLProtectionSpace (CK2SSHHostFingerprint)
/**
The result of ConnectionKit checking the host's fingerprint against a local known_hosts file.
Upon connecting to an SSH server, ConnectionKit compares its host fingerprint
against the contents of the local known_hosts file. An authentication challenge
is then issued to the delegate asking it how it would like to handle the result
of that check. This method encapsulates that result:
- `CK2KnownHostMatchOK` — the server and known_hosts match.
- `CK2KnownHostMatchMissing` — the server appears not to have been connected to before, as no entry for it is present in known_hosts.
- `CK2KnownHostMatchMismatch` — the server's fingerprint is different to that in the known_hosts file. It is likely the server has been compromised, modified, or replaced
@return One of the CK2KnownHostMatch enum. 0 for auth methods other than CK2AuthenticationMethodHostFingerprint.
*/
- (CK2KnownHostMatch)ck2_knownHostMatch;
/**
@result The raw data of the server's public SSH key. (`nil` if the `authenticationMethod` is not `CK2AuthenticationMethodHostFingerprint`)
*/
@property(readonly, copy, getter=ck2_serverPublicKey) NSData *serverPublicKey;
/**
@result The type of the server's public SSH key. (`CK2KnownHostTypeUnknown` if the `authenticationMethod` is not `CK2AuthenticationMethodHostFingerprint`)
*/
@property(readonly, getter=ck2_serverKnownHostType) CK2KnownHostType serverKnownHostType;
/**
@const CK2AuthenticationMethodHostFingerprint
@abstract The authentication method used by SSH connections for checking a host's fingerprint
*/
extern NSString * const CK2AuthenticationMethodHostFingerprint;
/**
Creates a protection space object to encapsulate the result of checking an SSH server's host fingerprint
Generally clients are handed `NSURLProtectionSpace`s by ConnectionKit and have
no need to construct their own. So can probably ignore this method :)
@param host name of the server being connected to.
@param match is one of CK2KnownHostMatch's enumerations that declares the result of the check.
@return a protection spaces whose `-authenticationMethod` is `CK2AuthenticationMethodHostFingerprint`.
*/
+ (NSURLProtectionSpace *)ck2_protectionSpaceWithHost:(NSString *)host knownHostMatch:(CK2KnownHostMatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;
@end
@interface NSURLCredential (CK2SSHHostFingerprint)
/**
Constructs a credential to encapsulate the outcome of evaluating an SSH server's
host fingerprint.
@param persistence indicates whether new keys should be added to the known_hosts file
@return the credential
*/
+ (NSURLCredential *)ck2_credentialForKnownHostWithPersistence:(NSURLCredentialPersistence)persistence;
@end
#pragma mark SSH Public Key Auth
@interface NSURLCredential (CK2SSHPublicKey)
/**
Constructs a credential to encapsulate the use of public key authentication
@param user to log in as
@param publicKey is the location of the public key file. If using OpenSSL (usually the case on OS X), pass nil here to have the public key automatically derived from the private key
@param privateKey is the location of the private key file. Pass nil to use SSH-Agent instead (note: fails when sandboxed)
@param passphrase is used to decrypt a passphrase-protected private key file
@param persistence specifies whether to store passphrase in the keychain or not
@return the credential
*/
+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user
publicKeyURL:(NSURL *)publicKey
privateKeyURL:(NSURL *)privateKey
password:(NSString *)passphrase
persistence:(NSURLCredentialPersistence)persistence;
@end
================================================
FILE: ConnectionKit/CK2Authentication.m
================================================
//
// CK2Authentication.m
// Connection
//
// Created by Mike on 18/12/2012.
//
//
#import "CK2Authentication.h"
#import
#pragma mark SSH Host Fingerprint
@interface CK2SSHHostFingerprintProtectionSpace : NSURLProtectionSpace
{
CK2KnownHostMatch _match;
NSData *_publicKey;
CK2KnownHostType _publicKeyType;
}
@end
@implementation CK2SSHHostFingerprintProtectionSpace
- initWithHost:(NSString *)host match:(enum curl_khmatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;
{
if (self = [self initWithHost:host port:0 protocol:@"ssh" realm:nil authenticationMethod:CK2AuthenticationMethodHostFingerprint])
{
_match = match;
_publicKey = [key copy];
_publicKeyType = keyType;
}
return self;
}
- (void)dealloc;
{
[_publicKey release];
[super dealloc];
}
// Force it to return correct thing
- (NSString *)authenticationMethod; { return CK2AuthenticationMethodHostFingerprint; }
- (NSString *)protocol; { return @"ssh"; }
- (CK2KnownHostMatch)ck2_knownHostMatch; { return _match; }
- (NSData *)ck2_serverPublicKey; { return _publicKey; }
- (CK2KnownHostType)ck2_serverKnownHostType; { return _publicKeyType; }
// Make sure super doesn't create an actual copy
- (id)copyWithZone:(NSZone *)zone; { return [self retain]; }
@end
@implementation NSURLProtectionSpace (CK2SSHHostFingerprint)
- (CK2KnownHostMatch)ck2_knownHostMatch; { return 0; }
- (NSData *)ck2_serverPublicKey; { return nil; }
- (CK2KnownHostType)ck2_serverKnownHostType; { return CK2KnownHostTypeUnknown; }
NSString * const CK2AuthenticationMethodHostFingerprint = @"CK2AuthenticationMethodHostFingerprint";
+ (NSURLProtectionSpace *)ck2_protectionSpaceWithHost:(NSString *)host knownHostMatch:(CK2KnownHostMatch)match publicKey:(NSData *)key type:(CK2KnownHostType)keyType;
{
return [[[CK2SSHHostFingerprintProtectionSpace alloc] initWithHost:host match:match publicKey:key type:keyType] autorelease];
}
@end
@implementation NSURLCredential (CK2SSHHostFingerprint)
+ (NSURLCredential *)ck2_credentialForKnownHostWithPersistence:(NSURLCredentialPersistence)persistence;
{
return [self credentialWithUser:nil password:nil persistence:persistence];
}
@end
#pragma mark -
@interface NSURLCredential (SFTPWrapperSuppliedMethods)
+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user
publicKeyURL:(NSURL *)publicKey
privateKeyURL:(NSURL *)privateKey;
- (NSURLCredential *)ck2_credentialWithPassword:(NSString *)password persistence:(NSURLCredentialPersistence)persistence;
@end
@implementation NSURLCredential (CK2SSHPublicKey)
+ (NSURLCredential *)ck2_credentialWithUser:(NSString *)user
publicKeyURL:(NSURL *)publicKey
privateKeyURL:(NSURL *)privateKey
password:(NSString *)password
persistence:(NSURLCredentialPersistence)persistence;
{
NSURLCredential *result = [self ck2_credentialWithUser:user publicKeyURL:publicKey privateKeyURL:privateKey];
result = [result ck2_credentialWithPassword:password persistence:persistence];
return result;
}
@end
================================================
FILE: ConnectionKit/CK2BrowserPreviewController.h
================================================
//
// CK2BrowserPreviewControllerViewController.h
// CKTest
//
// Created by Paul Kim on 12/26/12.
// Copyright (c) 2012 Paul Kim. All rights reserved.
//
#import
@interface CK2BrowserPreviewController : NSViewController
{
}
- (id)init;
@end
================================================
FILE: ConnectionKit/CK2BrowserPreviewController.m
================================================
//
// CK2BrowserPreviewControllerViewController.m
// CKTest
//
// Created by Paul Kim on 12/26/12.
// Copyright (c) 2012 Paul Kim. All rights reserved.
//
#import "CK2BrowserPreviewController.h"
#import "CK2BrowserPreviewView.h"
#import "NSURL+CK2OpenPanel.h"
@implementation CK2BrowserPreviewController
- (id)init;
{
if ((self = [super initWithNibName:@"CK2FilePreview" bundle:[NSBundle bundleForClass:[self class]]]) != nil)
{
}
return self;
}
- (void)loadView
{
[super loadView];
}
- (void)setRepresentedObject:(id)representedObject
{
[super setRepresentedObject:representedObject];
[(CK2BrowserPreviewView *)[self view] setURL:representedObject];
}
@end
================================================
FILE: ConnectionKit/CK2BrowserPreviewView.h
================================================
//
// CK2BrowserPreviewView.h
// Connection
//
// Created by Paul Kim on 1/18/13.
//
//
#import
@interface CK2BrowserPreviewView : NSView
{
IBOutlet NSImageView *_iconView;
IBOutlet NSTextField *_nameField;
IBOutlet NSTextField *_kindField;
IBOutlet NSTextField *_sizeField;
IBOutlet NSTextField *_dateModifiedField;
IBOutlet NSTextField *_nameLabel;
IBOutlet NSTextField *_kindLabel;
IBOutlet NSTextField *_sizeLabel;
IBOutlet NSTextField *_dateModifiedLabel;
NSRect _separatorRect;
NSGradient *_separatorGradient;
}
- (void)setURL:(NSURL *)url;
@end
================================================
FILE: ConnectionKit/CK2BrowserPreviewView.m
================================================
//
// CK2BrowserPreviewView.m
// Connection
//
// Created by Paul Kim on 1/18/13.
//
//
#import "CK2BrowserPreviewView.h"
#import "NSURL+CK2OpenPanel.h"
#define MARGIN 24.0
#define LABELS_TOP_MARGIN 10.0
#define LABELS_LEFT_MARGIN 20.0
#define LABELS_RIGHT_MARGIN 10.0
@implementation CK2BrowserPreviewView
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[_separatorGradient release];
[super dealloc];
}
- (void)drawRect:(NSRect)dirtyRect
{
if (_separatorGradient == nil)
{
_separatorGradient = [[NSGradient alloc] initWithColorsAndLocations:
[NSColor colorWithCalibratedWhite:1.0 alpha:0.0],
0.0,
[NSColor colorWithCalibratedWhite:0.83 alpha:1.0],
0.25,
[NSColor colorWithCalibratedWhite:0.83 alpha:1.0],
0.75,
[NSColor colorWithCalibratedWhite:1.0 alpha:0.0],
1.0,
nil];
}
[_separatorGradient drawInRect:_separatorRect angle:0.0];
}
- (void)setURL:(NSURL *)url
{
if (url != nil)
{
[_iconView setObjectValue:[url ck2_icon]];
[_nameField setStringValue:[url ck2_displayName]];
[_sizeField setObjectValue:[url ck2_size]];
[_kindField setStringValue:[url ck2_kind]];
[_dateModifiedField setObjectValue:[url ck2_dateModified]];
}
else
{
[_iconView setObjectValue:nil];
[_nameField setStringValue:@""];
[_sizeField setObjectValue:@""];
[_kindField setStringValue:@""];
[_dateModifiedField setObjectValue:@""];
}
}
- (void)setFrame:(NSRect)frameRect
{
[super setFrame:frameRect];
[self tile];
}
- (void)tileLabelField:(NSTextField *)labelField valueField:(NSTextField *)valueField
{
NSRect bounds, rect;
CGFloat xSep;
bounds = [self bounds];
xSep = NSWidth(bounds) * .4;
rect = [labelField frame];
rect.origin.x = MAX(xSep - NSWidth(rect), LABELS_LEFT_MARGIN);
[labelField setFrame:rect];
rect = [valueField frame];
rect.origin.x = xSep;
rect.size.width = NSMaxX(bounds) - LABELS_RIGHT_MARGIN - rect.origin.x;
[valueField setFrame:rect];
}
- (void)tileLabels
{
NSRect rect;
NSSize size;
CGFloat y, height;
[self tileLabelField:_dateModifiedLabel valueField:_dateModifiedField];
[self tileLabelField:_sizeLabel valueField:_sizeField];
[self tileLabelField:_kindLabel valueField:_kindField];
[self tileLabelField:_nameLabel valueField:_nameField];
// Allow name field to take multiple lines (up to 3)
height = NSHeight([_nameLabel frame]);
rect = [_nameField frame];
rect.size.height = CGFLOAT_MAX;
size = [[_nameField cell] cellSizeForBounds:rect];
rect.size.height = MAX(size.height, height);
rect.size.height = MIN(rect.size.height, 3 * height);
[_nameField setFrame:rect];
y = NSMaxY(rect);
rect = [_nameLabel frame];
rect.origin.y = y - NSHeight(rect);
[_nameLabel setFrame:rect];
}
- (void)tile
{
NSRect bounds, iconFrame;
bounds = [self bounds];
[self tileLabels];
_separatorRect.size.width = NSWidth(bounds) * .8;
_separatorRect.size.height = 1.0;
_separatorRect.origin.x = NSMinX(bounds) + (NSWidth(bounds) - NSWidth(_separatorRect)) / 2.0;
_separatorRect.origin.y = NSMaxY([_nameLabel frame]) + LABELS_TOP_MARGIN;
iconFrame.origin = NSZeroPoint; // Unnecessary but added to shut up the static analyzer
iconFrame.size.width = MIN(NSWidth(bounds) - 2 * MARGIN, NSHeight(bounds) - NSMaxY(_separatorRect) - 2 * MARGIN);
iconFrame.size.height = NSWidth(iconFrame);
iconFrame.origin.x = NSMinX(bounds) + (NSWidth(bounds) - NSWidth(iconFrame)) / 2.0;
iconFrame.origin.y = NSMaxY(_separatorRect) + MARGIN;
[_iconView setFrame:iconFrame];
[self setNeedsDisplay:YES];
}
- (void)superviewFrameChanged:(NSNotification *)notification
{
[self setFrame:[[self superview] bounds]];
}
- (void)removeFromSuperview
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSViewFrameDidChangeNotification object:[self superview]];
[super removeFromSuperview];
}
- (void)viewDidMoveToSuperview
{
NSView *superview;
superview = [self superview];
if (superview != nil)
{
[superview setPostsFrameChangedNotifications:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(superviewFrameChanged:) name:NSViewFrameDidChangeNotification object:superview];
[self superviewFrameChanged:nil];
}
}
@end
================================================
FILE: ConnectionKit/CK2CURLBasedProtocol.h
================================================
//
// CK2CURLBasedProtocol.h
// Connection
//
// Created by Mike on 06/12/2012.
//
//
#import "CK2Protocol.h"
#import
@class CK2RemoteURL;
@interface CK2CURLBasedProtocol : CK2Protocol
{
CURLTransfer *_transfer;
BOOL _cancelled;
NSString *_user;
void (^_completionHandler)(NSError *error);
void (^_dataBlock)(NSData *data);
int64_t _totalBytesWritten;
int64_t _totalBytesExpectedToWrite;
}
#pragma mark Initialisation
// In any of these methods, if completion handler is nil, the standard behaviour of reporting to the client will be performed
- (id)initWithRequest:(NSURLRequest *)request client:(id )client completionHandler:(void (^)(NSError *))handler;
- (id)initWithRequest:(NSURLRequest *)request client:(id )client dataHandler:(void (^)(NSData *))dataBlock completionHandler:(void (^)(NSError *))handler;
- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)request createIntermediateDirectories:(BOOL)createIntermediates client:(id )client completionHandler:(void (^)(NSError *error))handler;
// Already handled for you; can override in a subclass if you want
- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id)client;
- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates client:(id)client completionHandler:(void (^)(NSError *error))handler;
#pragma mark Loading
// If the protocol requires authentication, override -start to fire off an authentication challenge to the client. When a response is received to the challenge, CK2CURLBasedProtocol automatically handles it to start up the handle/request
- (void)start;
- (void)startWithProtectionSpace:(NSURLProtectionSpace *)protectionSpace;
- (void)startWithRequest:(NSURLRequest *)request credential:(NSURLCredential *)credential;
#pragma mark Progress
@property(nonatomic, readonly) int64_t totalBytesWritten;
@property(nonatomic, readonly) int64_t totalBytesExpectedToWrite;
#pragma mark Customization
+ (BOOL)usesMultiHandle; // defaults to YES. Subclasses can override to be NO and fall back to the old synchronous "easy" backend
- (void)popCompletionHandlerByExecutingWithError:(NSError *)error;
- (void)reportToProtocolWithError:(NSError*)error;
@end
================================================
FILE: ConnectionKit/CK2CURLBasedProtocol.m
================================================
//
// CK2CURLBasedProtocol.m
// Connection
//
// Created by Mike on 06/12/2012.
//
//
#import "CK2CURLBasedProtocol.h"
#import "CK2CurlTransferStackManager.h"
#import
#import
#import // for NSImage
#import
@implementation CK2CURLBasedProtocol
- (id)initWithRequest:(NSURLRequest *)request client:(id )client completionHandler:(void (^)(NSError *))handler;
{
if (self = [self initWithRequest:request client:client])
{
[self pushCompletionHandler:^(NSError *error) {
// Update cache
if (!error)
{
[self updateHomeDirectoryStore];
}
// Report the completion to handler or protocol
if (handler)
{
handler(error);
}
else
{
[self reportToProtocolWithError:error];
}
// Clean up transfer
[_transfer release]; _transfer = nil;
}];
}
return self;
}
- (id)initWithRequest:(NSURLRequest *)request client:(id )client dataHandler:(void (^)(NSData *))dataBlock completionHandler:(void (^)(NSError *))handler
{
if (self = [self initWithRequest:request client:client completionHandler:handler])
{
_dataBlock = [dataBlock copy];
}
return self;
}
- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)sourceRequest createIntermediateDirectories:(BOOL)createIntermediates client:(id )client completionHandler:(void (^)(NSError *error))handler;
{
// Navigate to the directory
// @"HEAD" => CURLOPT_NOBODY, which stops libcurl from trying to list the directory's contents
// If the connection is already at that directory then curl wisely does nothing
NSMutableURLRequest *request = [sourceRequest mutableCopy];
[request setHTTPMethod:@"HEAD"];
[request curl_setCreateIntermediateDirectories:createIntermediates];
// Custom commands once we're in the correct directory
// CURLOPT_PREQUOTE does much the same thing, but sometimes runs the command twice in my testing
[request curl_setPostTransferCommands:commands];
self = [self initWithRequest:request client:client dataHandler:nil completionHandler:handler];
[request release];
return self;
}
- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates client:(id)client completionHandler:(void (^)(NSError *error))handler;
{
if ([request curl_createIntermediateDirectories] != createIntermediates)
{
NSMutableURLRequest *mutableRequest = [[request mutableCopy] autorelease];
[mutableRequest curl_setCreateIntermediateDirectories:createIntermediates];
request = mutableRequest;
}
if (self = [self initWithRequest:request client:client completionHandler:handler])
{
_totalBytesExpectedToWrite = size;
}
return self;
}
#pragma mark Directory Enumeration
- (BOOL)shouldEnumerateFilename:(NSString *)name options:(NSDirectoryEnumerationOptions)mask;
{
// SFTP and some FTP servers report . and .. which we don't care about
if ([name isEqualToString:@"."] || [name isEqualToString:@".."])
{
return NO;
}
if ((mask & NSDirectoryEnumerationSkipsHiddenFiles) && [name hasPrefix:@"."]) return NO;
return YES;
}
- (NSError*)processData:(NSMutableData*)data request:(NSURLRequest *)request url:(NSURL*)directoryURL path:(NSString*)directoryPath keys:(NSArray*)keys options:(NSDirectoryEnumerationOptions)mask
{
NSError* result = nil;
// Process the data to make a directory listing
while (1)
{
CFDictionaryRef parsedDict = NULL;
CFIndex bytesConsumed = CFFTPCreateParsedResourceListing(NULL,
[data bytes], [data length],
&parsedDict);
if (bytesConsumed > 0)
{
[data replaceBytesInRange:NSMakeRange(0, bytesConsumed) withBytes:NULL length:0];
// Make sure CFFTPCreateParsedResourceListing was able to properly
// parse the incoming data
if (parsedDict)
{
NSString *name = [self pathForKey:kCFFTPResourceName inDictionary:parsedDict];
if ([self shouldEnumerateFilename:name options:mask])
{
NSNumber *type = CFDictionaryGetValue(parsedDict, kCFFTPResourceType);
BOOL isDirectory = [type intValue] == DT_DIR;
NSURL *aURL = [directoryURL URLByAppendingPathComponent:name];
if (isDirectory && !CFURLHasDirectoryPath((CFURLRef)aURL))
{
aURL = [aURL URLByAppendingPathComponent:@""]; // http://www.mikeabdullah.net/guaranteeing-directory-urls.html
}
// Fill in requested keys as best we can
NSArray *keysToFill = (keys ? keys : self.class.defaultPropertyKeys);
for (NSString *aKey in keysToFill)
{
if ([aKey isEqualToString:NSURLContentModificationDateKey])
{
[CK2FileManager setTemporaryResourceValue:CFDictionaryGetValue(parsedDict, kCFFTPResourceModDate) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLIsDirectoryKey])
{
[CK2FileManager setTemporaryResourceValue:@(isDirectory) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLIsHiddenKey])
{
[CK2FileManager setTemporaryResourceValue:@([name hasPrefix:@"."]) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLIsRegularFileKey])
{
[CK2FileManager setTemporaryResourceValue:@([type intValue] == DT_REG) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLIsSymbolicLinkKey])
{
[CK2FileManager setTemporaryResourceValue:@([type intValue] == DT_LNK) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLLocalizedTypeDescriptionKey])
{
// Could guess from extension
}
else if ([aKey isEqualToString:NSURLNameKey])
{
[CK2FileManager setTemporaryResourceValue:name forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLParentDirectoryURLKey])
{
[CK2FileManager setTemporaryResourceValue:directoryPath forKey:NSURLParentDirectoryURLKey inURL:aURL];
}
else if ([aKey isEqualToString:NSURLTypeIdentifierKey])
{
// Guess from symlink, extension, and directory
if ([type intValue] == DT_LNK)
{
[CK2FileManager setTemporaryResourceValue:(NSString *)kUTTypeSymLink forKey:aKey inURL:aURL];
}
else
{
NSString *extension = [name pathExtension];
if ([extension length])
{
CFStringRef type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)extension,
(isDirectory ? kUTTypeDirectory : kUTTypeData));
[CK2FileManager setTemporaryResourceValue:(NSString *)type forKey:aKey inURL:aURL];
CFRelease(type);
}
else
{
[CK2FileManager setTemporaryResourceValue:(NSString *)kUTTypeData forKey:aKey inURL:aURL];
}
}
}
else if ([aKey isEqualToString:NSURLFileSizeKey])
{
[CK2FileManager setTemporaryResourceValue:CFDictionaryGetValue(parsedDict, kCFFTPResourceSize) forKey:aKey inURL:aURL];
}
else if ([aKey isEqualToString:CK2URLSymbolicLinkDestinationKey])
{
NSString *path = [self pathForKey:kCFFTPResourceLink inDictionary:parsedDict];
if ([path length])
{
// Servers in my experience hand include a trailing slash to indicate if the target is a directory
// Could generate a CK2RemoteURL instead so as to explicitly mark it as a directory, but that seems unecessary for now
// According to the original CKConnectionOpenPanel source, some servers use a backslash instead. I don't know what though – Windows based ones? If so, do they use backslashes for all path components?
[CK2FileManager setTemporaryResourceValue:[self.class URLWithPath:path relativeToURL:directoryURL] forKey:aKey inURL:aURL];
}
}
else if (&NSURLFileResourceTypeKey && // not available till 10.7
[aKey isEqualToString:NSURLFileResourceTypeKey])
{
NSString *typeValue;
switch ([type integerValue])
{
case DT_CHR:
typeValue = NSURLFileResourceTypeCharacterSpecial;
break;
case DT_DIR:
typeValue = NSURLFileResourceTypeDirectory;
break;
case DT_BLK:
typeValue = NSURLFileResourceTypeBlockSpecial;
break;
case DT_REG:
typeValue = NSURLFileResourceTypeRegular;
break;
case DT_LNK:
typeValue = NSURLFileResourceTypeSymbolicLink;
break;
case DT_SOCK:
typeValue = NSURLFileResourceTypeSocket;
break;
default:
typeValue = NSURLFileResourceTypeUnknown;
}
[CK2FileManager setTemporaryResourceValue:typeValue forKey:aKey inURL:aURL];
}
else if (&NSURLFileSecurityKey && [aKey isEqualToString:NSURLFileSecurityKey])
{
CFFileSecurityRef security = CFFileSecurityCreate(NULL);
NSNumber *mode = CFDictionaryGetValue(parsedDict, kCFFTPResourceMode);
if (CFFileSecuritySetMode(security, mode.unsignedShortValue))
{
[CK2FileManager setTemporaryResourceValue:(NSFileSecurity *)security forKey:aKey inURL:aURL];
}
CFRelease(security);
}
}
[self.client protocol:self didDiscoverItemAtURL:aURL];
}
CFRelease(parsedDict);
}
}
else if (bytesConsumed < 0)
{
// error!
NSDictionary *userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:
[request URL], NSURLErrorFailingURLErrorKey,
[[request URL] absoluteString], NSURLErrorFailingURLStringErrorKey,
nil];
result = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotParseResponse userInfo:userInfo];
[userInfo release];
break;
}
else
{
break;
}
}
return result;
}
// Retrieves the path/filename for a given key, and then tries to take into account tricky encoding issues
// https://github.com/karelia/ConnectionKit/issues/41
- (NSString *)pathForKey:(CFStringRef)key inDictionary:(CFDictionaryRef)dictionary;
{
NSString *result = CFDictionaryGetValue(dictionary, key);
// For strings which fall outside of ASCII, hope that they're UTF-8
if (![result canBeConvertedToEncoding:NSASCIIStringEncoding])
{
NSData *source = [result dataUsingEncoding:NSMacOSRomanStringEncoding];
// technically, this is a little dodgy. -dataUsingEncoding: could generate some sort of BOM, but I don't believe MacRoman has such a concept so we're safe for now
if (source)
{
NSString *utf8 = [[NSString alloc] initWithData:source encoding:NSUTF8StringEncoding];
if (utf8)
{
result = [utf8 autorelease];
}
}
}
return result;
}
- (id)initForEnumeratingDirectoryWithRequest:(NSURLRequest *)request includingPropertiesForKeys:(NSArray *)keys options:(NSDirectoryEnumerationOptions)mask client:(id)client;
{
request = [[self class] newRequestWithRequest:request isDirectory:YES];
NSMutableData *totalData = [[NSMutableData alloc] init];
self = [self initWithRequest:request client:client dataHandler:^(NSData *data) {
[totalData appendData:data];
} completionHandler:^(NSError *error) {
if (error)
{
[client protocol:self didCompleteWithError:error];
}
else
{
// Correct relative paths if we can
NSURL *directoryURL = request.URL;
NSString *directoryPath = [self.class pathOfURLRelativeToHomeDirectory:directoryURL];
NSURL *home = [self.class homeDirectoryURLForServerAtURL:directoryURL];
if (home && ![directoryPath isAbsolutePath])
{
if (directoryPath.length && ![directoryPath hasSuffix:@"/"]) directoryPath = [directoryPath stringByAppendingString:@"/"];
directoryURL = [home URLByAppendingPathComponent:directoryPath];
}
// Report directory itself
if (mask & CK2DirectoryEnumerationIncludesDirectory)
{
[self.client protocol:self didDiscoverItemAtURL:directoryURL];
}
// Process the data to make a directory listing
NSError* error = [self processData:totalData request:request url:directoryURL path:directoryPath keys:keys options:mask];
[self.client protocol:self didCompleteWithError:error];
}
}];
[totalData release];
[request release];
return self;
}
+ (NSArray *)defaultPropertyKeys;
{
NSArray *result = @[NSURLContentModificationDateKey,
NSURLIsDirectoryKey,
NSURLIsRegularFileKey,
NSURLIsSymbolicLinkKey,
NSURLNameKey,
NSURLFileSizeKey,
CK2URLSymbolicLinkDestinationKey];
if (&NSURLFileResourceTypeKey) result = [result arrayByAddingObject:NSURLFileResourceTypeKey];
if (&NSURLFileSecurityKey) result = [result arrayByAddingObject:NSURLFileSecurityKey];
return result;
}
#pragma mark Dealloc
- (void)dealloc;
{
[_transfer release];
[_user release];
[_completionHandler release];
[_dataBlock release];
[super dealloc];
}
#pragma mark Loading
- (void)start; { return [self startWithRequest:self.request credential:nil]; }
- (void)startWithProtectionSpace:(NSURLProtectionSpace *)protectionSpace;
{
NSURLAuthenticationChallenge *challenge = [[NSURLAuthenticationChallenge alloc]
initWithProtectionSpace:protectionSpace
proposedCredential:nil
previousFailureCount:0
failureResponse:nil
error:nil
sender:nil];
[self sendAuthChallenge:challenge];
[challenge release];
}
- (void)sendAuthChallenge:(NSURLAuthenticationChallenge *)challenge;
{
NSParameterAssert(challenge);
[self.client protocol:self didReceiveChallenge:challenge completionHandler:^(CK2AuthChallengeDisposition disposition, NSURLCredential *credential) {
// By default, try once with proposed credential, then give up
// Otherwise, can go round in a loop of failed auth https://karelia.fogbugz.com/f/cases/248882
if (disposition == CK2AuthChallengePerformDefaultHandling && challenge.previousFailureCount == 0) {
credential = challenge.proposedCredential;
disposition = CK2AuthChallengeUseCredential;
}
switch (disposition)
{
case CK2AuthChallengeUseCredential:
{
// Swap out existing handler for one that retries after an auth failure. Stores credential if requested upon success
[self pushCompletionHandler:^(NSError *error) {
if (error.code == NSURLErrorUserAuthenticationRequired && [error.domain isEqualToString:NSURLErrorDomain])
{
[self.client protocol:self
appendString:[NSString stringWithFormat:@"Authentication failed for user %@", credential.user]
toTranscript:CK2TranscriptText];
// Retry auth
NSURLAuthenticationChallenge *newChallenge = [[NSURLAuthenticationChallenge alloc]
initWithProtectionSpace:challenge.protectionSpace
proposedCredential:credential
previousFailureCount:(challenge.previousFailureCount + 1)
failureResponse:nil
error:error
sender:nil];
[self sendAuthChallenge:newChallenge];
[newChallenge release];
}
else
{
if (!error)
{
[[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:challenge.protectionSpace];
}
[self popCompletionHandlerByExecutingWithError:error];
}
}];
[self startWithRequest:self.request credential:credential];
break;
}
default:
{
[self.client protocol:self didCompleteWithError:[NSError errorWithDomain:NSURLErrorDomain
code:NSURLErrorUserCancelledAuthentication
userInfo:nil]];
}
}
}];
}
- (void)startWithRequest:(NSURLRequest *)request credential:(NSURLCredential *)credential;
{
_user = [credential.user copy];
request = [self.client protocol:self willSendRequest:request redirectResponse:nil];
CURLTransferStack* multi = nil;
if ([request respondsToSelector:@selector(ck2_multi)]) // should only be a testing/debugging feature
{
multi = [request performSelector:@selector(ck2_multi)]; // typically this is nil, meaning use the default, but we can override it for test purposes
}
_totalBytesWritten = 0;
if ([[self class] usesMultiHandle])
{
// Nasty, nasty HACK here, to share across the file manager
CK2FileManager *fileManager = [self valueForKeyPath:@"client.fileManager"];
@synchronized(fileManager) {
static void *key = &key;
multi = [objc_getAssociatedObject(fileManager, key) transferStack];
if (!multi) {
CK2CurlTransferStackManager *manager = [[CK2CurlTransferStackManager alloc] init];
multi = manager.transferStack;
objc_setAssociatedObject(fileManager, key, manager, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[manager release];
}
}
_transfer = [[multi transferWithRequest:request credential:credential delegate:self] retain];
[_transfer resume];
}
else
{
// Create the queue & handle for whole app to share
static CURLTransfer *transfer;
static dispatch_queue_t queue;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
transfer = [[CURLTransfer alloc] init];
queue = dispatch_queue_create("com.karelia.connection.fallback-CURLTransfer", NULL);
});
CURLTransfer* transferToUse;
if (multi) // although we're not using the multi, we use it being set here as a signal to use a new handle for this transaction
{
transferToUse = [[[CURLTransfer alloc] init] autorelease];
}
else
{
transferToUse = transfer;
}
// Let the work commence!
dispatch_async(queue, ^{
if (_cancelled) return;
_transfer = [transferToUse retain];
[_transfer sendSynchronousRequest:request credential:credential delegate:self];
});
}
}
- (void)reportToProtocolWithError:(NSError*)error
{
[[self client] protocol:self didCompleteWithError:error];
}
- (void)stop;
{
// Mark as cancelled before actually cancelling so _cancelled has to be YES for any other transfers on the queue
_cancelled = YES;
[_transfer cancel];
}
#pragma mark Progress
@synthesize totalBytesWritten = _totalBytesWritten;
@synthesize totalBytesExpectedToWrite = _totalBytesExpectedToWrite;
#pragma mark Managing the Completion Handler
/* This code is devious and perhaps even evil. Manages a "stack" of completion
* handlers by actually only having a single block. When the block runs, it
* replaces itself with the next one down the stack.
*/
- (void)pushCompletionHandler:(void (^)(NSError*))block;
{
NSParameterAssert(block);
id previousHandler = _completionHandler;
_completionHandler = ^(NSError *error) {
// Put the old handler back, then execute what was actually requested of us
[_completionHandler release]; _completionHandler = previousHandler;
block(error);
};
_completionHandler = [_completionHandler copy];
}
- (void)popCompletionHandlerByExecutingWithError:(NSError *)error;
{
// If the block is nil, that means the entire stack of handlers has already been popped, which should be a programmer error
id keepAlive = _completionHandler;
[keepAlive retain];
_completionHandler(error);
[keepAlive release];
}
#pragma mark URLs
+ (NSURLRequest *)newRequestWithRequest:(NSURLRequest *)request isDirectory:(BOOL)directory;
{
NSURL *url = [request URL];
// CURL is very particular about whether URLs passed to it have directory terminator or not
if (directory != CFURLHasDirectoryPath((CFURLRef)url))
{
if (directory)
{
url = [url URLByAppendingPathComponent:@""];
}
else
{
CFStringRef lastComponent = CFURLCopyLastPathComponent((CFURLRef)url); // keeps %2F kinda intact as a regular slash
url = [[url URLByDeletingLastPathComponent] URLByAppendingPathComponent:(NSString *)lastComponent];
// any slash from %2F will go back in to give a URL containing an extra slash, which should be good enough for libcurl to handle
CFRelease(lastComponent);
}
}
NSMutableURLRequest *result = [request mutableCopy];
[result setURL:url];
return result;
}
#pragma mark Home Directory Store
+ (BOOL)isHomeDirectoryAtURL:(NSURL *)url;
{
NSURL *home = [self homeDirectoryURLForServerAtURL:url];
BOOL result = [[self pathOfURLRelativeToHomeDirectory:url] isEqualToString:[self pathOfURLRelativeToHomeDirectory:home]];
return result;
}
+ (NSURL *)homeDirectoryURLForServerAtURL:(NSURL *)hostURL;
{
NSString *host = [[NSURL URLWithString:@"/" relativeToURL:hostURL] absoluteString].lowercaseString;
NSMutableDictionary *store = [self homeURLsByHostURL];
@synchronized (store)
{
return [store objectForKey:host];
}
}
- (void)updateHomeDirectoryStore;
{
NSString *homeDirectoryPath = [_transfer initialFTPPath];
if ([homeDirectoryPath isAbsolutePath])
{
if (homeDirectoryPath.length > 1 && ![homeDirectoryPath hasSuffix:@"/"]) // ensure it's a directory path
{
homeDirectoryPath = [homeDirectoryPath stringByAppendingString:@"/"];
}
NSURL *homeDirectoryURL = [self.class URLWithPath:homeDirectoryPath relativeToURL:self.request.URL].absoluteURL;
homeDirectoryURL = [self.class URLByReplacingUserInfoInURL:homeDirectoryURL withUser:_user]; // include username
NSString *host = [[NSURL URLWithString:@"/" relativeToURL:homeDirectoryURL] absoluteString].lowercaseString;
NSMutableDictionary *store = [self.class homeURLsByHostURL];
@synchronized (store)
{
[store setObject:homeDirectoryURL forKey:host];
}
}
}
+ (NSMutableDictionary *)homeURLsByHostURL;
{
static NSMutableDictionary *sHomeURLsByHostURL;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sHomeURLsByHostURL = [[NSMutableDictionary alloc] initWithCapacity:1];
});
return sHomeURLsByHostURL;
}
#pragma mark CURLTransferDelegate
- (void)transfer:(CURLTransfer *)transfer didReceiveData:(NSData *)data;
{
[self updateHomeDirectoryStore]; // Make sure is updated before parsing of directory listing
if (_dataBlock) _dataBlock(data);
}
- (void)transfer:(CURLTransfer *)transfer willSendBodyDataOfLength:(NSUInteger)bytesWritten
{
_totalBytesWritten += bytesWritten;
[self.client protocol:self
didSendBodyData:bytesWritten
totalBytesSent:_totalBytesWritten
totalBytesExpectedToSend:self.totalBytesExpectedToWrite];
}
- (void)transfer:(CURLTransfer *)transfer didCompleteWithError:(NSError *)error;
{
[self popCompletionHandlerByExecutingWithError:error];
}
- (void)transfer:(CURLTransfer *)transfer didReceiveDebugInformation:(NSString *)string ofType:(curl_infotype)type;
{
CK2TranscriptType ckType;
switch (type)
{
case CURLINFO_HEADER_IN:
ckType = CK2TranscriptHeaderIn;
break;
case CURLINFO_HEADER_OUT:
ckType = CK2TranscriptHeaderOut;
break;
case CURLINFO_TEXT:
ckType = CK2TranscriptText;
break;
default:
return;
}
[[self client] protocol:self appendString:string toTranscript:ckType];
}
#pragma mark Customization
// Much to my annoyance, multi-socket backend doesn't seem to be working right at the moment
// But we're now using the regular multi API, which seems to be working a treat
+ (BOOL)usesMultiHandle; { return YES; }
@end
================================================
FILE: ConnectionKit/CK2CurlTransferStackManager.h
================================================
//
// CK2CurlTransferStackManager.h
// Connection
//
// Created by Mike on 23/03/2015.
//
//
#import
/**
This is a little wrapper around a CURLTransferStack. We use it to tie each CK2FileManager to a
transfer stack, and invalidate that stack when appropriate.
*/
@interface CK2CurlTransferStackManager : NSObject {
CURLTransferStack *_transferStack;
}
/**
The manager automatically creates a transfer stack for itself
*/
@property(nonatomic, readonly) CURLTransferStack *transferStack;
@end
================================================
FILE: ConnectionKit/CK2CurlTransferStackManager.m
================================================
//
// CK2CurlTransferStackManager.m
// Connection
//
// Created by Mike on 23/03/2015.
//
//
#import "CK2CurlTransferStackManager.h"
@implementation CK2CurlTransferStackManager
- (instancetype)init {
if (self = [super init]) {
_transferStack = [CURLTransferStack transferStackWithDelegate:nil delegateQueue:nil];
}
return self;
}
- (void)dealloc {
// We're being torn down, so figure now is the time to invalidate transfer stack. Crude, but
// there you go.
[self.transferStack finishTransfersAndInvalidate];
[super dealloc];
}
@synthesize transferStack = _transferStack;
@end
================================================
FILE: ConnectionKit/CK2FTPProtocol.h
================================================
//
// CK2FTPProtocol.h
// Connection
//
// Created by Mike on 12/10/2012.
//
//
#import "CK2CURLBasedProtocol.h"
@interface CK2FTPProtocol : CK2CURLBasedProtocol
{
@private
BOOL _atEnd;
// SSL
NSURLCredential *_credential;
NSUInteger _sslFailures;
}
@end
================================================
FILE: ConnectionKit/CK2FTPProtocol.m
================================================
//
// CK2FTPProtocol.m
// Connection
//
// Created by Mike on 12/10/2012.
//
//
#import "CK2FTPProtocol.h"
#import
@interface CK2FTPSProtectionSpace : NSURLProtectionSpace
{
@private
SecTrustRef _trust;
}
- initWithServerTrust:(SecTrustRef)trust host:(NSString *)host port:(NSInteger)port;
@end
#pragma mark -
@implementation CK2FTPProtocol
#pragma mark URLs
+ (BOOL)canHandleURL:(NSURL *)url;
{
NSString *scheme = [url scheme];
return ([@"ftp" caseInsensitiveCompare:scheme] == NSOrderedSame ||
[@"ftpes" caseInsensitiveCompare:scheme] == NSOrderedSame ||
[@"ftps" caseInsensitiveCompare:scheme] == NSOrderedSame);
}
+ (NSURL *)URLWithPath:(NSString *)path relativeToURL:(NSURL *)baseURL;
{
// FTP is special. Absolute paths need to specified with an extra prepended slash
// According to libcurl's docs that should be enough. But with our current build of it, it seems they've gotten stricter
// The FTP spec could be interpreted that the only way to refer to the root directly is with the sequence @"%2F", which decodes as a slash
// That makes it very clear to the library etc. this particular slash is meant to be transmitted to the server, rather than treated as a path component separator
// Happily it also simplifies our code, as coaxing a double slash into NSURL is a mite tricky
if ([path isAbsolutePath])
{
// Pare it back to just a plain path of @"/" and no latter components
NSString *urlString = [[NSURL URLWithString:@"/" relativeToURL:baseURL] absoluteString];
// Tack on the path given to us
// http://www.mikeabdullah.net/escaping-url-paths-in-cocoa.html
CFStringRef escaped = CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)path,
NULL,
CFSTR(";?#"),
kCFStringEncodingUTF8);
NSURL *result = [NSURL URLWithString:[urlString stringByAppendingString:(NSString *)escaped]];
CFRelease(escaped);
return result;
}
return [super URLWithPath:path relativeToURL:baseURL];
}
+ (NSString *)pathOfURLRelativeToHomeDirectory:(NSURL *)URL;
{
// FTP is special. The first slash of the path is to be ignored
// As above, the library seems to be stricter on how the slash is to be encoded these days. I'm not sure whether we should be similarly strict when decoding. Leaving it be for now
CFStringRef strictPath = CFURLCopyStrictPath((CFURLRef)[URL absoluteURL], NULL);
NSString *result = [(NSString *)strictPath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if (strictPath) CFRelease(strictPath);
return result;
}
#pragma mark URL Requests
- (id)initWithRequest:(NSURLRequest *)request client:(id)client;
{
// libcurl doesn't understand ftpes: URLs natively, so convert them back into ftp: with the appropriate connection settings
NSURL *url = request.URL;
if ([url.scheme caseInsensitiveCompare:@"ftpes"] == NSOrderedSame)
{
url = [NSURL URLWithString:[url.absoluteString stringByReplacingCharactersInRange:NSMakeRange(0, 5) // bit hacky
withString:@"ftp"]];
NSMutableURLRequest *mutableRequest = [[request mutableCopy] autorelease];
mutableRequest.URL = url;
[mutableRequest curl_setDesiredSSLLevel:CURLUSESSL_ALL];
request = mutableRequest;
}
return [super initWithRequest:request client:client];
}
#pragma mark Operations
- (id)initWithCustomCommands:(NSArray *)commands request:(NSURLRequest *)childRequest createIntermediateDirectories:(BOOL)createIntermediates client:(id)client completionHandler:(void (^)(NSError *))handler;
{
NSMutableURLRequest *request = [childRequest mutableCopy];
request.URL = [childRequest.URL URLByDeletingLastPathComponent];
self = [super initWithCustomCommands:commands
request:request
createIntermediateDirectories:createIntermediates
client:client
completionHandler:handler];
[request release];
return self;
}
- (id)initForCreatingDirectoryWithRequest:(NSURLRequest *)request withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id)client;
{
return [self initWithCustomCommands:[NSArray arrayWithObject:[@"MKD " stringByAppendingString:[[request URL] lastPathComponent]]]
request:request
createIntermediateDirectories:createIntermediates
client:client
completionHandler:^(NSError *error) {
if (error)
{
error = [self translateStandardErrors:error];
}
[self reportToProtocolWithError:error];
}
];
}
- (id)initForCreatingFileWithRequest:(NSURLRequest *)request size:(int64_t)size withIntermediateDirectories:(BOOL)createIntermediates openingAttributes:(NSDictionary *)attributes client:(id