Merge branch 'mkirk/missing-messages'

pull/1/head
Michael Kirk 7 years ago
commit 1c69cd3dc5

@ -9,6 +9,7 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)init NS_UNAVAILABLE;
+ (BOOL)protectFileOrFolderAtPath:(NSString *)path;
+ (BOOL)protectRecursiveContentsAtPath:(NSString *)path;
+ (NSString *)appDocumentDirectoryPath;
@ -36,6 +37,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (nullable NSString *)writeDataToTemporaryFile:(NSData *)data fileExtension:(NSString *_Nullable)fileExtension;
+ (nullable NSNumber *)fileSizeOfPath:(NSString *)filePath;
+ (void)logAttributesOfItemAtPathRecursively:(NSString *)path;
@end

@ -9,8 +9,34 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSFileSystem
+ (BOOL)protectRecursiveContentsAtPath:(NSString *)path
{
BOOL isDirectory;
if (![NSFileManager.defaultManager fileExistsAtPath:path isDirectory:&isDirectory]) {
return NO;
}
if (!isDirectory) {
return [self protectFileOrFolderAtPath:path];
}
NSString *dirPath = path;
BOOL success = YES;
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:dirPath];
for (NSString *relativePath in directoryEnumerator) {
NSString *filePath = [dirPath stringByAppendingPathComponent:relativePath];
DDLogDebug(@"%@ path: %@ had attributes: %@", self.logTag, filePath, directoryEnumerator.fileAttributes);
success = success && [self protectFileOrFolderAtPath:filePath];
}
return success;
}
+ (BOOL)protectFileOrFolderAtPath:(NSString *)path
{
DDLogVerbose(@"%@ protecting file at path: %@", self.logTag, path);
if (![NSFileManager.defaultManager fileExistsAtPath:path]) {
return NO;
}
@ -32,6 +58,27 @@ NS_ASSUME_NONNULL_BEGIN
return YES;
}
+ (void)logAttributesOfItemAtPathRecursively:(NSString *)path
{
BOOL isDirectory;
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory];
OWSAssert(exists);
if (isDirectory) {
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:(NSString *)path];
for (NSString *path in directoryEnumerator) {
DDLogDebug(@"%@ path: %@ has attributes: %@", self.logTag, path, directoryEnumerator.fileAttributes);
}
} else {
NSError *error;
NSDictionary<NSFileAttributeKey, id> *_Nullable attributes =
[[NSFileManager defaultManager] attributesOfItemAtPath:path error:error];
OWSAssert(!error);
DDLogDebug(@"%@ path: %@ has attributes: %@", self.logTag, path, attributes);
}
}
+ (NSString *)appDocumentDirectoryPath
{
NSFileManager *fileManager = [NSFileManager defaultManager];
@ -93,6 +140,9 @@ NS_ASSUME_NONNULL_BEGIN
oldFilePath,
newFilePath,
fabs([startDate timeIntervalSinceNow]));
// Ensure all files moved have the proper data protection class.
[self protectRecursiveContentsAtPath:newFilePath];
}
+ (BOOL)ensureDirectoryExists:(NSString *)dirPath

Loading…
Cancel
Save