mirror of
https://github.com/yuzu-emu/breakpad
synced 2024-11-24 06:48:14 +00:00
createDirectoryAtPath:attributes: is deprecated, use the suggested (10.5+)
replacement. Patch by Nico Weber <thakis@chromium.org> Review URL: https://breakpad.appspot.com/349001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@915 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
a4c66ebff5
commit
8e3dcd5a02
1 changed files with 4 additions and 45 deletions
|
@ -55,55 +55,14 @@ namespace google_breakpad {
|
||||||
BOOL EnsureDirectoryPathExists(NSString *dirPath) {
|
BOOL EnsureDirectoryPathExists(NSString *dirPath) {
|
||||||
NSFileManager *mgr = [NSFileManager defaultManager];
|
NSFileManager *mgr = [NSFileManager defaultManager];
|
||||||
|
|
||||||
// If we got a relative path, prepend the current directory
|
|
||||||
if (![dirPath isAbsolutePath])
|
|
||||||
dirPath =
|
|
||||||
[[mgr currentDirectoryPath] stringByAppendingPathComponent:dirPath];
|
|
||||||
|
|
||||||
NSString *path = dirPath;
|
|
||||||
|
|
||||||
// Ensure that no file exists within the path which would block creation
|
|
||||||
while (1) {
|
|
||||||
BOOL isDir;
|
|
||||||
if ([mgr fileExistsAtPath:path isDirectory:&isDir]) {
|
|
||||||
if (isDir)
|
|
||||||
break;
|
|
||||||
|
|
||||||
return NO;
|
|
||||||
}
|
|
||||||
|
|
||||||
path = [path stringByDeletingLastPathComponent];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Path now contains the first valid directory (or is empty)
|
|
||||||
if (![path length])
|
|
||||||
return NO;
|
|
||||||
|
|
||||||
NSString *common =
|
|
||||||
[dirPath commonPrefixWithString:path options:NSLiteralSearch];
|
|
||||||
|
|
||||||
// If everything is good
|
|
||||||
if ([common isEqualToString:dirPath])
|
|
||||||
return YES;
|
|
||||||
|
|
||||||
// Break up the difference into components
|
|
||||||
NSString *diff = [dirPath substringFromIndex:[common length] + 1];
|
|
||||||
NSArray *components = [diff pathComponents];
|
|
||||||
NSUInteger count = [components count];
|
|
||||||
|
|
||||||
// Rebuild the path one component at a time
|
|
||||||
NSDictionary *attrs =
|
NSDictionary *attrs =
|
||||||
[NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedLong:0750]
|
[NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedLong:0750]
|
||||||
forKey:NSFilePosixPermissions];
|
forKey:NSFilePosixPermissions];
|
||||||
path = common;
|
|
||||||
for (NSUInteger i = 0; i < count; ++i) {
|
|
||||||
path = [path stringByAppendingPathComponent:[components objectAtIndex:i]];
|
|
||||||
|
|
||||||
if (![mgr createDirectoryAtPath:path attributes:attrs])
|
return [mgr createDirectoryAtPath:dirPath
|
||||||
return NO;
|
withIntermediateDirectories:YES
|
||||||
}
|
attributes:attrs
|
||||||
|
error:nil];
|
||||||
return YES;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
Loading…
Reference in a new issue