From 671edf8bc0346333cdd174d525f8a480bbd71e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20A=2E=20A=CC=81lvarez?= Date: Fri, 27 May 2016 20:21:32 +0200 Subject: [PATCH] use ~/Documents/Mini vMac when not sandboxed --- Mini vMac/AppDelegate.h | 1 + Mini vMac/AppDelegate.m | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Mini vMac/AppDelegate.h b/Mini vMac/AppDelegate.h index d020213..77b5eb2 100644 --- a/Mini vMac/AppDelegate.h +++ b/Mini vMac/AppDelegate.h @@ -17,6 +17,7 @@ extern NSString * const MNVMDidEjectDiskNotification; @property (assign, nonatomic, getter=isEmulatorRunning) BOOL emulatorRunning; @property (nonatomic, readonly) NSString *documentsPath; @property (nonatomic, readonly) NSArray *diskImageExtensions; +@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed; + (instancetype)sharedInstance; - (void)showAlertWithTitle:(NSString *)title message:(NSString *)message; diff --git a/Mini vMac/AppDelegate.m b/Mini vMac/AppDelegate.m index 55a6686..1d64d53 100644 --- a/Mini vMac/AppDelegate.m +++ b/Mini vMac/AppDelegate.m @@ -199,6 +199,16 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk"; #pragma mark - Files +- (BOOL)isSandboxed { + static dispatch_once_t onceToken; + static BOOL sandboxed; + dispatch_once(&onceToken, ^{ + NSString *bundlePath = [[NSBundle mainBundle] bundlePath]; + sandboxed = ![bundlePath hasPrefix:@"/Applications/"]; + }); + return sandboxed; +} + - (NSArray *)diskImageExtensions { return @[@"dsk", @"img", @"dc42", @"diskcopy42"]; } @@ -208,6 +218,10 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk"; static NSString *documentsPath; dispatch_once(&onceToken, ^{ documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject.stringByStandardizingPath; + if (!self.sandboxed) { + documentsPath = [documentsPath stringByAppendingPathComponent:@"Mini vMac"].stringByStandardizingPath; + } + [[NSFileManager defaultManager] createDirectoryAtPath:documentsPath withIntermediateDirectories:YES attributes:nil error:NULL]; [[NSFileManager defaultManager] createDirectoryAtPath:documentsPath withIntermediateDirectories:YES attributes:nil error:NULL]; }); return documentsPath;